Das Verkleinern der Festplatte funktioniert bei ESXi-Gästen nicht


11

EHLO allerseits! Mein erster Beitrag im StackOverflow-Netzwerk :)

Wir führen eine ESXi 5.0 / vCenter-Infrastruktur aus, um hauptsächlich Debian 6 / amd64-Gastsysteme mit ext3-Partitionen zu hosten, open-vm-toolsdie aus dem Quellcode per Debian-Fehler 471784 kompiliert wurden .

Ich habe ein Problem, das überall im Internet angesprochen wird, aber ohne eine endgültige Antwort zu erhalten.

Beim Versuch, eine Thin Provisioning-Festplatte im unabhängig persistenten Modus ohne Snapshots, Eltern oder Klone zu verkleinern, wird immer wieder der folgende Fehler angezeigt:

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.

(Übrigens, was sind die "anderen Faktoren" und was ist die Menge an White Papers und technischen Handbüchern ? das Benutzerhandbuch? :)

Ich weiß, dass ich die Partitionen mit Nullen füllen kann (tatsächlich verwende ich sie shred -fuzn0beim Löschen großer Dateien), dann den betreffenden Gast herunterfahre und verschiedene Methoden wie das vmkfstoolsKlonen oder vMotioning von Datenträgern im Thin-Provision-Modus usw. verwende, aber alle von ihnen wird entweder die Ausfallzeitstrafe für den Gast verursacht, der gekürzt wird, oder es kommt zu einem ungerechtfertigten Verschieben von Daten zwischen Datenspeichern und / oder Hosts.


Und die Antwort lautet: Kein Schrumpfen unter ESX / ESXi (ab Version 5).

Die Dokumentation lautet:

WICHTIG Das Verkleinern von Datenträgern ist unter folgenden Umständen nicht zulässig :

  1. Die virtuelle Maschine wird auf einem ESX / ESXi-Server gehostet. ESX / ESXi Server kann die Größe einer virtuellen Festplatte nur verkleinern, wenn eine virtuelle Maschine exportiert wird. Der von der virtuellen Festplatte auf dem ESX / ESXi-Server belegte Speicherplatz ändert sich jedoch nicht.

  2. Die virtuelle Maschine hat eine Mac-Gastbetriebssystem .

  3. Du haben der gesamten Festplatte beim Erstellen den gesamten Speicherplatz zugewiesen .

  4. Die virtuelle Maschine enthält a Snapshot .

  5. Die virtuelle Maschine ist ein verknüpfter Klon oder der übergeordnete Element eines verknüpften Klons.

  6. Die virtuelle Festplatte ist eine unabhängige Festplatte in persistenten Modus.

  7. Das Dateisystem ist ein Journal-Dateisystem , z. B. ein ext4-, xfs- oder jfs- Dateisystem.

Kein Wunder, dass es eine Option zum Verkleinern in VMWare Workstation gibt, jedoch nicht in einem vSphere-Client, der mit einer ESXi- oder vCenter-Instanz verbunden ist.


2
Können Sie einen Wert des Schlüssels isolation.tools.diskShrink.disable anzeigen, der in der vmx-Datei enthalten ist?
Cikuraku

1
Es war nicht da. Das Hinzufügen von isolation.tools.diskShrink.disable = "false" hat nichts geändert.
NekojiruSou

Antworten:


3

http://www.vmware.com/pdf/vmware-tools-cli.pdf Seite 13:

Das Schrumpfen von Datenträgern ist unter folgenden Umständen nicht zulässig:

Die virtuelle Maschine wird auf einem ESX / ESXi-Server gehostet. ESX / ESXi Server kann die Größe einer virtuellen Festplatte nur verkleinern, wenn eine virtuelle Maschine exportiert wird. Der von der virtuellen Festplatte auf dem ESX / ESXi-Server belegte Speicherplatz ändert sich jedoch nicht.


Traurig aber wahr ...
NekojiruSou

18

Tatsächlich gibt es eine Möglichkeit, eine VM unter ESXi zu verkleinern, obwohl Sie die VM dafür herunterfahren müssen. Hier ist wie:

  1. Null unbenutzten Speicherplatz in der VM:

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

  2. Machen Sie dasselbe mit anderen Einhängepunkten, tauschen Sie Partitionen aus usw.

  3. Fahren Sie die VM herunter.

  4. SSH an ESXi und geben Sie diesen Befehl ein:

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

Dies wird einige Zeit dauern ... vmkfstools "stanzt Löcher" in Ihr VMDK, z. B. gibt die Zuordnung aller mit Nullen gefüllten Blöcke frei, wodurch Ihr VMDK effektiv verkleinert wird.


6
Unter Windows können Sie eine Kopie von Virtual Server 2005 abrufen und die Datei Precompact.iso daraus extrahieren. Sie enthält ein Programm Procompact.exe, das das gesamte nicht verwendete Festplattentempo in Windows auf Null setzt.
Chris S

vmkfstools funktionieren nicht, wenn sich die VM in einem NFS-Speicher befindet.
Sven 31415

0

Die einzige Möglichkeit, ein VMDK in vSphere ESXi zu verkleinern, besteht darin, vMotion zu exportieren oder in einen anderen Datenspeicher zu migrieren. Ich mache das oft mit Live-Servern, die eine Migration verarbeiten können (nicht SQL oder Exchange). Ein früherer Serveradministrator hat alle VMs mit Thick Provisioned-Festplatten erstellt. Ich migriere die VMs von einem Datenspeicher in einen anderen und ändere das VMDK auf Thin Provisioning.

Sie können die vmkfstools auch ausführen, wenn der Server offline ist.


-1

Das Verkleinern von Festplatten ist unter ESXi möglich.

  1. Suchen Sie die große Datei und löschen Sie sie.

    find / -type f -size +50M

  2. Defragmentierung (keine Notwendigkeit, etwas zu entfernen / wieder zu montieren). Ignorieren Sie alle Fehler. Einige Dateien wie Symlinks und Gerätedateien können nicht defragmentiert werden.

    sudo e4defrag /

  3. Füllen Sie den gesamten nicht genutzten Speicherplatz mit Null aus, damit VMware weiß, dass er tatsächlich nicht verwendet wird:

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

  4. Führen Sie den Schrumpfvorgang aus: Wenn 4 fehlschlägt, fahren Sie mit 5 fort.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Starten Sie das Linux-System mit der Option try neu und bearbeiten Sie die Partitionstabelle mit gparted. Verkleinern Sie das Root-Dateisystem und löschen und verschieben Sie die Swap-Partition in die Nähe der Root-Partition.

  6. SSH an ESXi und geben Sie diesen Befehl ein:

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

  7. Wir müssen die * .vmdk-Datei bearbeiten. Definiert nach den Buchstaben RW die Größe der virtuellen VMware-Festplatte (VMDK).

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

  8. Migrieren Sie es in einen anderen Datenspeicher, um die neue Größe widerzuspiegeln.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.