ディスクフルになった場合の挙動確認
初期の環境。
OLP02:~# mount /dev/sda6 /mnt/nilfs/ -t nilfs2 OLP02:~# cd /mnt/nilfs OLP02:/mnt/nilfs# df /mnt/nilfs Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 10002428 1064956 8429568 12% /mnt/nilfs OLP02:/mnt/nilfs# ls -l 合計 401596 drwxr-xr-x 97 root root 8192 2008-03-06 19:11 clients -rw-r--r-- 1 root root 307200000 2008-03-07 14:36 dd.text -rw-r--r-- 1 root root 102400000 2008-03-07 13:13 dd.text2 # cp dd.text dd.text3 OLP02:/mnt/nilfs# df /mnt/nilfs Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 10002428 1359868 8134656 15% /mnt/nilfs # cat dd.text dd.text dd.text dd.text dd.text dd.text dd.text dd.text dd.text dd.text >> dd.text4 # cp dd.text4 dd.text5 OLP02:/mnt/nilfs# df /mnt/nilfs Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 10002428 7462908 2031616 79% /mnt/nilfs
新しいファイルが増えていっぱいになる場合。
OLP02:/mnt/nilfs# cp dd.text4 dd.text6 cp: writing `dd.text6': デバイスに空き領域がありません OLP02:/mnt/nilfs# df /mnt/nilfs Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 10002428 9486332 8192 100% /mnt/nilfs # dmesg segctord starting. Construction interval = 5 seconds, CP frequency < 30 seconds NILFS warning (device sda6): nilfs_sync_super: barrier-based sync failed. disabling barriers # cat /var/log/messages Mar 11 15:21:27 OLP02 kernel: segctord starting. Construction interval = 5 seconds, CP frequency < 30 seconds Mar 11 15:21:27 OLP02 kernel: NILFS warning (device sda6): nilfs_sync_super: barrier-based sync failed. disabling barriers
マウントは維持されている。
これ以上はサイズゼロでも書けない。
OLP02:/mnt/nilfs# touch test touch: cannot touch `test': デバイスに空き領域がありません
ファイルを消してみる。
OLP02:/mnt/nilfs# rm dd.text6 OLP02:/mnt/nilfs# df /mnt/nilfs Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 10002428 9502716 0 100% /mnt/nilfs
消しても減らないので、何もできない。
ガベコレを明示的に指示する方法はないのかな。
設定を変更してマウントし直してみる。
OLP02:/mnt/nilfs# cd / OLP02:/# umount /mnt/nilfs OLP02:/# vi /etc/nilfs_cleanerd.conf protection_period 60 OLP02:~# mount /dev/sda6 /mnt/nilfs/ -t nilfs2 OLP02:/# mkcp -s OLP02:/# umount /mnt/nilfs OLP02:/# mount /dev/sda6 /mnt/nilfs/ -t nilfs2 OLP02:/# df /mnt/nilfs Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 10002428 9396220 98304 99% /mnt/nilfs
ちょっとあいた。
でも、この方法は運用中は使えない。
cleandに何かメッセージ送れるといいのに。
既存のファイルが追記されていっぱいになる場合。
OLP02:/# ls -l /mnt/nilfs 合計 6726424 drwxr-xr-x 97 root root 8192 2008-03-06 19:11 clients -rw-r--r-- 1 root root 307200000 2008-03-07 14:36 dd.text -rw-r--r-- 1 root root 102400000 2008-03-07 13:13 dd.text2 -rw-r--r-- 1 root root 307200000 2008-03-11 15:26 dd.text3 -rw-r--r-- 1 root root 3072000000 2008-03-11 15:33 dd.text4 -rw-r--r-- 1 root root 3072000000 2008-03-11 15:39 dd.text5 OLP02:/# cd /mnt/nilfs OLP02:/mnt/nilfs# cat dd.text4 >> dd.text5 cat: 書き込みエラー: デバイスに空き領域がありません # dmesg segctord starting. Construction interval = 5 seconds, CP frequency < 30 seconds NILFS warning (device sda6): nilfs_sync_super: barrier-based sync failed. disabling barriers # cat /var/log/messages Mar 11 16:10:18 OLP02 kernel: segctord starting. Construction interval = 5 seconds, CP frequency < 30 seconds Mar 11 16:10:18 OLP02 kernel: NILFS warning (device sda6): nilfs_sync_super: barrier-based sync failed. disabling barriers Mar 11 16:10:18 OLP02 kernel:
結果は追記でも新規でも同じだ。