HyperV: Compact disk with Linux – kompaktowanie dysku z Linux

27-gru-2022

Pod Hyper-V pracuje maszyna wirtualna z Linux. Część z plików została wykasowana z Linuxa, ale rozmiar dysku wirtualnego pozostał duży (ok 45 GB). Dostępny w konsoli Hyper-V edytor dysku, mimo wydania komendy zmniejszenia dysku, nie zmniejszył rozmiaru, albo zrobił to w minimalnym zakresie. Co robić?

1. Kilka operacji do wykonania na systemie gościa – Linuxa. Oczywiście na początku kasujemy wszelkie niepotrzebne pliki (ale to nie główny temat tego wpisu). Następnie na dysku na którym występuje problem (u mnie to dysk podmontowany w katalogu root) należy wykonać takie oto polecenia:

su
cd /
cat /dev/zero > zero.dat ; sync ; sleep 1 ; sync ; rm -f zero.dat

O co chodzi? Hyper-V zoptymalizuje tylko „wyzerowane” sektory. Ta komenda całe puste miejsce dysku zapełnia zerami. Dzięki temu, za chwilę komendy Hyper-V zobaczą to puste miejsce. Polecenie zapełnia dysk na 100% używając też miejsca wykorzystywanego przez juz usunięte pliki i o to właśnie chodzi. Jeśli na systemie linux działa jakaś ważna aplikacja, to zapełnienie dysku może być dla niej poważnym problemem – przemyśl ten krok 😉

2. Wyłącz linuxa.

3. Na systemie hosta, w powershellu uruchomionym jako administrator:

Optimize-VHD "C:\HV-Machines\exported u20\U20\Virtual Hard Disks\U20.vhdx" -Mode Full

To polecenie dokonuje pełnej optymaliacji dysku usuwając wyzerowane sektory. W moim przypadku rozmiar dysku spadł z 45 GB do 33, a wcześniej uruchamiany kreator nie zwalniał praktycznie nic.

Źródła:

How to compact VHDX files in the most efficient way – C:Amie (not) Com! (c-amie.co.uk)

virtual machine – Linux VHDX size on Hyper-V – Stack Overflow

Komentarze są wyłączone

Autor: Rafał Kraik