Jak zmniejszyć rozmiar dysku VMware

15

Mój obraz dysku VMware Ubuntu urósł do 5 GB fizycznego rozmiaru pliku. To dynamicznie rozwijający się dysk o maksymalnej pojemności 8 GB. Wyczyściłem niektóre rzeczy w dystrybucji Linuksa, a teraz zajmuje ona 3 GB. Oczywiście fizyczny rozmiar pliku nie zmniejszył się automatycznie. Czy istnieje sposób (jeśli to możliwe bezpłatnie), aby zmniejszyć ten dysk z powrotem do ~ 3 GB?

Potrzebuję tego, aby dopasować obraz na DVD.

Marcin Rybacki
źródło

Odpowiedzi:

21

Istnieją trzy kroki:

  1. Defragmentacja (nie trzeba niczego / ponownie montować)

    sudo e4defrag /

    Zignoruj ​​wszelkie błędy. Niektórych plików, takich jak dowiązania symboliczne i pliki urządzeń, nie można defragmentować.

  2. 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

  3. Uruchom operację zmniejszania:

    sudo vmware-toolbox-cmd disk shrinkonly

Tom Hale
źródło
To jest poprawna odpowiedź dla VMWare Workstation. Dzięki stary, bardzo mi pomógł!
Clonkex
Poprawny. Działa dobrze na VMWare Workstation 14,
Centos
1
bądź ostrożny, jeśli uruchomisz to z dowolnymi zamontowanymi woluminami zewnętrznymi, takimi jak S3 - polecenie zero fill spróbuje utworzyć plik czyszczenia 256 TB w twoim segmencie S3 ...
paj
Pracował dla mnie dla hosta Windows 10 i gościa Ubuntu 16. Na początku myślałem, że krok 3 powinien zostać uruchomiony na hoście, ale się myliłem. Po wykonaniu wszystkich kroków uruchamiam również kontrolę systemu plików, jak opisano tutaj: askubuntu.com/a/953750/590877
Alex Che
1
+1, jednak myślę, że użycie zerofree dla kroku 2 byłoby znacznie szybsze i znacznie czystsze: manpages.ubuntu.com/manpages/xenial/man8/zerofree.8.html
Étienne
15

Znalazłem rozwiązanie - musisz skompaktować dysk twardy:

Maszyna wirtualna - Ustawienia - Ogólne - Oczyść maszynę wirtualną

Marcin Rybacki
źródło
Łał. W końcu znalazłem tę odpowiedź. Ale ... dlaczego kompaktowanie dysku wirtualnego nie powoduje odzyskania wolnego miejsca?
Wizard79
8
Musisz to zrobić z poziomu systemu operacyjnego Ubuntu gościa (zakładając, że masz zainstalowane VMware Tools): „vmware-toolbox-cmd disk shrink /”, który powinien wykonać zadanie.
DH4
Nie dotyczy to ESXi. W tym celu zobacz moją odpowiedź poniżej.
Collin Chaffin
3

Otwórz VMware Toolbox w gościu (jako root) i zmniejsz dysk. (Dokumentacja)


Jeśli nie masz narzędzi VMware, możesz ręcznie zmniejszyć dysk w dwóch krokach. Najpierw wyczyść wolne miejsce na dysku wirtualnym za pomocą narzędzia takiego jak zerofree . Zerofree jest dostępny w Ubuntu , ale ponieważ wymaga, aby system plików gościa był zamontowany tylko do odczytu, możesz chcieć uruchomić go z dysku CD na żywo. Parted Magic podobno zawiera zero zer.

Po wyzerowaniu wolnego miejsca otwórz Ustawienia maszyny wirtualnej i kompaktuj dysk wirtualny.

nandhp
źródło
3
Interfejs narzędzia vmware nie jest już dostępny, ale nadal możesz użyć: „vmware-toolbox-cmd disk shrink /”, który powinien wykonać zadanie.
DH4
3

Posługiwać się

sudo vmware-toolbox-cmd disk shrinkonly

z wiersza polecenia gościa Ubuntu.

(Testowany na gościu Ubuntu 14.04 LTS + hosta Windows 10 + VMWare Workstation 12.1.1)

YasharF
źródło
1

Zmiana rozmiaru dysku twardego VMWare :

Rozszerzenie dynamicznego wirtualnego dysku twardego w VMWare jest łatwe i nie wymaga już vmware-vdiskmanager.exedomyślnego narzędzia wiersza poleceń C:\Program Files\VMware\VMware Workstation\.

Aby zmienić rozmiar, użyj następującego polecenia (Otwórz wiersz polecenia, naciskając WIN + R i wpisz cmd): „ C:\Program Files\VMware\VMware Workstation\vmware-vdiskmanager.exe" -x NEWSIZE "diskname.vmdk

Procedura :

Następujące kroki to:

  • Pobierz tutaj
  • zainstalować
  • otwarty
  • Wybierz partycję, kliknij Zmień rozmiar / Przenieś, Przeciągnij uchwyt na pełną szerokość
  • Kliknij Zastosuj
  • Zgadzam się na ponowne uruchomienie
  • Podczas uruchamiania nie naciskaj żadnego klawisza
  • Pozwól modułowi rozruchowemu wykonać swoje zadanie
  • Sprawdź, czy rozmiar partycji systemowej Windows został zwiększony.

