VirtualBox - 仮想ディスク操作 - 仮想ディスクを圧縮する

クラウディア 
1. 概要
2. CentOS の仮想ディスクを圧縮する

1. 概要

 ゲスト側で、やたらファイルを作成したり削除したりしていてやたらディスクサイズが大きくなってしまったのです。  仮想ディスクを可変サイズで定義しているので圧縮できるはずだと調べたらどうもできそうなのでやってみます。  本項は、下記のサイトを参考にさせていただきました。
VirtualBoxの仮想ディスク容量を圧縮する方法

2. CentOS の仮想ディスクを圧縮する

 参考サイトは、ゲストが「Windows」の場合の記載もありますが、下記の記述はホストが「Windows」、ゲストが「CentOS」での操作です。  ゲストの空き領域をクリアします。(参考サイトでは『仮想ディスクの空き領域を 0 で埋める』と表現しています)  ゲストを起動し、「root」ユーザ権限で以下を実行します。

dd if=/dev/zero of=zero bs=4k; ¥rm zero
 上記は、参考サイトでは、下記のように説明されています。
 dd コマンドを使って、ゼロ埋めされたファイルを作成します。以下のコマンドはディスク容量いっぱいまで /zero ファイルを作成し、その後 /zero ファイルを削除するというものです。
 やってみると、どうも1行でやるのはうまくいかなかったようなので、分けて行うことにしました。

dd if=/dev/zero of=./zero bs=4k
rm zero
 1行目のコマンドはディスクがいっぱいになった時点でエラー終了します。  いったんゲストをすべてシャットダウンします。  ホストでゲストのディスクの UUID を取得して、控えておきます。  (VBoxManage.exe のパスはホストの環境によって異なりますのでご注意下さい)

C:¥Program Files¥Oracle¥VirtualBox>VBoxManage.exe list hdds
 「VBoxManage」コマンドで仮想ディスクを圧縮します。

C:¥Program Files¥Oracle¥VirtualBox>VBoxManage.exe modifyhd UUID --compact
 上記コマンドもゲスト上での「dd」コマンドがうまく動作していなかったせいか圧縮できませんでした。  結局、ディスクファイルを直接指定することとしました。

C:¥Program Files¥Oracle¥VirtualBox>VBoxManage.exe modifyhd 仮想ディスクのあるフォルダ名/仮想ディスク名.vdi --compact
 ディスクサイズやスペックにもよりますが、わたしの場合、77GB のスペースを 14GB に圧縮するのに 30 分以上かかりました。
earthcar(アースカー)