LVMでのシンプロビジョニング論理ボリュームの作成 2
前回の続き。
実際にシンプロビジョニング論理ボリュームを使ってみる。
まずは、ファイルシステムを作成してマウントする。
# mkfs.ext4 /dev/vg01/thinvolume01 # mkfs.ext4 /dev/vg01/thinvolume02 # mkdir /mnt/thinvolume01 /mnt/thinvolume02 # mount /dev/vg01/thinvolume01 /mnt/thinvolume01 # mount /dev/vg01/thinvolume02 /mnt/thinvolume02
この段階で容量確認。
# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root debian-vg -wi-ao---- <8.36g swap_1 debian-vg -wi-ao---- 976.00m thinpool vg01 twi-aotz-- 1.00g 9.56 12.30 thinvolume01 vg01 Vwi-aotz-- 1.00g thinpool 4.78 thinvolume02 vg01 Vwi-aotz-- 1.00g thinpool 4.78
次に、ddでthinvolume01
に400 MiBのファイルを作成してみる。
# dd if=/dev/zero of=/mnt/thinvolume01/test bs=1M count=400 400+0 records in 400+0 records out 419430400 bytes (419 MB, 400 MiB) copied, 0.204323 s, 2.1 GB/s # sync # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root debian-vg -wi-ao---- <8.36g swap_1 debian-vg -wi-ao---- 976.00m thinpool vg01 twi-aotz-- 1.00g 48.62 16.89 thinvolume01 vg01 Vwi-aotz-- 1.00g thinpool 43.84 thinvolume02 vg01 Vwi-aotz-- 1.00g thinpool 4.78
thinvolume01
で43.84%が使われており、thinpool
全体で48.62%が使われていることが分かる。
次に、同じくthinvolume02
にも400 MiBのファイルを作成してみる。
# dd if=/dev/zero of=/mnt/thinvolume02/test bs=1M count=400 400+0 records in 400+0 records out 419430400 bytes (419 MB, 400 MiB) copied, 0.225232 s, 1.9 GB/s # sync # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root debian-vg -wi-ao---- <8.36g swap_1 debian-vg -wi-ao---- 976.00m thinpool vg01 twi-aotz-- 1.00g 87.68 21.78 thinvolume01 vg01 Vwi-aotz-- 1.00g thinpool 43.84 thinvolume02 vg01 Vwi-aotz-- 1.00g thinpool 43.84
thinpool
全体の使用率が87.68%になった。
ここで、さらにthinvolume02
に200 MiBのファイルを作成して、thinpool
の上限を超えさせてみる。
# dd if=/dev/zero of=/mnt/thinvolume02/over bs=1M count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB, 200 MiB) copied, 0.0784244 s, 2.7 GB/s # sync
sync
で時間が異常に掛かるが一見何事もなく戻ってくる。
しかし、/var/log/syslog
には
debian lvm[7682]: WARNING: Thin pool vg01-thinpool-tpool data is now 100.00% full. debian kernel: [14173.012984] device-mapper: thin: 253:4: switch ing pool to out-of-data-space (error IO) mode
と出たあと、
debian kernel: [14173.013028] EXT4-fs warning (device dm-7): ext 4_end_bio:345: I/O error 3 writing to inode 13 starting block 182256)
や
debian kernel: [14173.014082] Buffer I/O error on dev dm-7, logi cal block 32897, lost async page write debian kernel: [14173.014525] EXT4-fs error (device dm-7): ext4_check_bdev_write_error:215: comm kworker/u2:1: Error while async write back metadata debian kernel: [14173.031246] buffer_io_error: 20470 callbacks suppressed
といったエラーが表示されている。
論理ボリュームの状態を確認してみる。
# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root debian-vg -wi-ao---- <8.36g swap_1 debian-vg -wi-ao---- 976.00m thinpool vg01 twi-aotzD- 1.00g 100.00 23.63 thinvolume01 vg01 Vwi-aotz-- 1.00g thinpool 43.84 thinvolume02 vg01 Vwi-aotz-- 1.00g thinpool 56.16
ファイルシステムとしては空き容量があると思っているのに、デバイスには書き込めないので、こういう挙動になるようだ。
オーバーコミットは便利だが、シンプールの残容量には注意が必要ということが分かった!