Virtualbox仮想ディスクファイルの縮小
はじめに
この記事は,個人のメモです。記載内容を実行したことにより問題が発生しても一切の責任を負いません。コマンドの実行やアプリの使用については,開発元の正式な情報を確認するなどして,安全性はご自身で判断してください。
仮想マシン作成時には,「可変サイズのストレージ」として仮想ディスクを作成している。
可変サイズにすることで,使用する前の仮想ディスクファイル(拡張子 vdi)の大きさを小さくすることができる。仮想マシンを使用していくと,仮想ディスクファイルが大きくなる。
ゲストOSが使用しているディスクの容量[DG_use (GB)]と,仮想ディスクファイルの容量[DH_use (GB)]は,同じではない。
DG_use が増えると,DH_use も増える。一方,DGuse を削減しても,DHuseは(特別な操作をしない限り)減らない。DH_useを削減することを,ここでは仮想ディスクの縮小と呼ぶことにする。(同じ作用を「圧縮」と呼んでいる場合もあるが,zipファイルにするような単なる圧縮とは区別するためである。)
前提
ホストOS:Windows 11
仮想環境:Oracle Virtualbox 7.0.8
ゲストOS:Ubuntu 22.04
縮小処理の流れ
- ゲストOS上での空き領域確保・不要ファイルの削除
- ゲストOS上での空き領域の開放・zeroパッティング
- ホストOS上での仮想ディスクファイルの縮小
作業
ステップ1
ゲストOSで不要なファイルを削除する。ゴミ箱も空にする。
一括してクリーンナップすることができるBleachBitをインストールして実行することもできます。私が作成する講習会用マシンにはインストールして使用しています。不要な言語ファイルなども削除してくれて便利です。様々なLinuxディストリビューションでパッケージが用意されています。
ステップ2
ゲストOS上での空き領域に,zeroを書き込む必要があります。いろいろな方法があります。
ここでは,bleachbitの機能を使う方法を紹介します。管理者権限で,bleachbitのwipe-free-spaceオプションを付けてコマンドを実行します。
sudo bleachbit --wipe-free-space /
ステップ3
最近のVBoxManageでは,modifymediumコマンドが正式らしい。コンパチビリティのために,modifyhdコマンドが残っているようだ。
VirtualBoxに付属するユーティリティVBoxManageを利用して,ホストOS上に存在する仮想ディスクの情報を確認する。下記のコマンドを実行して,UUID または Location を確認する。
cd "c:\Users\YourName\"
"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list hdds
縮小したいディスクのUUIDまたはファイル名を使って,modifymedium の compact を実行する。
たとえば
"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifymedium C:\Users\YourName\Virtualbox VMs\YourVirtualMachineName\YourVirtualDiskFileName.vdi --compact
あるいは
"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifymedium あなたの仮想ディスクのUUID文字列 --compact
簡単な方法(無保証)
仮想マシンハードディスクイメージ変換(convert)ツール NHC が公開されている。様々な機能をもつものだが,その中の「トリム」という機能が,ここでの「縮小」に相当する。縮小処理のステップ2を省略できるので便利である。
このソフトウェアは,個人で開発し,公開されているものです。私は個人的に長い間利用しています。トラブルに遭遇したことはありません。とても感謝しています。しかし,安全性などについて保証することはできません。ご利用は自己責任で。
参考になるサイト・情報など
仮想ディスクの圧縮
最近のVBoxManageでは,modifymediumコマンドが正式らしい。コンパチビリティのために,modifyhdコマンドが残っているようだ。
Discussion