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 № 1VirtualBox 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
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.