Debian guest on Windows host using discard/TRIM.
Nie jest to bezpośrednia odpowiedź sama w sobie, ponieważ zajmuję się problemem, a nie pytaniem. Zamiast okresowo kompresować obraz, rozwiązanie to wykorzystuje odrzutnik do automatycznego usuwania nieużywanych bloków w obrazie dysku maszyny wirtualnej hosta.
Rozwiązanie to wymaga systemu plików gościa, który obsługuje ciągły TRIM. Wiki Arch Linux posiada listę systemów plików obsługujących operacje TRIM .
FDE i cryptoroot nie są specjalnie uwzględnione, ponieważ istnieją obawy związane z bezpieczeństwem i żadne inne rozwiązanie tego problemu nie pozwoliłoby również na kompaktowanie. Wiki Arch Linuxa zawiera informacje o TRIM i urządzeniach dm-crypt .
Teoretycznie będzie to działać dla wszystkich gości Linuksa na hostach VBoxa korzystających z pamięci masowej VDI.
Konfiguracja hosta
Przy wyjściu VBoxa i braku uruchomionych maszyn wirtualnych, dodaj obsługę dysków poprzez ustawienie zarówno discard
jak i nonrotational
dla każdego dysku w pliku konfiguracyjnym dla maszyny wirtualnej. W tym momencie discard
nie znajduje się w graficznym interfejsie użytkownika, ale nonrotational
jest wyświetlany jako pole wyboru “Solid-state Drive”. (ref: vbox forums, discard support )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Boot the VM up, and verify that TRIM support is enabled:
sudo hdparm -I /dev/sda | grep TRIM
Guest Configuration
If LVM is in use, change the discard setting in /etc/lvm/lvm.conf
. (ref: debian wiki, lvm.conf example )
devices {
...
issue_discards = 1
}
In fstab, add the discard
option to the filesystems you wish to auto-discard (ref: debian wiki, fstab example )
UUID=8db6787f-1e82-42d8-b39f-8b7491a0523c / ext4 discard,errors=remount-ro 0 1
UUID=70bfca92-8454-4777-9d87-a7face32b7e7 /build ext4 discard,errors=remount-ro,noatime 0 1
Remount the filesystems to have them pick up their new options.
sudo mount -o remount /
sudo mount -o remount /build
Ręczne przycinanie wolnych bloków za pomocą fstrim
. fstrim
używa zamontowanego systemu plików, nie urządzenia blokującego. Zamiast ustawiać ciągły odrzut w fstab
, można to zrobić na cotygodniowym cronie. (Cotygodniowy cron jest zalecany dla fizycznych dysków SSD, które mogą mieć wątpliwe wsparcie dla TRIM, ale nie jest to istotne w tym przypadku, ponieważ podstawowe dyski SSD są obsługiwane przez system operacyjny hosta. patrz: ostrzeżenie o trymie ssd ).
fstrim /
fstrim /build
W tym momencie rozmiar systemów plików wewnątrz maszyny wirtualnej i rozmiar obrazów maszyny wirtualnej powinien być dość zbliżony do wartości.
Testowane z:
- Guest1: Debian 8.7, jądro: linux 4.8 grsec z backportów, system plików: ext4
- Guest2: Debian 9 RC2, jądro: linux 4.9, system plików: ext4
- Host1: VBox 5.1.14, Win7, image fmt: VDI
- Host2: VBox 5.1.14, Win8.1, obrazek fmt: VDI