Zdaję sobie sprawę z ogromnej liczby postów w Internecie, które mówią, że to nie zadziała i dlaczego i naprawdę spędziłem kilka dni szukając rozwiązań kilka miesięcy temu, ale wczoraj znalazłem kilka wskazówek, jak „włączyć obsługę poleceń TRIM” na maszynach gości . Próbowałem i „wygląda” jak praca. Chciałbym wiedzieć, gdzie jest haczyk lub czy to naprawdę działa tak, jak powinno.
Źródła:
https://forums.virtualbox.org/viewtopic.php?f=7&t=51768
http://jaysonrowe.blogspot.com/2013/08/compacting-virtualbox-vdi.html
Moje dokładne polecenie dołączające plik dysku:
VBoxManage storageattach „GuestOsMachineName” --storagectl „SATA” --port 1 - urządzenie 0 - niedziałający na --discard na --medium "C: \ ścieżka \ do \ file.vdi" --typ hdd
Który generetował ten wpis w pliku * .vbox komputera:
<AttachedDevice nonrotational="true" discard="true" type="HardDisk" port="1" device="0">
<Image uuid="{3836a042-a83e-4000-9a59-e95ad65162ce}"/>
</AttachedDevice>
Aby mieć pewność, że nie stracę żadnych danych, ten dysk był drugim podłączonym do komputera. Zrobiłem prosty test, taki jak skopiowanie pliku na dysk, pozostawienie go, ponowne uruchomienie komputera, zamknięcie komputera, sprawdzenie, czy jest tam po ponownym uruchomieniu komputera, sprawdzenie użycia pliku na dysku w systemie operacyjnym hosta. Wyniki to:
- plik dysku dołączony bez opcji --nonrotational i --discard zachowuje swój (dynamiczny) rozmiar nawet po usunięciu plików w systemie-gościu
- plik dysku dołączony do obu powyższych opcji zwalnia miejsce po usunięciu danych
Oto moje pytania:
- co dokładnie robi - opcja odrzucania? nie jest to opisane w podręczniku VirtualBox ( http://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach )
- czy naprawdę przekazuje TRIM do systemu operacyjnego hosta, czy po prostu wygląda?
źródło
Odpowiedzi:
--discard
opcje określa, żevdi
obraz zostanie zmniejszony w odpowiedzi natrim
polecenie systemu operacyjnego gościa. Muszą być spełnione następujące wymagania:Oczywiście gościnny system operacyjny musi być skonfigurowany do wydawania
trim
poleceń, zazwyczaj oznacza to, że system operacyjny gościa musi myśleć, że dysk jest dyskiem SSD. Ext4 obsługuje-o discard
flagę mount; OSX prawdopodobnie wymaga dodatkowych ustawień, ponieważ domyślnie tylko dyski SSD dostarczane przez Apple są wydawane . Windows powinien automatycznie wykrywać i obsługiwać dyski SSD co najmniej w wersjach 7 i 8, nie jestem pewien, czy wykrycie nastąpi w czasie instalacji czy uruchamiania. Sterownik Linux exFAT (dzięki uprzejmości Samsunga) obsługuje polecenie odrzuć . Nie jest jasne, czy implementacja exFAT przez Microsoft obsługuje to samo, mimo że system plików został zaprojektowany dla Flasha.Alternatywnie istnieją metody ad hoc do wydania
trim
, np.fstrim
Polecenie Linux , częśćutil-linux
pakietu.Wcześniejsze rozwiązania wymagały od użytkownika zerowania nieużywanych obszarów, np. Jawnego używania
zerofree
i kompaktowania dysku (zakładam, że jest to możliwe tylko wtedy, gdy vm jest offline).źródło
btrfs balance
naprawdę pomaga w tworzeniu jak największej liczby przycinanych regionów.Ponieważ jest to najlepszy wynik w Google, wyjaśnię nieco inne odpowiedzi, nawet jeśli jest to stary post. W rzeczywistości możliwe jest uruchomienie TRIM w tym sensie, że nieużywane bloki wirtualne w systemie plików gościa mogą mieć odpowiadające fizyczne bloki pamięci flash oznaczone jako nieużywane, aby lepiej wykorzystać pamięć flash. Kawałki są nawet obecne w innych odpowiedziach i komentarzach.
Po pierwsze, host musi być skonfigurowany tak, aby wolne miejsce było TRIM'ed. Możesz zamontować system plików z opcją -o discard lub możesz regularnie uruchamiać fstrim na systemie plików za pomocą crona. Wolę ten drugi, ponieważ pierwsza opcja może doprowadzić do zablokowania systemu podczas usuwania wielu plików jednocześnie.
Używany format dysku musi mieć dynamiczny rozmiar VDI podczas zapisywania qarma.
Upewnij się, że nonrotational = "true" discard = "true" są ustawione w pliku .vbox, jak opisano w OP.
Następnie włącz TRIM w systemie-gościu w normalny sposób. W Linuksie ponownie polecam zadanie cron z uruchomionym fstrim. Jest to prawdopodobnie jeszcze ważniejsze w tym przypadku, ponieważ koszt wykonania TRIM na obrazie dysku wirtualnego jest znacznie wyższy niż na fizycznym dysku SSD, ponieważ dane są przenoszone w celu zmniejszenia obrazu.
Teraz, ponieważ obraz dysku jest regularnie kompaktowany, zajmie to tylko tyle, ile zajmie faktyczne miejsce, a także około 1 MB nadwyżki bloku podczas pisania qarma. To znowu oznacza, że wolne miejsce zostanie TRIM'ed na dysku SSD hosta.
źródło
VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --nonrotational on --discard on