vmdk形式の仮想ディスク圧縮

前提

  • 家では、それまではWindowsしか使っていなかった。
  • 自宅にあるのは、Windowsマシン、外付けハードディスク、家庭用NAS、である。
  • はじめてMacbookが家にやってきた。
  • 当面の互換性のため、Oracle VirtualBox仮想マシンを構築し、vmdk形式で仮想ディスクを作成してWindows 7を導入して使っている。
  • 仮想ディスクは可変ディスクを採用。

課題と対応策

  • 当然ながら仮想ディスクが肥大化してきたので、圧縮をかけたい。
  • ローカルでディスクを圧縮をかけるには、圧縮後のディスクを格納するだけの空きディスクが必要だが、当然ながらない。
    • もし、現在のディスクをそのまま圧縮できる機能が備わったとしても、その機能を実行中に異常終了したら二度とWindowsが上がらなくなるので使えない。
  • よって、以下の手順を踏む必要がある。
    1. Macの内蔵ディスクの中から仮想ディスクを取り出す。
    2. 仮想ディスクを複製し、バックアップをとる。
    3. 仮想ディスクをトリム処理をかけて圧縮する。
    4. Macの内蔵ディスクの仮想ディスクを消す。
    5. Macの内蔵ディスクに圧縮した仮想ディスクを戻す。

1.外付けハードディスクを使う

  • 仮想マシン(Windows)をシャットダウンし、MacにUSBハードディスクをつけてコピーをする。わたしの環境で3時間くらいかかる。
  • しかし、このディスクはそのままではWindowsで読むことができないという基本を忘れていた。家にはMacの他にはWindowsマシンしかない。
  • Windows 7で動くツールを導入し、外付けハードディスクから取り出そうとしたが、たまたまそのWindowsマシンにも空きがない。仕方がなくNASにエクスポートしたのでNASに直接送信した方が早かった。その後の操作でオペミスした場合の事前バックアップとしては悪くなかったと思う。

2.NASに転送する

  • 最近のNASは、Windowsファイル共有のほか、MacのAFSでも使えるが、大容量ファイルの転送ならやはりFTPだと思う。
  • NASを設定してFTP転送を許可するようにし、Macのターミナルを開いてftpコマンドでアクセス。わたしの環境で4時間くらいかかった。ftpCUIでも所要時間が表示される。
  • ネットワークはすかすかなのでNASのCPUがボトルネックのように見える。

3.圧縮する

  • NASに接続できるWindows機でNHCを実行。NHCはフリーウェア。NHC.exeが単体で動くので大変使いやすい。
  • 起動直後のウィンドウ「変換元ファイルの指定」で、「このファイルをトリムするだけ」にチェックを入れると、旧ファイルをリネームし、旧ファイルと同じフォルダに同じ名前のファイル名で圧縮後のファイルを新設してくれる。所要時間は計測していないが一晩で、160GBのファイルが110GBに圧縮。

4. Macに戻す

  • Macの圧縮前仮想ディスクファイルをfinderで削除し、あげたままだったftpのターミナルウィンドウにコマンド入力。
  • 当然ながらftpセッションはタイムアウトで切断されているので再接続。put (ファイル名)のコマンドに代えてget (ファイル名)でファイルをダウンロード。50GB痩せたはずだが、やはり4時間くらいかかった。

5. 仮想マシンを起動

  • ファイル構成に変更はないので、仮想マシンの設定は全く変える必要はない。そのまま起動してみたが、エラーが発生してマシンが起動しなかった。
  • どうやら、ftpでgetしたままなのでアクセス権がないようである。個人用Macなので、あまり考えずにchmod 777をかけたら無事何事もなかったかのように起動した。
  • Windowsを起動した時点で10GB弱増えたが、差し引き40GB程度空きができた。
  • 半年くらい経ったらまたやろうかな。でも、Macが薄くてかっこいいという代償がこの2晩越えの作業なのだろうか。次回はこの手順を読んでもう少しきびきびやろうと思う。

使用したもの