ESXiから仮想マシンを取り出したときの仮想ディスクに対する実験です。
vSphere Clientを使ってのデータストアからの取り出しやVeeam Backupを使ってのコピーでは、仮想ディスクは指定した全容量を占めるようになってしまいます。
これをThinディスク(シンディスク)としてコンパクトにする方法を調べてみました。
vSphere Clientを使ってのデータストアからの取り出しやVeeam Backupを使ってのコピーでは、仮想ディスクは指定した全容量を占めるようになってしまいます。
これをThinディスク(シンディスク)としてコンパクトにする方法を調べてみました。
まずは自分がやった作業手順を説明し、最後に無駄のない方法としてまとめてみます。
■対象仮想マシンの環境
今回対象とするのはコマンドラインしか存在しないシンプルなCentOSがインストールされた状態のものです。
デフォルトでインストールされているので、LVMによるパーティション割り当てが行われています。
また使用状態が長く続いたため、仮想ハードディスクも容量ぎりぎりまで使った形跡有りです。なお現時点では余計なデータは削除されているため使用容量は全体の10%程度に収まっているという状況です。
仮想マシンがWindows環境というものならば、VMware Toolsでディスクのシュリンクが出来るため今回説明するような手順は不要だと思われます。
■作業手順
- ESXi内にある仮想マシンをvCenter Converterを用いてWindows環境に取り出す
- VMware Workstationで取り出した仮想マシンを起動
- 起動後、空き領域をゼロで埋める
- ゼロで埋めた後、仮想マシンをシャットダウンする
- 仮想マシンを再度vCenter Converterを用いて変換する
最後に変換した仮想マシンに含まれる仮想ハードディスクのファイルが見事、使用サイズ分程度に小さくなることを確認できました。
必要なのはおそらく仮想ハードディスクの空き領域をゼロで埋めることです。
これをESXiの中に位置するときに適用しておけば、上記の手順をいくらか省くことが出来そうです。
なお、ゼロ埋めするのには以下のコマンドで行いました。
# dd if=/dev/zero of=/tmp/zero bs=512M (作業が終わった後で) # rm /tmp/zero
■まとめ
- ESXi内にある処理対象の仮想マシンで、空き領域をゼロで埋める
- ESXi内の処理対象の仮想マシンをシャットダウンする
- 取り出し先(Windows側)で、VMware vCenter Converterを起動し、対象の仮想マシンを変換する
- このとき、仮想ハードディスクの種類が”事前割当なし”になっているか確認しておくといいかも。
変換後、仮想ハードディスクが使用容量分程度しかサイズを消費していないことを確認してみてください。
もしうまくいかないようであれば、仕方ないですが一度取り出して、地道にやってみるしかないのかもしれません。
■おまけ
ESXiのデフォルトが事前割当有りのシックディスクであり、
そのため単純な取り出しでは全容量喰ってしまうのでは?という意見がありました。