VG의 4개 드라이브 모두에서 공간을 사용하는 LV를 생성할 수 없는 LVM RAID 5 문제가 있습니다. 특히 짜증나는 점은 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은 아닌 것 같습니다. :-))