VirtualBoxのCentOS 7仮想マシンを使って遊んでいたのですが、他人に渡す必要がありエクスポートしたところ、DVDに入らないサイズになってしまいました。
2枚以上のDVDに分けて渡すという手もありますが、ぜひ1枚で渡したくて方法を調べました。結果、5.7GB → 2.2GBまで縮小することができました。
実行前ゲストOS(ご参考)
/etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
以前はzerofreeコマンドを使っていましたが、参考サイトによると、zerofreeはxfsに対応していないらしく、ddコマンドを使いました。
ファイルシス 1M-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/centos-root 51175 4552 46624 9% /
devtmpfs 1880 0 1880 0% /dev
tmpfs 1896 0 1896 0% /dev/shm
tmpfs 1896 9 1887 1% /run
tmpfs 1896 0 1896 0% /sys/fs/cgroup
/dev/sda1 1014 178 837 18% /boot
/dev/mapper/centos-home 74836 55 74782 1% /home
tmpfs 380 1 380 1% /run/user/1000
仮想マシンをエクスポートしたときのサイズを小さくする方法
無駄ファイルの削除
私は以下のように要らないファイルを消しておきました。(人によって要らないファイルは違うと思います)。
$ sudo yum autoremove
$ sudo yum clean all
$ sudo package-cleanup --oldkernels --count=1 -y
$ rm $HOME/Downloads/*
ゼロ埋め
# 念の為シングルユーザモードで
$ sudo systemctl isolate rescue.target
# 以下、root作業
# export LANG=C
# dd if=/dev/zero of=/tmp/empty.dd bs=1048576; rm /tmp/empty.dd
# dd if=/dev/zero of=/home/empty.dd bs=1048576; rm /home/empty.dd
# poweroff
トリム(?)
※ひょっとするとこの工程は要らないかもしれません。
NHCでトリムします。
ディスク.vdiサイズが、8,513,388,544 bytesから、5,040,504,832 bytesになりました。
縮小後
縮小前のovaは、5,656,820,736 bytesありましたが、縮小処理を施しておくと、2,223,650,304 bytesになりました。
環境と条件
- ホストOS: Ubunt 18.04
- ゲストOS: CentOS 7.4
- VirtualBox: 5.2.18_Ubuntur123745