/ / Dlaczego plik obrazu dysku na komputerze-hoście nie zmniejsza się po usunięciu dużych plików z maszyny wirtualnej? [zamknięty] - linux, virtualbox

Dlaczego plik obrazu dysku na komputerze-hoście nie zmniejsza się po usunięciu dużych plików na maszynie wirtualnej? [zamknięty] - linux, virtualbox

Zainstalowałem CentOS na wirtualnej skrzynce (system operacyjny to Windows 7). Stworzyłem plik obrazu dysku, który jest plikami VDI (dynamicznie przydzielany obraz). Ostatnio, kiedy usuwam ogromne pliki w CentOS, plik VDI na moim dysku nie zmniejsza się. Dlaczego? Jak rozwiązać ten problem?

Odpowiedzi:

5 dla odpowiedzi № 1

VirtualBox nie odzyskuje automatycznie miejsca na dysku (na hoście) po usunięciu plików z maszyny wirtualnej. Aby zmniejszyć obraz dysku, musisz

Najpierw wyzeruj wszystkie wolne miejsca (dla wszystkich partycji i woluminów logicznych na dysku twardym), a następnie wyłącz maszynę wirtualną.

cat /dev/zero > z;sync;sleep 3;sync;rm -f z

Następnie użyj następującego polecenia, aby skompaktować VDI.

VBoxManage modifyhd /path/to/image.vdi --compact

VBox Doc

Dzięki opcji --compact można użyć do kompaktowaniaobrazy dysków, tzn. usuwają bloki zawierające tylko zera. Spowoduje to ponowne zmniejszenie dynamicznie przydzielanego obrazu; zmniejszy fizyczny rozmiar obrazu bez wpływu na logiczny rozmiar dysku wirtualnego. Kompaktowanie działa zarówno dla obrazów podstawowych, jak i dla obrazów różnic utworzonych jako część migawki.

BTW: W przypadku VMWare (.vmdk) musisz użyć vmware-vdiskmanager -k xxx.vmdk zrobić to samo.


1 dla odpowiedzi nr 2

W jaki sposób host może wiedzieć, które sektory oferowane maszynie wirtualnej są używane przez maszynę wirtualną i które są bezpłatne?

Wie tylko, kiedy VM żąda sektora, który wciąż nie został przypisany w pliku na dysku (gdy go zwiększa).

Może "defragmentacja" lub podobna proceduramożna zreorganizować użycie dysku na tyle dobrze, że można ręcznie powiedzieć hostowi, aby zmniejszyć miejsce. Jak dotąd nie znam żadnego hosta VM, który oferuje tę funkcję (i używanie jej zawsze byłoby bardzo ryzykowne).

Najprostszą alternatywą byłoby klonowanie maszyny wirtualnej do nowej.