web-dev-qa-db-ja.com

ボリュームグループのPEサイズを変更する方法

ボリュームグループの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に近づけます。

ありがとう

1
awmusic12635

変更を完了するために既存の物理エクステントを移動する必要がない場合にのみ、ボリュームグループの物理エクステントサイズを変更できます。そうしないと、上記で投稿したエラーが表示されます。

他の唯一のオプションは、正しいサイズでボリュームグループを再作成することです。

マニュアルページから引用するには:

この値を設定すると、論理ボリューム上のデータのバックアップと復元を伴うボリュームグループを再作成せずに値を変更することは困難です。ただし、新しい値を適用するためにエクステントを移動する必要がない場合は、vgchange-sを使用して変更できます。

2
Michael Hampton

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コンポーネントの最大サイズのみが影響を受けるはずです。

2
MattBianco

それは可能ですが、難しいです。オプションがある場合は、VGを再作成する方がはるかに優れたオプションです。
しかし、それは私にとってオプションではなかったので、PEサイズを4MBから32MBに変更した方法は次のとおりです。

  • まず、PVをターゲットPEサイズで割り切れるサイズに縮小します。
    pvresize /dev/sdb --setphysicalvolumesize 3778436m
  • 次に、lvresizeを使用して、すべてのLVのサイズを目的のPEサイズで割り切れるサイズに変更します。例:lvresize /dev/libvirtstorage/debian-8.7.1-AMD64-netinst.iso --size 256
  • 次は、各画像を構成する個々のセグメントが新しいPEに位置合わせされていることを確認します。基本的にVGを「デフラグ」する必要があるため、これは問題があります。
    これには " lvm2defrag "ツールを使用しました(マシン自体でこれを実行する必要はありません。PHPインストール済み、必要なコマンドを生成するだけです)
  • この後、合計ボリュームサイズ、LVフラグメントサイズ、および空き領域がすべてターゲットPEサイズで割り切れる場合は、PEサイズを変更できるはずです。
    vgchange -s 32m the_vol

このプロセス全体はダウンタイムなしで実行でき、VG全体がこの間も動作し続けます。
もう1つ注意すべき点:32m32Mの違いに注意してください。LVMコマンドは、小文字のmをMiBとして、大文字のMをMBとして解釈します。

0
SharkWipf