3つのPVを持つraid5ボリューム、単一のLVを持つLVM VGがあります。ボリュームグループに追加PVを追加し、raid5 LVを拡張して使用したいと思います。
ここでは、練習用のテストディスクとして100MBのファイルを4つ使用します。
$ sudo vgs
WARNING: Not using lvmetad because a repair command was run.
VG #PV #LV #SN Attr VSize VFree
testvg 4 1 0 wz--n- 384.00m 96.00m
$ sudo pvs
WARNING: Not using lvmetad because a repair command was run.
PV VG Fmt Attr PSize PFree
/dev/loop0p1 testvg lvm2 a-- 96.00m 0
/dev/loop1p1 testvg lvm2 a-- 96.00m 0
/dev/loop2p1 testvg lvm2 a-- 96.00m 0
/dev/loop3p1 testvg lvm2 a-- 96.00m 96.00m
$ sudo lvs
WARNING: Not using lvmetad because a repair command was run.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testraid testvg rwi-a-r--- 184.00m 100.00
追加のディスクをインポートするためにストライプ数を変更しようとすると、コマンドはエラーを返しますが、新しいPVには子LVが表示され、LVには空き容量が増えます。ただし、下位LVは非同期属性を示し、LVでのリカバリの実行は失敗します。
$ sudo lvconvert --stripes 3 /dev/testvg/testraid
Using default stripesize 64.00 KiB.
WARNING: Adding stripes to active logical volume testvg/testraid will grow it from 46 to 69 extents!
Run "lvresize -l46 testvg/testraid" to shrink it or use the additional capacity.
Are you sure you want to add 1 images to raid5 LV testvg/testraid? [y/n]: y
Insufficient free space: 4 extents needed, but only 0 available
Failed to allocate out-of-place reshape space for testvg/testraid.
Insufficient free space: 4 extents needed, but only 0 available
Failed to allocate out-of-place reshape space for testvg/testraid.
Reshape request failed on LV testvg/testraid.
$ sudo pvs -a -o +pv_pe_count,pv_pe_alloc_count
PV VG Fmt Attr PSize PFree PE Alloc
/dev/loop0p1 testvg lvm2 a-- 96.00m 0 24 24
/dev/loop1p1 testvg lvm2 a-- 96.00m 0 24 24
/dev/loop2p1 testvg lvm2 a-- 96.00m 0 24 24
/dev/loop3p1 testvg lvm2 a-- 96.00m 0 24 24
$ sudo lvs -a
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
testraid testvg rwi-a-r--- 276.00m 100.00
[testraid_rimage_0] testvg iwi-aor--- 92.00m
[testraid_rimage_1] testvg iwi-aor--- 92.00m
[testraid_rimage_2] testvg iwi-aor--- 92.00m
[testraid_rimage_3] testvg Iwi-aor--- 92.00m
[testraid_rmeta_0] testvg ewi-aor--- 4.00m
[testraid_rmeta_1] testvg ewi-aor--- 4.00m
[testraid_rmeta_2] testvg ewi-aor--- 4.00m
[testraid_rmeta_3] testvg ewi-aor--- 4.00m
$ sudo lvconvert --repair /dev/testvg/testraid
WARNING: Not using lvmetad because of repair.
Active raid has a wrong number of raid images!
Metadata says 4, kernel says 3.
Attempt to replace failed RAID images (requires full device resync)? [y/n]: y
WARNING: Disabling lvmetad cache for repair command.
Unable to repair testvg/testraid. Source devices failed before the RAID could synchronize.
You should choose one of the following:
1) deactivate testvg/testraid, revive failed device, re-activate LV, and proceed.
2) remove the LV (all data is lost).
3) Seek expert advice to attempt to salvage any data from remaining devices.
Failed to replace faulty devices in testvg/testraid.
同じディスクを追加してLVを拡張するには、どのような手順を実行する必要がありますか?
答え1
この問題に取り組んで、私がメモした内容は次のとおりです。https://wiki.archlinux.org/index.php/User:Ctag/Notes#Growing_LVM_Raid5
結局、新しいディスクを追加してRaid6に移行しました。
私の記憶が正しい場合、問題は、新しいディスクが他のディスクよりも数セクタ小さく、新しいディスクを追加すると、必要なLVM / raidメタデータのオーバーヘッドがわずかに増加することです。したがって、同じディスクも機能しません。 )。両方の問題に対する解決策は、いくつかのセクタですべてのディスクを完全に活用して、メタデータと将来のディスクの違いのためのスペースを残すことです。
# pvs -a -o +pv_pe_count,pv_pe_alloc_count
PV VG Fmt Attr PSize PFree PE Alloc
/dev/mapper/cryptslow1 cryptvg lvm2 a-- <1.82t 20.00m 476931 476931
/dev/mapper/cryptslow2 cryptvg lvm2 a-- <1.82t 20.00m 476931 476931
/dev/mapper/cryptslow3 cryptvg lvm2 a-- <2.73t <931.52g 715395 476931
/dev/mapper/cryptslow4 cryptvg lvm2 a-- <1.82t <1.82t 476927 0
上記の新しいディスクに「476931」の代わりに「476927」の範囲しかない方法を確認してください。それが問題だ。この新しいディスクを使用できるようにするには、LVMがRAID 5割り当てに少ない数(または少ない数)の拡張領域しか割り当てないようにする必要があります。
# lvresize -r -l -10 /dev/cryptvg/raid
fsck from util-linux 2.34
/dev/mapper/cryptvg-raid: clean, 913995/240320512 files, 686703011/961280000 blocks
resize2fs 1.45.3 (14-Jul-2019)
Resizing the filesystem on /dev/mapper/cryptvg-raid to 976742400 (4k) blocks.
The filesystem on /dev/mapper/cryptvg-raid is now 976742400 (4k) blocks long.
Size of logical volume cryptvg/raid changed from <3.64 TiB (953860 extents) to <3.64 TiB (953850 extents).
Logical volume cryptvg/raid successfully resized.
# pvs -a -o +pv_pe_count,pv_pe_alloc_count
PV VG Fmt Attr PSize PFree PE Alloc
/dev/mapper/cryptslow1 cryptvg lvm2 a-- <1.82t 20.00m 476931 476926
/dev/mapper/cryptslow2 cryptvg lvm2 a-- <1.82t 20.00m 476931 476926
/dev/mapper/cryptslow3 cryptvg lvm2 a-- <2.73t <931.52g 715395 476926
/dev/mapper/cryptslow4 cryptvg lvm2 a-- <1.82t <1.82t 476927 0
今すぐ新しいディスクを追加すると、今回は正常に動作します。