Mam plik dysku o pojemności 150 GB (.vmdk, nieprzydzielony wstępnie), w którym przechowywana jest moja maszyna wirtualna.
Plik ma obecnie 20 GB, ale rośnie każdego dnia, mimo że nie przechowuję niczego nowego w systemie plików gościa.
Godzinami szukałem sposobu na zmniejszenie maksymalnego rozmiaru tego dysku , aby nigdy nie osiągnął 150 GB (chciałbym ustawić limit na 30 GB i zobaczyć, co się stanie, gdy maszyna wirtualna osiągnie ten rozmiar) .
Co próbowałem:
- Konwersja obrazu dysku za pomocą VMware Converter → to nie działa, narzędzie pozwala jedynie na utworzenie pełnej kopii lub „połączonego klonu”.
- Tworzenie nowej pustej maszyny wirtualnej o pożądanym rozmiarze w celu skopiowania danych 20 GB na nowy plik .vmdk → Nie mogę znaleźć sposobu na wykonanie kopii, ani nawet podłączyć nowego dysku do mojej istniejącej maszyny wirtualnej (tak, aby wykonać kopię za pomocą system operacyjny gościa).
- Przeszukanie pliku .vmx w celu sprawdzenia, czy maksymalny rozmiar nie został ustawiony zwykłym tekstem (nie jest).
Chociaż to zadanie wydaje się technicznie dość proste (nie wymaga skomplikowanego zmniejszania, wystarczy zmiana limitu wielkości), naprawdę nie mam tutaj pomysłów ...
Czy w ogóle jest jakieś rozwiązanie?
virtual-machine
vmware-workstation
Sébastien
źródło
źródło
Odpowiedzi:
Zwykłą procedurą zmniejszania rozmiaru dysku .vmdk jest:
Defragmentuj dysk za pośrednictwem gościa, wybierając tryb defragmentacji, który konsoliduje puste miejsce na końcu dysku. W przypadku gościa systemu Windows należy opróżnić Kosz i wyłączyć hibernację i stronicowanie, zwracając je po zakończeniu defragmentacji.
Zeruj wszystkie nieużywane miejsce na dysku.
Dla Windows użytku sdelete :
sdelete -c
.Dla systemu Linux:
dd if=/dev/zero of=/mytempfile && rm -f /mytempfile
.Zmniejsz dysk (może to potrwać dość długo).
VMware Workstation: Menu VM / Zarządzaj / Wyczyść dyski.
Lub użyć:
vmware-vdiskmanager.exe -k [VMDK PATH]
.dla ESX:
vmkfstools --punchzero [VMDK PATH]
.Konwersja dysku z rosnącego na wstępnie przydzielony może zatrzymać jego wzrost. Można to zrobić za pomocą vmware-vdiskmanager z
-t
parametrem, którego wartości to:Następujące polecenie przekształci plik .vmdk z rozwijalnego do wstępnie przydzielonego:
Jeśli chcesz zmienić rozmiar dysku, należy to zrobić, gdy dysk jest nadal w możliwym do rozszerzenia formacie (przykłady tutaj ).
Aby uzyskać więcej informacji, zobacz Podręcznik użytkownika programu Virtual Disk Manager .
źródło
Ponieważ system operacyjny i jego aplikacje tymczasowo wykorzystują dużo miejsca na dysku na pliki tymczasowe, pliki stron, pliki hibernacji i pliki konfiguracji. Po ich usunięciu w zależności od zasad systemu operacyjnego następnym razem zostaną użyte nowe sektory na dysku. Maszyna wirtualna przydziela miejsce na dysku wirtualnym z dysku rzeczywistego za każdym razem, gdy na dysku wirtualnym używany jest nowy sektor. Ponieważ sektor na dysku wirtualnym nie zawsze jest ponownie wykorzystywany przez system operacyjny gościa, maszyna wirtualna uważa, że jest to użycie dysku i daje miejsce na dysku rzeczywistym, co prowadzi do wzrostu obrazu dysku wirtualnego.
Twoje pytanie do pytania jest mniej prawdopodobne, ponieważ użycie takiego narzędzia bez kontroli obrazu może doprowadzić do całkowitej katastrofy. Możesz jednak zapobiec powiększaniu obrazu powyżej 30 GB. Istnieje wiele sposobów na osiągnięcie celu.
A. Użyj tylko 30 GB partycjonowanej i pozostaw wolną przestrzeń. Jeśli już podzieliłeś więcej miejsca na partycje, musisz je zmniejszyć / usunąć, utwórz nową partycję, a następnie zrzuć ją zerami i przebij ją zgodnie z opisem @harrymc. Ponieważ przestrzeń w obszarze niepodzielonym na partycje nie jest nigdy używana, dysk wirtualny nigdy nie wzrośnie powyżej 30 GB.
B. Utwórz migawkę i przywróć ją po użyciu. Po utworzeniu migawki VM przechowuj dane w nowym pliku obrazu. Jeśli przywrócisz go, bez zapisywania lub tworzenia nowych migawek, wszystkie zmienione dane zostaną usunięte, a zatem zwolnione zostanie miejsce.
C. Utwórz nowy dysk wirtualny o maksymalnej pojemności 30 GB, dodaj go jako nowy dysk do bieżącej maszyny wirtualnej, przenieś wszystkie dane na nowy dysk wirtualny za pomocą narzędzia do tworzenia kopii zapasowych. Do klonowania można użyć działającego systemu Linux.
Zalecana opcja to A.
źródło
Dlaczego nie po prostu ustawić rozmiar dysku na 30 GB ze 150 GB.
Musisz ustawić sumę wszystkich partycji na mniej niż 30 GB. Będziesz musiał zmniejszyć rozmiary partycji w miarę upływu czasu. Na tej stronie znajduje się DUŻO dokumentacji dotyczącej zmniejszania partycji, więc nie powtórzę tego tutaj PONOWNIE.
Dlaczego stworzyłeś 150 GB (cienką partycję), jeśli nie masz miejsca na jej obsługę w maksymalnym rozmiarze? Wygląda na to, że to tylko proszenie o kłopoty.
źródło
vdiskmanager.exe -k [VMDK PATH]
jak sugeruje inna odpowiedź, nie zmniejsza dysku.Istnieje okrągły sposób użycia VMWare Converter do utworzenia nowej maszyny wirtualnej i mniejszego rozmiaru VMDK, a następnie przekonwertowania oryginalnego VMDK na nowo utworzony, mniejszy VMDK.
Szczegółowe kroki tutaj .
Należy pamiętać, że wszelkie zmiany rozmiaru VMDK będą również wymagać odpowiedniej aktualizacji tabeli partycji .
źródło
Działa to tylko w przypadku rzadkiego VMDK (nieprzydzielone wstępnie) Defragmentacja jest wymagana przed zmniejszeniem, aby zapewnić ciągłość używanego miejsca
Z bazy wiedzy VMWare
źródło
Odpowiedź @harrym jest całkiem dobra, ale tak naprawdę nie odpowiada na pytanie. OP chce zmniejszyć maksymalny rozmiar . Problem polega na tym, że hiperwizor nie wie, ile z prezentowanego rozmiaru (czyli maksymalnego rozmiaru) faktycznie jest używane przez system operacyjny. Zagęszczanie (vmware-vdiskmakager -k) dotyczy dostępnego vmdk. To nic nie robi na wcześniej przydzielonych.
Kroki, aby zmniejszyć dysk to:
Pierwszy krok obejmuje procedurę z poziomu maszyny wirtualnej i różni się w zależności od systemu operacyjnego gościa. Drugi krok może być wspierany przez komendy vmware, ale nie znalazłem głębokiego sposobu na zrobienie tego. Tak hacky podejście.
Oto nie tak szybkie (ze względu na przenoszenie dużych danych) i brudne rozwiązanie, które załatwiło sprawę. Będziemy musieli mieć dostępną przestrzeń równą maksymalnemu rozmiarowi urządzenia .
OSTRZEŻENIE: Pamiętaj, aby wykonać kopię zapasową ważnych danych przed jakąkolwiek operacją !!
Znajdź sposób zmiany rozmiaru partycji gościa i pozostaw nieprzydzielone miejsce na końcu urządzenia. Dwa przykłady:
Z systemu gościa: Windows 7
Upewnij się, że dodajesz co najmniej ten numer do rozmiaru dysku. Teraz musimy przekonwertować bajty na sektory dzielące przez 512 i zaokrąglające w górę (pułap). Np. 209709448. Zanotuj ten numer dla kroku 3.
Za pośrednictwem płyty CD na żywo: SystemResqueCD
Zanotuj końcowy sektor i dodaj 1. Np. 113455104. Zanotuj ten numer dla kroku 3.
Ponieważ hack działa na vmdks z pojedynczym plikiem (typ 2) (nie próbowałem na wielu typach plików), najpierw przekonwertujemy plik growble na wstępnie przydzielony. Będziemy tymczasowo potrzebować partycji z przestrzenią fizyczną jako maksymalnym rozmiarem urządzenia. (np. 150 GB).
vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk
Teraz trudna część, dla wstępnie przydzielonego dysku powinny być 2 vmdks
disk.vmdk disk-flat.vmdk
pierwszy ma tylko KB długości, a drugi przechowuje dane. Otwórz pierwszą (disk.vmdk), gdy stacja robocza VMWare jest wyłączona , z edytorem tekstu (Notepad ++ jest moją sugestią). Znajdź linię
RW 113455104 FLAT „Windows 7_x64-fl-flat.vmdk” 0
Tak, rozumiesz, drugie pole to liczba sektorów przydzielonych dla urządzenia. Aby sprawdzić poprawność, pomnóż przez 512 i znajdź rozmiar w bajtach, a następnie podziel przez 1073741824 (1024 ** 3), aby znaleźć rozmiar w GB. Powinien to być rozmiar poprzedniego urządzenia.
Teraz zamień ten numer na zanotowany numer z kroku pierwszego i zapisz plik. OSTRZEŻENIE : Błąd tutaj i możesz skończyć przycinanie rzeczywistych danych używanych w systemie plików. (Ale zmieniliśmy rozmiar fs na początku urządzenia i dokonaliśmy poprawnych i bezpiecznych obliczeń, prawda?)
Do tej pory nie zostały jeszcze dotknięte żadne dane. Wykonaj ten ostatni krok, aby faktycznie przyciąć przedłużenia. Użyjemy funkcji zmiany nazwy programu vmware-vdiskmanager, aby odtworzyć vmdk z teraz zmniejszonym rozmiarem.
vmware-vdiskmanager.exe -n destvmdk sourcevmdk
źródło
W przypadku systemu-gościa vmware Linux należy uruchomić:
sudo vmware-toolbox-cmd disk shrinkonly
źródło