ディスクの縮小がESXiゲストで機能しない


11

EHLOみんな!StackOverflowネットワークに関する最初の投稿:)

ext3パーティションを持つDebian 6 / amd64ゲストシステムを主にホストし、Debian バグ471784open-vm-toolsごとにソースからコンパイルされたESXi 5.0 / vCenterインフラストラクチャを実行しています。

インターネット全体で提起されている問題がありますが、どこにも決定的な答えはありません。

スナップショット、親、クローンをまったく使用せずに、シンプロビジョニングされたディスクを独立永続モードで縮小しようとすると、一貫して次のエラーが表示されます。

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.

(ちなみに、「その他の要因」と何ですか。また、大量のホワイトペーパーと技術マニュアルのうち、ユーザーズマニュアルどれですか。)

パーティションにゼロを詰め込んで(実際、shred -fuzn0大きなファイルを削除するときに使用します)、問題のゲストをシャットダウンし、vmkfstoolsシンプロビジョニングモードでディスクのクローン作成、vMotioning などのさまざまな方法を使用できることを知っていますが、すべてそれらのいずれかは、シャークされているゲストにダウンタイムのペナルティを負うか、データストアやホスト間でデータの不当な移動をもたらします。


そして、答えは次のとおりです。ESX/ ESXiの下で縮小しません(バージョン5以降)。

ドキュメントは読み取ります。

重要次の状況では、ディスクの縮小は許可さません

  1. 仮想マシンは、ESX / ESXiサーバーでホストされます。 ESX / ESXi Serverは、仮想マシンがエクスポートされる場合にのみ、仮想ディスクのサイズを縮小できます。ただし、ESX / ESXiサーバー上の仮想ディスクが占有するスペースは変わりません。

  2. 仮想マシンにはMacゲスト OSがあります。

  3. あなたは、事前に割り当てられ、あなたがそれを作成した時に仮想ディスクへのすべてのディスクスペースを。

  4. 仮想マシンにはスナップショットが含まれています。

  5. 仮想マシンは、リンククローンまたはリンククローンです。

  6. 仮想ディスクは、永続モードの独立したディスク です。

  7. ファイルシステムは、ジャーナリングファイルシステムなど、ext4は、XFS、またはJFSファイルシステム。

不思議はありません VMware Workstationのに収縮するためのオプションはなく、vSphereクライアントでのESXiまたはvCenterインスタンスに接続されていません。


2
vmxファイルにあるisolation.tools.diskShrink.disableキーの値を表示できますか?
cikuraku

1
ありませんでした。isolation.tools.diskShrink.disable = "false"を追加しても何も変わりませんでした。
ねこじる荘

回答:


3

http://www.vmware.com/pdf/vmware-tools-cli.pdf ページ13:

次の状況では、ディスクの縮小は許可されません。

仮想マシンは、ESX / ESXiサーバーでホストされます。ESX / ESXi Serverは、仮想マシンがエクスポートされる場合にのみ、仮想ディスクのサイズを縮小できます。ただし、ESX / ESXiサーバー上の仮想ディスクが占有するスペースは変わりません。


悲しいけれど本当です...
猫汁荘

18

実際には、ESXi上のVMを縮小する方法がありますが、そのためにVMをシャットダウンする必要があります。方法は次のとおりです。

  1. VM内のすべての未使用スペースをゼロにします。

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. 他のマウントポイント、スワップパーティションなどで同じことを行います。

  3. VMをシャットダウンします。

  4. ESXiにSSHで接続し、次のコマンドを発行します。

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

これには少し時間がかかります... vmkfstoolsはVMDK内に「穴を開け」ます。たとえば、ゼロで埋められたすべてのブロックの割り当てを解除し、VMDKを効果的に縮小します。


6
Windowsの場合、Virtual Server 2005のコピーを取得し、そこからPrecompact.isoファイルを抽出できます。これには、Windowsのすべての未使用ディスクペースをゼロにするProcompact.exeプログラムが含まれています。
クリスS

VMがNFSストレージ上にある場合、vmkfstoolsは機能しません。
スヴェン31415

0

vSphere ESXiでVMDKを縮小する唯一の方法は、別のデータストアにエクスポートまたは移行/ストレージvMotionすることです。私は、SQLやExchangeではなく、移行を処理できるライブサーバーでこれを多く行います。前のサーバー管理者は、シックプロビジョニングされたディスクを使用してすべてのVMを構築しました。VMをあるデータストアから別のデータストアに移行し、VMDKをシンプロビジョニングに変更します。

サーバーがオフラインの場合は、vmkfstoolsも実行できます。


-1

ESXiではディスクの縮小が可能です。

  1. 大きなファイルを見つけて削除します。

    find / -type f -size +50M

  2. デフラグ(何もアンマウント/再マウントする必要はありません)。エラーを無視します。シンボリックリンクやデバイスファイルなどの一部のファイルは最適化できません。

    sudo e4defrag /

  3. すべての未使用スペースをゼロで埋めて、VMwareが実際に未使用であることを認識します。

    dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile

  4. 縮小操作を実行します:4が失敗した場合、5に進みます。

    sudo vmware-toolbox-cmd disk shrinkonly

  5. tryオプションを使用してLinuxシステムを再起動し、gpartedを使用してパーティションテーブルを編集します。ルートファイルシステムを縮小し、スワップパーティションを削除してルートパーティションの近くに移動します。

  6. ESXiにSSHで接続し、次のコマンドを発行します。

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

  7. * .vmdkファイルを編集する必要があります。文字RWの後、VMware仮想ディスク(VMDK)のサイズを定義します

    * 40 GB = 40 * 1024 * 1024 * 1024/512 = 83886080 *

  8. 別のデータストアに移行して、新しいサイズを反映します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.