LVM RAID 5 未產生預期的邏輯卷大小
我遇到了 LVM RAID 5 的問題,它不允許我創建一個使用 VG 中所有四個驅動器上的空間的 LV。特別令人討厭的是,兩年前我在同一個系統上使用相同型號的驅動器創建了相同的 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 * 2.73 = 10.92。為奇偶校驗減去一個得到 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 應該具有相同的大小,因為它們是從相同的驅動器創建的,據我記得我嘗試使用相同的創建命令。
有人對我做錯了什麼有任何建議嗎?
正如我在我的問題中所說,我以前做過這個,並且有一個兩年前我為完成它所做的事情的擷取日誌。由於某種原因,相同的 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 <prajnoha@redhat.com> - 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。:-))