HOME >> Tips >> VMware

仮想ディスクファイルを圧縮して小さくする方法

2016/12/14
文書番号:20639


仮想環境で使用する仮想ハードディスクですが、仮想環境内でデータを削除しても仮想ディスクのサイズは小さくならず、ストレージの実際の使用量は減りません。

シックプロビジョニングの場合は作成した時点で指定サイズ分の領域を確保するので、ディスクのサイズが小さくならないのは当然ですが、 シンプロビジョニングの場合でも仮想ディスクのサイズは小さくなりません。

シンプロビジョニングは使用した分だけ実際の仮想ディスクファイルのサイズが増えるのですが、一度大きくなってしまった仮想ディスクは簡単には取り戻せないのです。

また、最初はシックプロビジョニングで作成したものの、後からシンプロビジョニングにしたくなった場合、 シックからシンへ変換する方法は以下のページで紹介していますが、仮想環境内で一度使用していた領域分はファイルサイズとして残り、それ以上は小さくなりません。
シックプロビジョニング の仮想ディスクを シンプロビジョニング に変更する方法


以下の手順は仮想環境で現在使用中ぐらいのサイズにまで仮想ディスクを小さくする方法です。

【操作手順】

    一度使用した領域を取り戻すには次の2つの手順が必要です。

    1段階目:空き領域を「0」でクリアする。
    2段階目:esxiのコマンドで圧縮する。
  1. まずは空き領域を「0」でクリアします。
    Microsoft からリリースされている「SDelete」というツールを使用します。

    「SDelete」のページへアクセスします。
    https://technet.microsoft.com/ja-jp/sysinternals/bb897443

    「最新版のダウンロード」の項目にあるリンクをクリックします。

    クリックで拡大
  2. ダウンロードのダイアログが表示されるので任意の場所に保存します。

    クリックで拡大
  3. ダウンロードしたzipファイルを解凍します。
    ファイルを右クリックして「すべて展開」をクリックすると解凍できます。

    クリックで拡大
  4. 解凍したフォルダの中には「SDelete.exe」と「SDelete64.exe」が入っています。
    実行するOSの環境に合わせて64ビット環境で実行する場合は「SDelete64.exe」でいいと思います。
    (今回は「C:\Tools\SDelete」というフォルダー階層になっています。)

    クリックで拡大
  5. スタートメニューからコマンドプロンプトを右クリックして「管理者として実行」します。
    以下のコマンドを実行します。

    Cドライブをゼロクリアする場合のコマンドです。
    実行するドライブに合わせて変更してください。
    
    sdelete.exe -z C:
    
    rem 64ビットOSの場合
    sdelete64.exe -z C:
    
    先ほどの「SDelete.exe」もしくは「SDelete64.exe」をコマンドプロンプトにドラッグするとフルパスが入力されるので便利です。

    初回の実行時のみ以下の画面が表示されますので「Agree」をクリックします。

    クリックで拡大


    実行には非常に時間がかかります。
    進捗の表示が100%になってからが特に時間かかります。容量が多いと何時間もかかります。
    実行中はあまり使わない方がいいと思うので時間があるときに実行するといいと思います。


    クリックで拡大
  6. 「sdelete」が完了したらコマンドプロンプトを終了します。
  7. 仮想環境をシャットダウンします。
  8. ESXi サーバーへ SSH で接続します。

    ESXi サーバーへ SSH 接続する方法はこちらを参照してください。
    ESXi 仮想ホストへ SSH 接続する方法

    圧縮したい仮想ディスクファイルが存在するディレクトリまで移動し、次のコマンドを実行します。

    
    vmfstools -K 圧縮する仮想ディスクファイル
    
    例:
    vmfstools -K WindowsServer2012R2.vmdk
    

    クリックで拡大


    シンプロビジョニングの場合はシンプロビジョニングのまま、実際の使用量まで小さくなりました。

    シックプロビジョニングの場合はこのコマンドによってシンプロビジョニングに変換され、実際の使用量まで小さくなりました。

【参考情報】

[TechNet] SDelete (ja-JP)
http://social.technet.microsoft.com/wiki/contents/articles/17329.sysinternals-sdelete-ja-jp.aspx