La riduzione del disco non funziona sui guest ESXi


11

EHLO a tutti! Il mio primo post sulla rete StackOverflow :)

Stiamo eseguendo un'infrastruttura ESXi 5.0 / vCenter per ospitare principalmente sistemi guest Debian 6 / amd64 con partizioni ext3 e open-vm-toolscompilati dal sorgente per bug debian 471784 .

Si è verificato un problema che viene riscontrato in tutto Internet, ma senza una risposta conclusiva data da nessuna parte.

Quando provo a ridurre un disco con thin provisioning in modalità indipendente persistente, senza istantanee, genitori, cloni, ottengo costantemente il seguente errore:

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.

(A proposito, quali sono gli "altri fattori" e quale delle tonnellate di white paper e manuali tecnici è il manuale dell'utente? :)

So che posso riempire le partizioni di zeri (in effetti, lo uso shred -fuzn0quando si eliminano file di grandi dimensioni) quindi chiudere l'ospite in questione e utilizzare vari metodi come vmkfstools, clonazione o dischi vMotioning in modalità thin-provisioning, ecc., Ma tutti di questi o comportano la penalità di downtime per l'ospite che viene sottratto, o comportano uno spostamento ingiustificato di dati tra archivi dati e / o host.


E la risposta è: nessuna riduzione in ESX / ESXi (dalla versione 5).

La documentazione riporta:

IMPORTANTE La riduzione dei dischi non è consentita nelle seguenti circostanze:

  1. La macchina virtuale è ospitata su un server ESX / ESXi. Il server ESX / ESXi può ridurre le dimensioni di un disco virtuale solo quando viene esportata una macchina virtuale. Lo spazio occupato dal disco virtuale sul server ESX / ESXi, tuttavia, non cambia.

  2. La macchina virtuale ha un sistema operativo guest Mac .

  3. Hai preallocato tutto lo spazio su disco sul disco virtuale al momento della creazione.

  4. La macchina virtuale contiene un'istantanea .

  5. La macchina virtuale è un clone collegato o il genitore di un clone collegato.

  6. Il disco virtuale è un disco indipendente in modalità non permanente .

  7. Il file system è un file system di journaling , come un file system ext4, xfs o jfs .

Non c'è da meravigliarsi che ci sia un'opzione per ridurre in VMWare Workstation ma non nel client vSphere connesso a un'istanza ESXi o vCenter.


2
potresti mostrare un valore della chiave isolation.tools.diskShrink.disable che puoi trovare sul file vmx?
Cikuraku,

1
Non c'era. L'aggiunta di isolation.tools.diskShrink.disable = "false" non ha cambiato nulla.
NekojiruSou,

Risposte:


3

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

La riduzione dei dischi non è consentita nelle seguenti circostanze:

La macchina virtuale è ospitata su un server ESX / ESXi. Il server ESX / ESXi può ridurre le dimensioni di un disco virtuale solo quando viene esportata una macchina virtuale. Lo spazio occupato dal disco virtuale sul server ESX / ESXi, tuttavia, non cambia.


Triste ma vero ...
NekojiruSou

18

In realtà, esiste un modo per ridurre una VM su ESXi, anche se è necessario arrestarla. Ecco come:

  1. Azzera tutto lo spazio inutilizzato all'interno della VM:

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

  2. Fai lo stesso con altri punti di montaggio, partizioni di swap, ecc.

  3. Arrestare la VM.

  4. SSH su ESXi ed emettere questo comando:

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

Questo richiederà del tempo ... vmkfstools "perfora i buchi" all'interno del tuo VMDK, ad es. Dealloca tutti i blocchi che sono riempiti di zeri, riducendo efficacemente il tuo VMDK.


6
Per Windows, puoi prendere una copia di Virtual Server 2005 , estrarre il file Precompact.iso da esso, contiene un programma Procompact.exe che azzererà tutto il ritmo del disco inutilizzato in Windows.
Chris S

vmkfstools non funziona quando la VM si trova su una memoria NFS.
Sven 31415

0

L'unico modo per ridurre un VMDK in vSphere ESXi sarebbe esportare o migrare / Archiviare vMotion su un altro archivio dati. Lo faccio molto con server live in grado di gestire una migrazione (non SQL o Exchange). Un precedente amministratore del server ha creato tutte le macchine virtuali con dischi con provisioning di spessore. Eseguo la migrazione delle macchine virtuali da un archivio dati a un altro e cambio VMDK in thin provisioning.

Puoi anche eseguire vmkfstools se il server non è in linea.


-1

La riduzione dei dischi è possibile su ESXi.

  1. Trova il file di grandi dimensioni ed eliminali.

    find / -type f -size +50M

  2. Deframmenta (non è necessario disinstallare / rimontare nulla). Ignora eventuali errori. Alcuni file come collegamenti simbolici e file del dispositivo non possono essere deframmentati.

    sudo e4defrag /

  3. Azzera tutto lo spazio inutilizzato in modo che VMware sappia che è effettivamente inutilizzato:

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

  4. Eseguire l'operazione di compattazione: se 4 non riesce, passare a 5.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Riavvia il sistema linux con l'opzione try e modifica la tabella delle partizioni con gparted. Riduci il file system di root ed elimina e sposta la partizione di swap vicino alla partizione di root.

  6. SSH su ESXi ed emettere questo comando:

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

  7. Dobbiamo modificare il file * .vmdk. Dopo le lettere RW, definisce la dimensione del disco virtuale VMware (VMDK)

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

  8. Migralo su un altro archivio dati per riflettere le nuove dimensioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.