我遇到 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。奇偶校驗減去 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
正如我在問題中所說,我以前做過這件事,並記錄了兩年前我為完成它所做的事情。由於某種原因,相同的 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。 :-))