LVM RAID 5 で期待どおりの論理ボリューム サイズが得られない

LVM RAID 5 で期待どおりの論理ボリューム サイズが得られない

LVM RAID 5 で、VG 内の 4 つのドライブすべてのスペースを使用する LV を作成できないという問題が発生しています。特に困ったのは、2 年前に同じモデルのドライブを使用してまったく同じ VG/LV を作成したのですが、この問題が発生した覚えがないことです。

RAID 5 LV の作成を試みる前に、pvs と vgs の出力は次のとおりです。

pvsの出力:

PV         VG          Fmt  Attr PSize   PFree 
/dev/sda1  vg_sklad02  lvm2 a--    2.73t  2.73t
/dev/sdb1  vg_sklad01  lvm2 a--    2.73t     0 
/dev/sdc1  vg_sklad02  lvm2 a--    2.73t  2.73t
/dev/sdd1  vg_sklad01  lvm2 a--    2.73t     0 
/dev/sde1  vg_sklad01  lvm2 a--    2.73t     0 
/dev/sdf1  vg_sklad02  lvm2 a--    2.73t  2.73t
/dev/sdg1  vg_sklad02  lvm2 a--    2.73t  2.73t
/dev/sdh1  vg_sklad01  lvm2 a--    2.73t     0 
/dev/sdi2  vg_bootdisk lvm2 a--  118.75g 40.00m
/dev/sdj2  vg_bootdisk lvm2 a--  118.75g 40.00m

vgs の出力:

VG          #PV #LV #SN Attr   VSize   VFree 
vg_bootdisk   2   2   0 wz--n- 237.50g 80.00m
vg_sklad01    4   1   0 wz--n-  10.92t     0 
vg_sklad02    4   0   0 wz--n-  10.92t 10.92t

前回、同じシステム上の同じモデルのドライブを使用して LV を作成するために使用したコマンドは次のとおりです。

lvcreate --type raid5 -L 8.18T -n lv_sklad01 vg_sklad01

VG および LV ターゲット名を変更して同じコマンドを発行すると、次の結果が得られます。

lvcreate --type raid5 -L 8.18T -n lv_sklad02 vg_sklad02

Using default stripesize 64.00 KiB.
Rounding up size to full physical extent 8.18 TiB
Insufficient free space: 3216510 extents needed, but only 2861584 available

容量が 2.73T のドライブが 4 つあるので、これは意味がありません。4 * 2.73 = 10.92。パリティ用に 1 を引くと 8.19T になり、これがこのシステムにある元の LV のサイズです。モニターに頭をぶつけています。:?

藁にもすがる思いで、私も試してみました:

[root@sklad ~]# lvcreate --type raid5 -l 100%VG -n lv_sklad02 vg_sklad02
  Using default stripesize 64.00 KiB.
  Logical volume "lv_sklad02" created.

この結果、LV は予想の 2/3 のサイズになります。lvs からの出力:

LV         VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv_root    vg_bootdisk rwi-aor--- 102.70g                                    100.00          
lv_swap    vg_bootdisk rwi-aor---  16.00g                                  100.00          
lv_sklad01 vg_sklad01  rwi-aor---   8.19t                                    100.00          
lv_sklad02 vg_sklad02  rwi-a-r---   5.46t                                    0.18

上記の lvcreate コマンドを発行すると、pvs、vgs、lvs の出力は次のようになります。

[root@sklad ~]# pvs
  PV         VG          Fmt  Attr PSize   PFree 
  /dev/sda1  vg_sklad02  lvm2 a--    2.73t     0 
  /dev/sdb1  vg_sklad01  lvm2 a--    2.73t     0 
  /dev/sdc1  vg_sklad02  lvm2 a--    2.73t     0 
  /dev/sdd1  vg_sklad01  lvm2 a--    2.73t     0 
  /dev/sde1  vg_sklad01  lvm2 a--    2.73t     0 
  /dev/sdf1  vg_sklad02  lvm2 a--    2.73t     0 
  /dev/sdg1  vg_sklad02  lvm2 a--    2.73t  2.73t
  /dev/sdh1  vg_sklad01  lvm2 a--    2.73t     0 
  /dev/sdi2  vg_bootdisk lvm2 a--  118.75g 40.00m
  /dev/sdj2  vg_bootdisk lvm2 a--  118.75g 40.00m

[root@sklad ~]# vgs
  VG          #PV #LV #SN Attr   VSize   VFree 
  vg_bootdisk   2   2   0 wz--n- 237.50g 80.00m
  vg_sklad01    4   1   0 wz--n-  10.92t     0 
  vg_sklad02    4   1   0 wz--n-  10.92t  2.73t

[root@sklad ~]# lvs
  LV         VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root    vg_bootdisk rwi-aor--- 102.70g                                    100.00          
  lv_swap    vg_bootdisk rwi-aor---  16.00g                                    100.00          
  lv_sklad01 vg_sklad01  rwi-aor---   8.19t                                    100.00          
  lv_sklad02 vg_sklad02  rwi-a-r---   5.46t                                    2.31            

何らかの理由で、vg_sklad02 (私が作業している VG) に未割り当て領域があります。-l 100%VG は VG 内の使用可能な領域をすべて使用すべきではないでしょうか?

LV lv_sklad01 と lv_sklad02 は同じドライブから作成されるため、同じサイズになるはずです。私の記憶では、同じ作成コマンドを使用しようとしました。

私が何を間違っているのか、何かアドバイスはありますか?

答え1

質問で述べたように、私は以前にこれを実行したことがあり、2 年前にこれを達成するために行った操作のキャプチャ ログを持っています。何らかの理由で、同一の lvcreate コマンドが機能しませんでした。この LV を作成するには、-i 3 を使用してストライプの数を指定する必要がありました。したがって、機能するコマンドは次のようになります。

lvcreate -i 3 --type raid5 -L 8.18T -n lv_sklad02 vg_sklad02

LVM ツールのアップデートで何か変更があったのでしょうか?

アップデート

確かにLVM2に変更が加えられました。rpm -q --changelog lvm2から

* Fri Jul 29 2016 Peter Rajnoha <[email protected]> - 7:2.02.162-1
<...>
- Add allocation/raid_stripe_all_devices to reinstate previous behaviour.
- Create raid stripes across fixed small numbers of PVs instead of all PVs.
<...>

自分が完全に正気ではなかったとわかってよかったです。:-) RTFM しましたが、正しい FM ではなかったようです。:-))

関連情報