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는 동일한 드라이브에서 생성되므로 동일한 크기여야 하며, 제가 기억하는 한 동일한 create 명령을 사용하려고 시도했습니다.
내가 뭘 잘못하고 있는지에 대한 제안이 있는 사람이 있나요?
답변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이 아닌 것 같습니다. :-))