thickで40GBで作られた仮想ディスクにOS他15GBをインストールした後、それをthinの仮想ディスクにコピーしてサイズを減らそうといろいろやってみたが、とりあえず無理そう。
それ以前に、vSphere Clientで作られた仮想ディスクのthickとthinの違いが見えなかった。
VMware Server等のデスクトップ製品で作る仮想ディスクはブロックタイプという言い方をしていて、以下の2種類がある。
- ノーマル
仮想ディスク作成時に仮想ディスクの容量を定義するが、作成された時点ではホスト上のディスクは使用されず(最小限だけ確保されて)、ゲストのディスク使用量が増えるにつれて仮想ディスクのサイズが自動的に増える。
- フラット
仮想ディスク作成時に仮想ディスクの容量と同量の領域がホスト上で使用される。すなわち、容量と同じサイズの仮想ディスクファイルが作成される。
また、どちらのタイプでもホスト上での仮想ディスクファイルを2GB単位で分割するかどうかが選べる。
ノーマルで分割すると(定義した容量÷2GB)個のサイズの小さな仮想ディスクファイルが最初に作成され、ゲストのディスク使用量が増えるとそれぞれの仮想ディスクファイルのサイズが増加していく。
フラットの場合は(定義した容量÷2GB)個の2GBの仮想ディスクファイルが、最初からゲスト上に作成される。(最後のファイルだけは2GBで割った余りのサイズになる)
これに対してvSphere Clientで作られる仮想ディスクは、ちょっと動きが違って見える。
解説サイトによってはthin=ノーマル、thick=フラットと書かれているが、動作をみると、以下のように見える:
- thinであってもthickであっても、ホスト(ハイパーバイザ)上でlsすると、仮想ディスクファイルのサイズが仮想ディスクの容量と等しい。
- 仮想ディスクファイルを分割するオプションが存在しない。
- thinであってもthickであっても、作成後に仮想ディスクの容量を増やすことができる。この場合でも仮想ディスクファイルの数は増えず、単一のファイルのサイズが増加する。また、増やした分の容量と同じサイズだけ仮想ディスクファイルのサイズが増える。
全然thinじゃないんだけど……。ただ、vSphere Clientのサマリで見ると、thinの仮想ディスクでは、ゲストの使用済みストレージのサイズがプロビジョニングされたサイズよりも小さい場合がある。ホスト上でlsで表示される仮想ディスクファイルのサイズと、実際のサイズが違うのかも知れない。