VirtualBoxのスナップショット使用時は肥大化するディスク容量に気をつけられたし
こんにちは。肥大化とか膨らむなどの単語に過剰反応しがちな篠キチです。
Windows系のOSを使っているとWindowsUpdateのゴミデータみたいなのがいっぱいたまっていくので、定期的にディスクのクリーンアップをしたりデフラグをかけたりしてる人は多いと思いますが、VirtualBoxのゲストOSとしてWindowsを使っているときは気をつけないとディスク容量が減るどころかどんどん増えてしまうことがあります。
特に気をつけないといけないのはVirtualBox上でスナップショットを使っているときです。VirtualBoxのゲストOSは仮想のハードディスク全体がイメージファイルとして管理されていて、スナップショットを取ると、その時点から取る前のディスクイメージとの差分データを仮想ハードディスクとして使うようになります。通常の使い方であればディスクイメージ全体を複製するより差分で管理したほうが容量を節約できますが、ディスクイメージで管理しているのでゲストOSのWindows上でファイル数が減ったりディスクの使用容量が減っても、ディスクに書かれているデータの状態が大きく変わると仮想ハードディスクの容量が肥大化してしまうことがあります。
ちょうど僕のMac上にVirtualBoxのゲストOSとしてWindows10のテクニカルプレビュー版が入っていたので、これを使って実際にどのくらい容量が増えてしまうのか実験してみます。
まず、スナップショットを作成します。
この時点ではスナップショット作成後のディスクの実際のサイズは2.00MBとごく小さい状態です。まあディスクの状態はほとんど何も変化してないから当然ですね。
ここからディスクのクリーンアップとデフラグをWindows10上で実行してみます。 削除可能なWindowsUpdateのファイルが10GBくらいあったので、Windows上ではかなりの容量削減になっていますが、VirtualBoxのディスクイメージのほうを確認すると…
8.62GB! 10GB減るどころか、まるまる増えた感じです。
さらにここからちょっと意地悪な操作を。Microsoftが無償で提供しているSDeleteというツールをダウンロードして、ディスクの空き領域に“0”を書き込む処理をしてみます。これはVirtualBoxのような仮想環境でディスク容量を最適化するときの下準備として有効な処理なんですが、スナップショットに対して実行するとどうなるでしょうか?
15.31GB! さらに倍近くに膨れあがっています。
これはスナップショットのディスクの空き領域に0が書き込まれたことで、ディスク全体に元のイメージと異なる部分が大量に発生し、差分データが極端に肥大化してしまうためです。
さて、このディスククリーンアップ+デフラグ+SDeleteによる0データ書き込みは、VirtualBoxの仮想ディスク容量を圧縮するときの定番処理ですが、これらを一通り実行した上でスナップショットに対して圧縮処理をかけてみます。
※圧縮の方法はこちらのブログなどを参考にしてください。VirtualBoxに用意されているVBoxManageというツールで実行できます。
結果は7.67GB。とりあえずSDeleteを実行する前くらいには圧縮できました。でも元のディスクは17.76GB消費しているので合計25GB以上あります。Windows上では10GB削ったのに、まるで恩恵がありません。(スナップショットを取る前のディスクイメージには影響しないので当たり前なんですが。)
最後にもしスナップショットがない状態ならどのくらいになるか、試してみます。まずスナップショットを削除すると、ディスクのサイズは18.26GBになりました。
これにディスクの圧縮処理をかけてみます。
10.70GB。いい感じです。ディスククリーンアップでWindows側のデータを削減した効果がちゃんと出てます。
以上、VirtualBoxのスナップショットはすごく便利な機能ですが、性質上ディスク容量がどんどん肥大化してしまいますし、定番の圧縮処理の効果も限定的になるので、ディスクの空き容量には気を遣いましょうというお話でした。
TAG
約3年半にわたり君臨したランチェスター最年長の座を譲り、今はただの猫・鉄道・Perfume好きな不惑おじさん。好きなスタバオーダーはクワットロベンティノーホイップソイホワイトモカ。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境