vmware イメージ (vmdk ファイル) の圧縮
vmware の仮想環境を使っていると、ファイルを削除しても、削除済みの印をつけるだけで実際のデータが削除されないので上限として指定したサイズまで仮想イメージが大きくなる。非常に使いにくくなるので、使っていない領域を解放して、vmware イメージを圧縮する方法を説明する。
ubuntu 20.04
とubuntu 20.10
で VMware workstation 15 player
上で確認した。
この手順を行うときは、vmware イメージ全体のバックアップを取って、仮に失敗しても問題ないようにして行うこと。
手順
sudo -i
dd if=/dev/zero of=./zero bs=4k status=progress; \
rm -f ./zero; \
vmware-toolbox-cmd disk shrink /; \
shutdown -h now
- dd の操作は、空き容量が尽きるまで実行されるので最終的にコマンドは失敗となるので
;
で連結し、コマンドの実行結果にかかわらずrm
が実行されるようにする。 - dd の操作~
vmware-toolbox-cmd disk shrink
コマンドは実行に時間がかかるので、前のコマンドの実行後に自動的に実行する。 -
vmware-toolbox-cmd disk shrink /
の操作の後、画面が真っ黒になって操作できなくなることがあるので、自動的にシャットダウンする。
説明
テストのために意図的にディスクを使う
まず効果があるかどうか確認するために意図的に大きなファイルを作る。
dd if=/dev/urandom of=./out1 bs=1M count=10000 status=progress
dd if=/dev/urandom of=./out2 bs=1M count=10000 status=progress
dd if=/dev/urandom of=./out3 bs=1M count=10000 status=progress
dd if=/dev/urandom of=./out4 bs=1M count=10000 status=progress
確認
シャットダウンして vmware のフォルダサイズが増えているのを確認する
sudo shutdown -h now
ディスクを圧縮する
後始末
ダミーで作成したファイルを削除する
rm out*
root ユーザーに切り替える。
root ユーザーに切り替える。
sudo -i
空き領域に 0 を書く (重要)
以下コマンドを実行することにより、空きディスクにすべて zero のファイルを書き込んで削除する。
ディスク容量が不足しているという警告が出るが、直後に削除するので気にしない。
この手順がないと、vmware-toolbox-cmd disk shrink
を行ってもディスクは圧縮されない。
dd if=/dev/zero of=./zero bs=4k status=progress; rm -f ./zero
vmware のディスクを圧縮する
以下コマンドで vmware のディスクを圧縮する。
※ このコマンドを実行しただけでは圧縮はできず、この前の手順である dd で zero 埋めする操作が必要。
vmware-toolbox-cmd disk shrink /
確認
シャットダウンして vmware のフォルダサイズがもとに戻っているのを確認する
shutdown -h now