仮想マシンが格納されている150 GBのディスクファイル(.vmdk、事前割り当てなし)があります。
ファイルは現在20 GBですが、ゲストファイルシステムに新しいものを保存していなくても、毎日増え続けています。
私はこのディスクの最大サイズを減らすになる方法を何時間も探していました。そのため、150 GBになりません(制限を30 GBに設定して、何が起こるかを確認したいと思います)。 VMがこのサイズに達したとき)。
私が試したこと:
このタスクは技術的には非常にシンプルに見えます(トリッキーな縮小は含まれず、サイズ制限を変更するだけです)が、私は本当にここでは考えられません...
解決策はありますか?
.vmdkディスクのサイズを減らす通常の手順は次のとおりです。
ゲストを介してディスクを最適化し、ディスクの最後の空のスペースを統合する最適化モードを選択します。 Windowsゲストの場合は、ごみ箱を空にして休止状態とページングをオフにし、最適化の完了後にそれらを返す必要があります。
ディスク上のすべての未使用領域をゼロにします。
Windowsの場合 sdelete :sdelete -c
を使用します。
Linuxの場合:dd if=/dev/zero of=/mytempfile && rm -f /mytempfile
。
ディスクを圧縮します(完了するまでにかなり長い時間がかかる場合があります)。
VMware Workstation:メニューVM /管理/ディスクをクリーンアップします。
または使用:vmware-vdiskmanager.exe -k [VMDK PATH]
。
ESXの場合:vmkfstools --punchzero [VMDK PATH]
。
ディスクを拡張可能から事前割り当て済みに変換すると、拡張が停止する可能性があります。これは、値が次の-t
パラメータを指定したvmware-vdiskmanagerを使用して実行できます。
0 : single growable virtual disk
1 : growable virtual disk split in 2Gb files
2 : single preallocated virtual disk
3 : preallocated virtual disk split in 2Gb files
次のコマンドは、.vmdkを拡張可能から事前割り当て済みに変換します。
vmware-vdiskmanager -r current_disk_name.vmdk -t 3 new_disk_name.vmdk
ディスクのサイズを変更したい場合は、ディスクが拡張可能な形式(例 here )である間に行う必要があります。
詳細については、 仮想ディスクマネージャユーザーガイド を参照してください。
ファイルは現在20GBですが、ゲストファイルシステムに新しいものを保存していなくても、毎日増加しています。
OSとそのアプリケーションプログラムは、一時ファイル、ページファイル、休止状態ファイル、構成ファイルに一時的に大量のディスク領域を使用するためです。 OSのポリシーに応じて削除されると、ディスク上の新しいセクターが次回使用されます。 VM仮想ディスクで新しいセクターが使用されるときはいつでも、実ディスクから仮想ディスクにストレージを割り当てます。仮想ディスクのセクターはゲストOSで常に再利用されないため、VMは、そのディスク使用量を考慮し、実際のディスクからスペースを提供します。これにより、仮想ディスクイメージが増大します。
画像を検査せずにこのようなツールを使用すると、全体の災害につながる可能性があるため、質問のタイトルが解決される可能性は低くなります。しかし、イメージが30GBを超えて大きくなるのを防ぐことができます。目標を達成するには多くの方法があります。
A.パーティション化された30GBのみを使用し、残りを空きスペースとして残してください。すでにより多くのスペースをパーティション分割している場合は、それを縮小/削除する必要があります。新しいパーティションを作成してから、ゼロでダンプし、@ harrymcの説明に従ってパンチします。パーティション化されていない領域のスペースは使用されないため、仮想ディスクが30GBを超えることはありません。
B.スナップショットを作成し、使用後にそれを復元します。スナップショットの作成後VMデータを新しいイメージファイルに保存します。スナップショットを保存または作成せずに復元すると、変更されたすべてのデータが削除され、スペースが解放されます。
C.最大30GBの新しい仮想ディスクを作成し、それを新しいディスクとして現在の仮想マシンに追加し、バックアップツールを使用してすべてのデータを新しい仮想ディスクに移動します。クローンにはライブLinuxを使用できます。
推奨オプションはA
これは、スパースVMDK(事前割り当てなし)でのみ機能します使用することを確実にするために、縮小する前にデフラグが必要ですスペースが連続しています
Windows内での最適化
Windows仮想マシンでは、まずWindows内からディスクの最適化を実行する必要があります。 Windows内での最適化により、使用されているすべてのスペースが連続していることが保証されます。その後、仮想ディスクのサイズを縮小できます。
仮想ディスクの縮小
仮想ディスクを縮小するには:
VMware Toolsのコントロールパネル/ツールボックスを開きます。
Windowsの場合:
システムトレイの[VMware Tools]アイコンをダブルクリックするか、[スタート]> [コントロールパネル]> [VMware Tools]をクリックします。
Linuxの場合:
ターミナルを開き、次のコマンドを実行します:
vmware-toolbox
注:Workstation 9.x(Windows)以降では、ディスクのクリーンアップ中に圧縮が自動的に行われます。したがって、このオプションはVMware Tools Panelから削除されました。 VM> [管理]> [ディスクのクリーンアップ]に移動します。これは、VMware Workstation 9.x以降のLinuxバージョンでは使用できません。
[縮小]タブをクリックします。圧縮するドライブを選択します。 [縮小する準備]をクリックし、画面の指示に従います。注意:ディスクの縮小中は、仮想マシンまたはホストマシンをシャットダウンしないでください。また、プロセスをキャンセルしようとしないでください。このプロセスを中断すると、仮想ディスクに修復不可能な損傷を与える可能性があり、仮想マシンを再起動できない場合があります。
関係するディスクのサイズを150GBから30GBに設定しないでください。
すべてのパーティションの合計を30GB未満に設定する必要があります。パーティションのサイズを小さくしていく必要があります。このサイトには、パーティションを縮小する方法に関する多くのドキュメントがあるので、ここでは繰り返しません。
最大サイズで150GB(薄いパーティション)をサポートするスペースがないのになぜ作成したのですか?どうやらこれはトラブルを求めているようです。
@harrymの答えはかなり良いですが、実際には質問には答えません。 OPは最大サイズを小さくしたいと考えています。問題は、ハイパーバイザーが提示されたサイズ(最大サイズとも呼ばれる)が実際にOSによって使用されている量を知らないことです。圧縮(vmware-vdiskmakager -k)は、拡張可能なvmdkに適用されます。事前に割り当てられたものに対しては何もしません。
したがって、ディスクを縮小する手順は次のとおりです。
最初のステップは、VM内からの手順を含み、ゲストOSによって異なります。2番目のステップはvmwareコマンドでサポートされる可能性がありますが、これを行うための詳細な方法を見つけていません。したがって、ハックなアプローチ。
これは、(大容量のデータの移動が原因で)それほど迅速ではなく、トリックを実行するダーティなソリューションです。 最大デバイスサイズと同じ空き容量が必要です。
警告:操作の前に重要なデータをバックアップしてください!!
ゲストパーティションのサイズを変更し、デバイスの末尾に未割り当て領域を残す方法を見つけます。 2つの例:
ゲストOSから:Windows 7
DISKPART>詳細パーツ
パーティション1
バイト単位のオフセット:1048576
少なくともこの数をディスクサイズに追加してください。次に、バイトを512で除算し、切り上げ(天井)するセクターに変換する必要があります。例えば。 209709448。手順3でこの番号をメモします。
ライブCD経由:SystemResqueCD
番号開始終了サイズタイプファイルシステムフラグ
1 2048s 113455103s 113453056sプライマリNTFSブート
最後のセクターに注意して、1を追加します。 113455104。手順3でこの番号をメモします。
ハックが事前割り当てされた単一のファイル(タイプ2)vmdks(複数のファイルタイプで試したことがない)で機能するため、最初にグロータブルを事前割り当てに変換します。デバイスの最大サイズとして、物理的なスペースを持つパーティションが一時的に必要になります。 (例:150GB)。
vmware-vdiskmanager.exe -rsourcevmdk-t 2destvmdk
ここで注意が必要なのは、事前に割り当てられたディスクには2つのvmdksがあるはずです。
disk.vmdk disk-flat.vmdk
前者はKBのみで、後者はデータを保持します。最初の(disk.vmdk)を開きますが、VMWareワークステーションはオフです。テキストエディタ(メモ帳++が私の提案です)を使用します。ラインを見つける
RW 113455104 FLAT "Windows 7_x64-fl-flat.vmdk" 0
はい、ポイントを取得します。2番目のフィールドは、デバイスに割り当てられたセクターの数です。検証では512を掛けてバイト単位でサイズを求め、次に1073741824(1024 ** 3)で除算してGB単位でサイズを求めます。これは以前のデバイスのサイズである必要があります。
次に、その番号をステップ1でメモした番号に置き換え、ファイルを保存します。 [〜#〜] warning [〜#〜]:ここでのミスにより、ファイルシステムで使用されている実際のデータがトリミングされる可能性があります。 (しかし、デバイスの最初にfsのサイズを変更し、正しく安全な計算を行いましたか?)
これまでに触れられたデータはありません。この最後の手順を実行して、エクステンドを実際にトリミングします。 vmware-vdiskmanagerの名前変更機能を使用して、サイズが調整されたvmdkを再作成します。
vmware-vdiskmanager.exe -ndestvmdkソースvmdk
VMWare Converter を使用して新しいVMおよびより小さなVMDKサイズを作成し、次に、新しく作成されたより小さなVMDKに元のVMDKを変換します。
詳細な手順 ここ 。
VMDKサイズの変更には、対応する パーティションテーブルの更新 も必要になることに注意してください。
VMware LinuxゲストOSの場合は、次のコマンドを実行します。
Sudo vmware-toolbox-cmd disk shrinkonly