□VPS(KVM)のディスク容量縮小方法
KVMのVMのディスクイメージ、とくにLVMを「拡張」する方法はよくネット上にあるがこれを参考に「縮小」する方法でもいいのだけど、実際「時間がかかる」ので、別の方法でばっさりやったほうがいい。
何はともあれ、VMのディスクイメージをいじるならまずはコピー。
いくらぶっ飛ばしてもバックアップがあれば何とかなるしね。
で、サイズ変更には「resize2fs」や「pvresize」とかが使われるかとはおもうけど、実際これをやってしまうとえらい時間がかかる。
なので、拡張拡大するならまだしも、縮小削減するなら
・ゲストOSのディスクイメージを作業用イメージにコピー
(以下、作業用イメージで作業…なのでゲストOSは再起動してもいい)
・ホストOSで作業イメージの該当パーティションをfsckしてmount
・中のデータをごっそりホストOSのどこかにコピー
・作業イメージをunmount
・作業イメージから該当パーティションを削除(lv)
・作業イメージに該当パーティションを再構築(lv)
・でもって作り直してLVMパーティションのサイズを変更(pv)
・改めて作業イメージをfsckしてmount
・コピーしたデータを作業イメージにコピー(戻す)
(ここまでで新しいゲストOSのイメージの「素」ができた)
・ゲストOSを止めて、fsckしてmount
・コピー後に変更があったデータのみrsyncで再コピー
・ゲストOSをunmountして、新しい素イメージをfsckしてmount
・コピー後に変更があったデータのみrsyncで再コピー
この手順の方が、サイズを大幅に縮小する場合にかかる時間が短い…と思う。
というのも、実質60GBしか使っていない500GBを100GBに縮小するのに、大きくかかった時間は、
・作業イメージの生成(コピー) … 166分
・データを丸ごとコピーに68分(VMを動かしつつ)
・resize2fsに四時間くらい!!!
・データを丸ごと戻した場合 … 92分
・そのほか、e2fsckに10分くらいかかるかも。
※参考:E5450x2/16GB/WD_RED_2TBx2 RAID1のケチケチ環境にて。
なので、作業イメージの生成はしょうがないとしても、あとは事前に「素」となるディスクイメージを用意して、rsyncでちゃちゃっと差分を反映させる方がいい。
なんにしても、時間がかかる作業なので、ディスクIOが速い環境をそもそも構築するのがオススメ。:-)