2013年4月20日土曜日

KVM イメージのShrink

しばらく前にへまをやらかし、仮想マシン上のディスクをパンクさせてしまった。
ゴミは掃除したのだけど、qcow2 を使っているので仮想ディスクの領域はタダでは減らない。

色々調べたら qemu-img の convert コマンドで実現したい事が出来るらしいので試してみた。

仮想マシンの停止

まずは仮想マシンを停止します。

guest # shutdown -h now

バックアップ

その次は仮想マシンのディスクのバックアップです。

host # time cp -p 仮想マシン.img /media/disk/仮想マシン.img.bak
real    50m49.694s
user    0m1.336s
sys     3m45.093s 
host # echo $?

  ※USBにバックアップしましたが、100G超なのでそれなりに時間がかかりました。




Shrinkの実行

いよいよサイズ変更です。
host # time qemu-img convert -p -O qcow2 仮想マシン.img 仮想マシン.img.new
real    29m14.708s
user    0m12.519s
sys     2m28.749s

 ※バックアップ程時間はかかりませんでした。

バックアップと動作確認

いきなりイメージを差し替えるのではなく、一旦オリジナルをバックアップの上リネームして起動確認

host # mv 仮想マシン.img 仮想マシン.img.org
host # mv 仮想マシン.img.new 仮想マシン.img
host # virsh create guest

どれくらいサイズが小さくなったか確認します。

host # ls -l 仮想マシン.*
-rw-------  1 root root 102G  4月 20 07:33 2013 仮想マシン.img
-rw-r--r--  1 root root 100G  4月 20 08:55 2013 仮想マシン.img.new

あれ?2Mしか減っていない。
※そういえば、既にShrink実施済みでした・・・

バックアップの削除

仮想マシンに接続し、動作OKならバックアップ削除します。

guest # shutdown -h now 
host # rm -i 仮想マシン.img.org

以上、簡単ですが、、、
ここでへまると仮想マシンが二度と起動しなくなるので慎重にやりましょう・・・