
私は、lvmgroup を縮小して Centos 6.10 イメージのサイズを縮小するプロセスを実行してきました。現在、次のコマンドを実行できるようになっています。
pvresize -tv --setphysicalvolumesize 1600G /dev/md125p2
そして、次のエラーメッセージが表示されます。
/dev/md125p2: cannot resize to 409599 extents as later ones are allocated.
エラーを解消するために pvmove コマンドを構築する方法を理解しようとしていますが、その概念がよくわかりません。
このコマンドの出力は次のとおりです pvs -v --segments /dev/md125p
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 0 384000 lv_mysql 0 linear /dev/md125p2:0-383999
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 384000 81947 0 free
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 465947 12800 lv_root 0 linear /dev/md125p2:465947-478746
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 478747 1998 lv_swap 0 linear /dev/md125p2:478747-480744
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 480745 7500 lv_home 0 linear /dev/md125p2:480745-488244
移動コマンドは次のようになるはずです:
pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end
yyyy-end の部分をどのように計算すればよいのかよくわかりません。384000 から始まる 81947 (ブロック?) を移動するという意味だとは思いますが、「yyyy」と「end」とは何でしょうか?
答え1
つまり、すべてがオンになっている/dev/md125p2
ので、この PV のサイズを縮小したいということです。
からの出力を見ると、 の後ろと の前にpvs -v --segments /dev/md125p
非常に大きな空き領域 ( SSize==81947
)があることがわかります。これは、 を収容するのに十分な大きさです。lv_mysql
lv_root
lv_root
全て物理レイアウトでその後に続く LV です。
したがって、私が提案する最初の数字のセットは次のとおりです。
***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499
つまり、 全体を のlv_home
直後から始まる空き領域に移動しますlv_mysql
。
次に、再度実行してpvs -v --segments /dev/md125p
修正された数値を確認し、残っている空きスペースに次のブロックを移動します。
これにより、PV が効果的にデフラグされます。
pvmove
さて、方法私が使用しているものよりも多くのオプションがあります (範囲ではなく PV を指定するなど) が、ブロックを明示的に指定するだけで十分です。そのため、すべてのソースとターゲットは または の形式になってい/dev/<dev>:<Start>-<End>
ます/dev/<dev>:<Start>+<SSize-1>
。
問題は主に「ソース」仕様の範囲が欠落していることにあると思われます。
いくつか例を見ましたが-end
、それが何かは分かりません想定機能するが、それは「何?"です。そのため、私はそれを避け、明示的なブロック番号を使用します。構文+
がプラスSSize より 1 小さくする必要があります。
余分な
-name lv_home /dev/md125p2
OK、ソース側では、の短縮形として実行できるようです/dev/md125p2:480745-488244
。ただし、複数のエクステントに断片化されている場合は、より複雑になることに注意してくださいlh_home
(「すべてのフラグメント」を意味するのでしょうか?) - 私はまだ数値アプローチを好むと思います。質問の例に注意してくださいしなかったpvmove
LV 名が含まれているので、あなたが提供したものから何が理解されたかはわかりません...
答え2
PV を縮小するには、希望のサイズより前の空き領域にエクステントを移動する必要があります。この場合、エクステントは 409599 未満です。
まず、バックアップの復元をテストして、必要に応じてデータを回復できることを確認します。
lvremove
必要のないボリューム。
pvmove
LV 名でエクステントを指定し、+ 表記を使用してオフセットで宛先を指定できます。宛先を指定する場合、VG ではなく PV である必要があります。
1 つの LV を空き領域の最初のエクステントに移動します。オフセットは、移動するセグメントのサイズです。
pvmove --alloc anywhere -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998
再度、新しいセグメント レイアウトを取得します。異なる LV と新しい空き領域の開始範囲を使用して、pvs -v --segments
を繰り返します。pvmove
個人的には、データ VG をオペレーティング システム VG とは別にすることを好みます。ただし、これはあなたのストレージなので、好きなようにレイアウトしてください。