みんなEHLO! StackOverflowネットワーク上の私の最初の投稿:)
我々はいくつかのESXi 5.0/vCenterインフラストラクチャを実行して、主にDebian 6/AMD64ゲストシステムをホストし、ext3パーティションと debian bug 471784 に従ってソースからコンパイルされたopen-vm-tools
を使用しています。
インターネットのいたるところで発生していると思われる問題がありましたが、どこにも決定的な答えはありませんでした。
スナップショット、親、クローンがまったくない独立永続モードでシンプロビジョニングされたディスクを縮小しようとすると、一貫して次のエラーが発生します。
root@linux64:~# vmware-toolbox-cmd disk list
Shrink disk is disabled for this virtual machine.
Shrinking is disabled for linked clones, parents of linked clones,
pre-allocated disks, snapshots, or due to other factors.
See the User's manual for more information.
(ちなみに、「その他の要因」とは何ですか、そして大量のホワイトペーパーとテクニカルマニュアルはどれですかisユーザーマニュアル?:)
パーティションにゼロを詰めることができることを知っています(実際、大きなファイルを削除するときはshred -fuzn0
を使用します)、問題のゲストをシャットダウンし、vmkfstools
、クローン作成、vMotioningディスクなどのさまざまな方法を使用しますシンプロビジョニングモードなどで使用することはできますが、それらすべてで、ゲストが回避されるダウンタイムのペナルティが発生するか、データストアやホスト間でデータが不当に移動することになります。
そして答えは次のとおりです。ESX/ESXiで縮小なし(バージョン5以降)
documentation は次のようになります。
重要ディスクの縮小は許可されていません以下の状況では:
仮想マシンは、ESX/ESXiサーバーでホストされています。 ESX/ESXiサーバー仮想マシンがエクスポートされる場合にのみ、仮想ディスクのサイズを縮小できます。ただし、ESX/ESXiサーバー上の仮想ディスクが占めるスペースは変わりません。
仮想マシンにはMac guestオペレーティングシステムがあります。
あなたpreallocated作成時の仮想ディスクへのすべてのディスク容量。
仮想マシンにはsnapshotが含まれています。
仮想マシンは、リンクされたクローンのリンクされたcloneまたはparentです。
仮想ディスクはindependentモードのindependentディスクです。
ファイルシステムはext4、xfs、またはjfsなどのジャーナリングファイルシステムです。
is VMWare Workstationで縮小するオプションですが、ESXiまたはvCenterインスタンスに接続されたvSphereクライアントでは縮小できません。
http://www.vmware.com/pdf/vmware-tools-cli.pdf ページ13:
次の状況では、ディスクの縮小は許可されません。
仮想マシンは、ESX/ESXiサーバーでホストされています。 ESX/ESXi Serverは、仮想マシンがエクスポートされた場合にのみ、仮想ディスクのサイズを縮小できます。ただし、ESX/ESXiサーバー上の仮想ディスクが占めるスペースは変わりません。
実際にはVMをシャットダウンする必要がありますが、ESXiでVMを縮小する方法があります。方法は次のとおりです。
VM内の未使用スペースをすべてゼロにします。
dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero
他のマウントポイント、スワップパーティションなどでも同じようにします。
VMをシャットダウンします。
ESXiにSSHで接続し、次のコマンドを発行します。
vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk
これにはしばらく時間がかかります... vmkfstoolsはVMDK内に「穴を開け」ます。ゼロで埋められたすべてのブロックの割り当てを解除し、VMDKを効果的に縮小します。
大きなファイルを見つけて削除します。
find / -type f -size +50M
最適化(何かをアンマウント/再マウントする必要はありません)。エラーを無視します。シンボリックリンクやデバイスファイルなどの一部のファイルは、最適化できません。
Sudo e4defrag /
すべての未使用スペースをゼロで埋め、VMwareが実際に未使用であることを認識します。
dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile
圧縮操作を実行します。4が失敗した場合は、5に進みます。
Sudo vmware-toolbox-cmd disk shrinkonly
Linuxシステムをtryオプションで再起動し、パーティションテーブルをgpartedで編集します。ルートファイルシステムを縮小し、スワップパーティションを削除してルートパーティションの近くに移動します。
ESXiにSSHで接続し、次のコマンドを発行します。
vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk
* .vmdkファイルを編集する必要があります。文字RWの後に、VMware仮想ディスク(VMDK)のサイズを定義します
* 40 GB = 40 * 1024 * 1024 * 1024/512 = 83886080 *
新しいサイズを反映するために、それを別のデータストアに移行します。
VSphere ESXiでVMDKを圧縮する唯一の方法は、エクスポートするか、別のデータストアにvMotionを移行/移行することです。これは、移行を処理できる(SQLやExchangeではない)ライブサーバーで頻繁に行われます。以前のサーバー管理者は、シックプロビジョニングされたディスクを使用してすべてのVMを構築しました。 VMを1つのデータストアから別のデータストアに移行し、VMDKをシンプロビジョニングに変更します。
サーバーがオフラインの場合は、vmkfstoolsを実行することもできます。