2011/10/02

ディスクイメージを再構成をしてスパースファイルを小さくする

一時的に作成されたファイルにより大きくなってしまったスパースファイルを小さくする為に、イメージの再構成をします。

例によって、これは未来の私宛のメモです。
ホスト名やディレクトリ名などは架空のものであり現実とは関係ありません

環境
ワーク領域に SDHCカードを/dataにマウントして使用する。
元のファイルはXen guestマシン(Linux)用のイメージファイルとする。
イメージファイルはホストマシンの/data_local 配下にある。

OLD image: /data_local/xen/domains/alpha/disk.img

OLD imageで動いていた仮想マシンをshutdown.

ホストマシンで SDHCをマウント
# mount /data

念のためバックアップ
# cp --sparse=auto /data_local/xen/domains/alpha/disk.img /data/old_disk.img.BAK
# cksum /data_local/xen/domains/alpha/disk.img /data/old_disk.img.BAK

古いイメージファイルを削除
# rm /data_local/xen/domains/alpha/disk.img

NEW image用 sparse file作成
# dd if=/dev/zero of=/data_local/xen/domains/alpha/disk.img bs=1024k seek=2048 count=0
# du /data_local/xen/domains/alpha/disk.img
0 /data_local/xen/domains/alpha/disk.img

ファイルシステム作成
# mkfs -t ext3 /data_local/xen/domains/alpha/disk.img

新旧imageをマウント
# mkdir -p /mnt/old /mnt/new
# mount -o loop /data/old_disk.img.BAK /mnt/old
# mount -o loop /data_local/xen/domains/alpha/disk.img /mnt/new
# df

コピー
# rsync -Saxv /mnt/old/ /mnt/new

アンマウント
# umount /mnt/old /mnt/new
# ls -l /data/old_disk.img.BAK /data_local/xen/domains/alpha/disk.img
# du -m /data/old_disk.img.BAK /data_local/xen/domains/alpha/disk.img
# umount /data
# df

alpha再起動
# xm create alpha.cfg
# xm list