niedziela, 21 października 2018

FSTRIM w Linuxie, KVM i gościach

W czym rzecz?

Mam dwa hosty KVMowe, na których pędzam rożne maszyny wirualne. Jeden z tych hostów to laptop, który z przyczyn oczywistych, jest poszyfrowany LUKSem. 
I od niego się wysztko zaczęło - używam go już od około 3 lat, no i ma dysk SSD. Ostatnio zaczęły mu się ostre zacięcia przy zapisach trwające nawet po kilka sekund. Po odrobinie googlania doszedłem do wniosku, że to pewnie trimowanie SSD. No i zacząłem borować temat, kikla razy się nawet od tego odbiłem - niby wszystko miałem a nie działało. Aż w końcu trafiłem na wyczerpujący artykuł. Nie będę tu przepisywał cudzej treści tylko ją zacytuję/zalinkuję.

Drugi problem jaki zauważyłem, to zajętość miejsca w obrazach dysków (używam cienkich, ale nie "sparse" qcow2). Otóż po jakimś czasie te obrazy wcale nie są takie cienkie wystarczy, że zrobię "dnf system-upgrade" na wirtualnej fedorze i już jest nadmuchana o dodatkowe 10 GiB. Windows Update robi podobne fiki-miki. 

Czyli, żeby trimować od maszyny wirtualnej, po dysk SSD hosta, trzeba przejść przez klika pięter stosu IO:



A konkretnie?

LUKS

Konkretnie, to trzeba zacząć od końca, czyli od crypttab'a na hoscie. Oczywiście jeżeli dysk hosta jest poszyfrowany, co gorąco polecam zwłaszcza dla laptopów. LUKS na Intelach pokazujących w /proc/cpuinfo flagę AES nie boli: i tak będzie sprzętowy.
U mnie zaszyfrowany jest cały dysk i wygląda to tak (lsblk):

NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0   477G  0 disk 
├─sda1                                          8:1    0   500M  0 part  /boot
└─sda2                                          8:2    0 476,5G  0 part 
  └─luks-157fae7b-545b-4348-a02c-1b8a38110e33 253:0    0 476,5G  0 crypt
    ├─turing-root                             253:1    0    50G  0 lvm   /
    ├─turing-swap                             253:2    0   7,7G  0 lvm   [SWAP]
    └─turing-home                             253:3    0 418,8G  0 lvm   /home
sr0                                            11:0    1  1024M  0 rom  


Wystarczy zatem do /etc/crypttab dopisać to co poniżej zaznaczyłem na czerwono:

luks-157fae7b-545b-4348-a02c-1b8a38110e33 UUID=157fae7b-545b-4348-a02c-1b8a38110e33 none discard