Wizualne podsumowanie kroków i dodatkowe informacje można znaleźć tutaj .

Lorenz Lo Sauer
źródło
1

Te kroki działały dla mnie idealnie:

1) Zerowe wypełnienie nieużywanego miejsca

cat /dev/zero > zero.fill;sync;sleep 1;sync;rm -f zero.fill

2) Zmniejsz dysk za pomocą przybornika VMware

sudo vmware-toolbox-cmd disk shrink /

Testowany na Ubuntu 16.04, VMware Workstation 12.1.0 Player, Windows 7 Host

dontbyteme
źródło
0

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; synchronizacja; plik wip rm

  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
(1) Pytanie nie dotyczy sposobu ograniczenia wykorzystania systemu plików; mówi, że PO już to zrobił. Więc twoje findpolecenie nie jest tak naprawdę istotne. (2) Co robi vmkfstools -K? (3) Ręcznie edytować plik? Naprawdę? (4) Nie rozumiem twoich instrukcji dotyczących zmian, które użytkownik musi wprowadzić w pliku. (5) Co mówisz o migracji do innego magazynu danych? (0) Większość tego, co mówisz, zostało już uwzględnione. …………………………………………………… Proszę nie odpowiadać w komentarzach; edytuj  swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.
Scott,
Cóż, jestem facetem VMware (myślę, że każdy, kto też spróbuje tego zrobić, powinien), więc ta odpowiedź jest TYLKO tą, która dotyczy nawet ESXi (ponieważ ESXi NIE obsługuje zmniejszających się gości Linuksa przez vmtools), ale ostatecznie stała się idealna sens dla mnie. Powiedziawszy to, krok 7 jest nie tylko niepotrzebny, ale jest po prostu niepoprawny. Ponieważ zmniejszanie nie zmienia rzeczywistego rozmiaru OBJĘTOŚCI, po prostu zatrzymujesz się po kroku 6. Krok 8 (migracja pamięci) jest używany tylko wtedy, gdy chcesz zmniejszyć dysk BEZ uruchamiania vmkfstools, który dba o to na siłę, dlatego to rozwiązanie wymaga również kroku 5a-ZAMKNIJ gościa.
Collin Chaffin
Zobacz moją odpowiedź powyżej. Polecenie cmd oparte na vmtools wymienione w kroku 5 jest również po prostu niepoprawne, ponieważ nigdy nie było obsługiwane (ani nawet działa) w ŻADNYM scenariuszu opartym na hoście ESXi.
Collin Chaffin
0

Przerzedzanie (zmniejszanie) dysków VMDK w gościach ESXi / vSphere Linux

Uwaga: „Zmniejszanie” jest często używane zamiennie w odniesieniu do procesu zmniejszania rozmiaru pliku dysku cienkiego. VMware używa terminu „zmniejsz” w odniesieniu do zmniejszenia podstawowego rozmiaru dysku dostępnego dla gościa i „przerzedzenia”, ponieważ proces ten najczęściej wykorzystuje przechwytywanie nieużywanego miejsca bez zmiany dostępnego rozmiaru.

Ponieważ ESXi nie obsługuje zmniejszania opartego na vmtools na gościach Linux, należy wykonać następujące kroki. Aby uzyskać więcej informacji, zobacz odnośnik poniżej.

  1. (jeśli to możliwe) Zatrzymaj wszystkie aplikacje i usługi wymagające intensywnego zapisu dysku, ponieważ poniższe kroki chwilowo wypełnią wolumin docelowy

  2. Defragmentuj woluminy na docelowym VMDK i zignoruj ​​wszelkie błędy jako dowiązania symboliczne / pliki urządzeń / etc. nie można defragmentować.

    # USE sudo IF NECESSARY IN YOUR CONFIG!
    e4defrag /
    # or e4defrag /mnt/MOUNTVOLUME
  1. Wypełnij zero nieużywanego miejsca:
    dd if=/dev/zero of=/mnt/MOUNTVOLUME/zeroes bs=1M; sync; rm /mnt/MOUNTVOLUME/zeroes
  1. Zamknij i wyłącz gościa

  2. SSH do hosta ESXi i wydaj następujące polecenia:

    # Check current vmdk allocation
    du -h /vmfs/volumes/volumename/vmname/vmname.vmdk

    # Shrink it
    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

    # Check again to verify shrinkage
    du -h /vmfs/volumes/volumename/vmname/vmname.vmdk
  1. Włącz gościa

Źródło

https://kb.vmware.com/s/article/1002019

Usunięcie plików w większości systemów plików nie spowoduje ich całkowitego usunięcia; jedynie tabele plików zostaną zmienione. Przydatne są bezpłatne narzędzia do bezpiecznego usuwania plików, takie jak Eraser lub SDelete, aby wyzerować miejsce i „wyzerować” wolne miejsce na woluminie, skutecznie usuwając wolne miejsce z danych. To wtedy dysk może być odpowiednio przerzedzony. Następnie można użyć komendy vmkfstools -K (ESXi / ESX 4.1 i nowsze), aby ukończyć odzyskiwanie bloku lub użyć Storage vMotion, aby migrować maszynę wirtualną do magazynu danych o innym rozmiarze bloku VMFS.

Collin Chaffin
źródło