作業ログ源泉垂れ流し

しがないIT技術者の作業ログを垂れ流す

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                                  

ファイルシステムとしては空き容量があると思っているのに、デバイスには書き込めないので、こういう挙動になるようだ。

オーバーコミットは便利だが、シンプールの残容量には注意が必要ということが分かった!