Zmniejszanie dysku nie działa na gościach ESXi

11

EHLO wszystkim! Mój pierwszy post w sieci StackOverflow :)

Pracujemy na infrastrukturze ESXi 5.0 / vCenter do hostowania głównie systemów-gości Debian 6 / amd64 z partycjami ext3 i open-vm-toolskompilowanych ze źródła na błąd debian 471784 .

Masz problem, który pojawia się w Internecie, ale nigdzie nie ma rozstrzygającej odpowiedzi.

Podczas próby zmniejszenia dysku alokowanego elastycznie w trybie niezależnym-trwałym, bez żadnych migawek, rodziców, klonów, konsekwentnie pojawia się następujący błąd:

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.

(Nawiasem mówiąc, jakie są „inne czynniki”, a która z wielu białych ksiąg i instrukcji technicznych jest instrukcją obsługi? :)

Wiem, że mogę wypchać partycje zerami (w rzeczywistości używam ich do shred -fuzn0usuwania dużych plików), a następnie zamknąć danego gościa i użyć różnych metod, takich jak vmkfstoolsklonowanie lub vMotioning dysków w trybie cienkiego przydzielania itp., Ale wszystkie z nich albo ponoszą karę za przestój gościa, która jest marszczona, albo powodują nieuzasadnione przenoszenie danych między magazynami danych i / lub hostami.


Odpowiedź brzmi: bez kurczenia się w ESX / ESXi (od wersji 5).

Dokumentacja brzmi:

WAŻNE Zmniejszanie dysków nie jest dozwolone w następujących okolicznościach:

  1. Maszyna wirtualna jest hostowana na serwerze ESX / ESXi. Serwer ESX / ESXi może zmniejszyć rozmiar dysku wirtualnego tylko podczas eksportowania maszyny wirtualnej. Miejsce zajmowane przez dysk wirtualny na serwerze ESX / ESXi jednak się nie zmienia.

  2. Maszyna wirtualna ma system operacyjny gościa Mac .

  3. Ci zdefiniowanej przez całą przestrzeń dyskową do wirtualnego dysku, kiedy go stworzył.

  4. Maszyna wirtualna zawiera migawkę .

  5. Maszyna wirtualna jest połączonym klonem lub rodzicem połączonego klonu.

  6. Dysk wirtualny jest niezależnym dyskiem w trybie nietrwałym .

  7. System plików to system plików kronikowania , taki jak system plików ext4, xfs lub jfs .

Nic dziwnego, że jest opcja kurczyć w VMware Workstation, ale nie w vSphere klienta podłączonego do instancji ESXi lub vCenter.

NekojiruSou
źródło
2
czy możesz pokazać wartość klucza isolation.tools.diskShrink.disable, który można znaleźć w pliku vmx?
cikuraku
1
Nie było go tam. Dodanie isolation.tools.diskShrink.disable = „false” niczego nie zmieniło.
NekojiruSou

Odpowiedzi:

3

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

Zmniejszanie dysków nie jest dozwolone w następujących okolicznościach:

Maszyna wirtualna jest hostowana na serwerze ESX / ESXi. Serwer ESX / ESXi może zmniejszyć rozmiar dysku wirtualnego tylko podczas eksportowania maszyny wirtualnej. Miejsce zajmowane przez dysk wirtualny na serwerze ESX / ESXi jednak się nie zmienia.

Li Ni
źródło
Smutne, ale prawdziwe ...
NekojiruSou
18

W rzeczywistości istnieje sposób, aby zmniejszyć maszynę wirtualną w ESXi, chociaż musisz dla niej wyłączyć maszynę wirtualną. Oto jak:

  1. Zeruj wszystkie nieużywane miejsce w maszynie wirtualnej:

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

  2. Zrób to samo z innymi punktami montowania, partycjami wymiany itp.

  3. Zamknij maszynę wirtualną.

  4. SSH do ESXi i wydaj polecenie:

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

To zajmie trochę czasu ... vmkfstools „dziurkuje dziury” w twoim VMDK, np. Zwalnia wszystkie bloki wypełnione zerami, skutecznie zmniejszając twój VMDK.

haimg
źródło
6
W systemie Windows możesz pobrać kopię programu Virtual Server 2005 , wyodrębnić z niego plik Precompact.iso , który zawiera program Procompact.exe, który wyzeruje wszystkie nieużywane tempo dysku w systemie Windows.
Chris S
Narzędzia vmkfstools nie działają, gdy maszyna wirtualna znajduje się w magazynie NFS.
Sven 31415,
0

Jedynym sposobem na zmniejszenie VMDK w vSphere ESXi byłoby wyeksportowanie lub migracja / Storage vMotion do innego magazynu danych. Często to robię z serwerami na żywo, które mogą obsłużyć migrację (nie SQL ani Exchange). Poprzedni administrator serwera zbudował wszystkie maszyny wirtualne za pomocą dysków Thick Provisioned. Migruję maszyny wirtualne z jednego magazynu danych do drugiego i zmieniam VMDK na alokowane elastycznie.

Możesz także wykonać vmkfstools, jeśli serwer jest w trybie offline.

Jarrod LJ Gibson
źródło
-1

Zmniejszenie dysków jest możliwe w ESXi.

  1. Znajdź duży plik i usuń go.

    find / -type f -size +50M

  2. Defragmentacja (nie trzeba niczego / ponownie montować). Zignoruj ​​wszelkie błędy. Niektórych plików, takich jak dowiązania symboliczne i pliki urządzeń, nie można defragmentować.

    sudo e4defrag /

  3. Wypełnij zero nieużywanego miejsca, aby VMware wiedziało, że rzeczywiście jest nieużywane:

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

  4. Uruchom operację zmniejszania: jeśli 4 się nie powiedzie, przejdź do 5.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Uruchom ponownie system Linux z opcją try i edytuj tablicę partycji za pomocą gparted. Zmniejsz główny system plików i usuń i przenieś partycję wymiany w pobliżu partycji głównej.

  6. SSH do ESXi i wydaj polecenie:

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

  7. Musimy edytować plik * .vmdk. Po literach RW określa rozmiar wirtualnego dysku VMware (VMDK)

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

  8. Przeprowadź migrację do innego magazynu danych, aby odzwierciedlić nowy rozmiar.

Kondapaneni
źródło