仮想マシンのHDDイメージを縮小

仮想マシンのHDDイメージを大きく取りすぎると、スパースファイルにすれば実際には容量を使わないものの、ファイルのコピーなど何かと不便なことがあります。

使用しないぶんを縮小しHDDを小さくするには、下記の手順をふみます

  1. あらかじめ、ゲストOSでHDDの最後に空き領域を作っておく。たとえば100GBのHDDを50GBに縮小したい場合、念のため先頭から45GB程度のパーティションに縮小し、後ろの残りを空き領域にしておく。

    lvmの論理ボリュームを縮小する方法はこちら

  2. 下記の例のように、ddで先頭から50GBぶんの領域を書き出す
    dd if=100GMHDD.img of=50GHDD.img bs=1M count=50000
  3. このままでも50GBHDD.imgは使用できますが、qemu-imgを使ってスパースファイルに変換するとさらに節約になります
    qemu-img convert -f raw 50GHDD.img -O raw 50GHDDsparse.img
  4. 縮小後のHDDで仮想マシンを起動し、若干残っているHDDの空き容量まで45GBのパーティションを拡張します(残りが気にならなければやらなくて良い)

参考: Geeklog - Windowsゲストのディスクサイズを縮小してみた