ボリュームグループの1つのPEサイズを増やしようとしています。
誤って4Mに設定して、32Mであるはずのときに起動しました。
サイズを変えようとすると
vgchange -s 32M the_vol
New extent size is not a perfect fit
vgdisplayは言う:
vgdisplay
--- Volume group ---
VG Name the_vol
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 173
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 43
Open LV 41
Max PV 0
Cur PV 1
Act PV 1
VG Size 864.25 GiB
PE Size 4.00 MiB
Total PE 221247
Alloc PE / Size 103680 / 405.00 GiB
Free PE / Size 117567 / 459.25 GiB
VG UUID uh25Y8-TOWR-pqBj-NyPV-ca6t-ec1k-jlqm4g
この変更を再作成/データを削除せずに32に変更するためにできることはありますか?
または、32に近づけます。
ありがとう
変更を完了するために既存の物理エクステントを移動する必要がない場合にのみ、ボリュームグループの物理エクステントサイズを変更できます。そうしないと、上記で投稿したエラーが表示されます。
他の唯一のオプションは、正しいサイズでボリュームグループを再作成することです。
マニュアルページから引用するには:
この値を設定すると、論理ボリューム上のデータのバックアップと復元を伴うボリュームグループを再作成せずに値を変更することは困難です。ただし、新しい値を適用するためにエクステントを移動する必要がない場合は、vgchange-sを使用して変更できます。
pvmove
を使用して、物理ボリュームに割り当てられた物理エクステント内を移動できます。論理ボリュームはエクステント境界で開始および終了する必要があります(lvresize
で成長します)。基になる物理ボリュームサイズも、おそらく新しいエクステントサイズの正確な倍数である必要があります(pvresize
で修正してください)。
関連する質問に対する スーパーユーザーの回答 で述べたように、次のようなものを使用できます。
pvmove --alloc anywhere /dev/sdc1:103680-221247 /dev/sdc1:0-103679
エクステントを移動するには103680-221247
から0-103679
物理ボリューム上/dev/sdc1
。セグメントを段階的に移動する必要がある場合があります。使用する pvdisplay --maps /dev/sdc1
物理ボリュームに割り当てられているエクステントを表示します/dev/sdc1
。
エクステントサイズはI/Oパフォーマンス(LVM2上)に影響を与えないことに注意してください。LVMツール自体のパフォーマンスとLVMコンポーネントの最大サイズのみが影響を受けるはずです。
それは可能ですが、難しいです。オプションがある場合は、VGを再作成する方がはるかに優れたオプションです。
しかし、それは私にとってオプションではなかったので、PEサイズを4MBから32MBに変更した方法は次のとおりです。
pvresize /dev/sdb --setphysicalvolumesize 3778436m
lvresize
を使用して、すべてのLVのサイズを目的のPEサイズで割り切れるサイズに変更します。例:lvresize /dev/libvirtstorage/debian-8.7.1-AMD64-netinst.iso --size 256
vgchange -s 32m the_vol
このプロセス全体はダウンタイムなしで実行でき、VG全体がこの間も動作し続けます。
もう1つ注意すべき点:32m
と32M
の違いに注意してください。LVMコマンドは、小文字のm
をMiBとして、大文字のMをMBとして解釈します。