Mam LUKS
partycję, /dev/sda1
którą IuksOpen z --allow-discards
:
cryptsetup --allow-discards luksOpen /dev/sda1 root
Następnie montuję ext4
system plików z discard
opcją:
grep /dev/mapper/root /proc/mounts
/dev/mapper/root / ext4 ro,relatime,block_validity,discard,delalloc,barrier,user_xattr,acl 0 0
Następnie przycinam wolne miejsce na zamontowanej partycji:
fstrim -v /
z df
, widzę /
ma 80% wolnego miejsca. Oznacza to, że na /dev/sda1
80% dysku są binarne zera.
Jeśli sklonuję obraz za pomocą cat
cat /dev/sda1 > sda1.img
i skompresuj obraz xz
, oczekiwałbym, że wszystkie zera na dysku zostaną skompresowane. Ponieważ 20% danych na dysku jest zaszyfrowanych, powinno wyglądać losowo i być nieskompresowalne. Dlatego obraz skompresowany xz powinien mieć wartość około. 20% surowego rozmiaru.
Jednak wynikowy obraz skompresowany xz ma mniej więcej taki sam rozmiar jak surowy oryginał.
Czy moje rozumowanie jest prawidłowe?
Dlaczego moja teoria nie przekłada się na praktykę?
dmsetup table | grep allow_discards
Odpowiedzi:
Twoja logika nie jest niepoprawna. Ale jest to ważne tylko wtedy, gdy spełnione są pewne warunki.
Polecenie TRIM , jak określono w zestawie poleceń ATA , może, ale nie musi, zerować sektory, przeciwko którym zostało wydane.
W rzeczywistości standard koncentruje się na tym, jakie dane należy zwrócić po wydaniu TRIM 1 :
Zatem to, po co urządzenie powróci,
fstrim
zależy od funkcji, które implementuje. O ile nie obsługuje RZAT, założenie, że dane odczytane z przyciętego urządzenia będą miały tylko zera, nie ma zastosowania.Możesz
hdparm
to sprawdzić:Przeprowadziłem kilka testów przy użyciu dwóch dysków SSD
sda
isdb
. Ten sam producent, różne modele, o różnej zgodności z ATA:Dwa dyski SSD mają różne wsparcie dla TRIM:
Mogę potwierdzić, że po wydaniu
fstrim
dysk obsługujący „Deterministyczny odczyt ZERO po TRIM” (RZAT) wydaje się właściwie zerować daną partycję prawie całkowicie. I odwrotnie, wydaje się, że drugi napęd wyzerował (lub w inny sposób zastąpił go wysoce ściśliwym wzorem) tylko niewielką część uwolnionego miejsca.1 Źródło online: INCITS 529: Informatyka - Zestaw poleceń ATA / ATAPI - 4 (ACS-4)
Uwaga na temat testowania:
Jak zauważył w komentarzach frostschutz , odczyt po
fstrim
może zwrócić dane z pamięci podręcznej systemu operacyjnego, a nie z przyciętego urządzenia. Tak dzieje się na przykład w tym konkursie .(Chciałbym również wskazać tę odpowiedź na to samo pytanie dotyczące alternatywnej metody testowania TRIM).
Pomiędzy
fstrim
i kolejnym odczytem może być konieczne upuszczenie pamięci podręcznej, np .:W zależności od rozmiaru partycji, z którą grasz, nie upuszczenie pamięci podręcznej może wystarczyć do niepowodzenia testów.
Uwaga na temat konfiguracji:
Opcja
discard
montowania włącza ciągłe TRIM, tzn. Za każdym razem, gdy pliki są usuwane. Nie jest to wymagane przezfstrim
. Rzeczywiście, TRIM na żądanie i TRIM ciągły to dwa różne sposoby zarządzania operacjami TRIM. W celu uzyskania dalszych informacji wskazałbym dysk SSD na Wiki Arch Linux, który szczegółowo opisuje tę sprawę.źródło
Czy dysk SSD ma wbudowaną warstwę szyfrowania sprzętowego? Jeśli tak, to bloki TRIMmed mogą być zerami (lub ewentualnie jedynymi) na poziomie sprzętowym, ale ponieważ komputer widzi je przez warstwę szyfrowania, po przejściu wszystkich będą wyglądać jak pseudolosowe bełkoty. -zeroes surowego bloku poprzez proces deszyfrowania.
Taka sprzętowa warstwa szyfrująca miałaby pewne zalety:
źródło
Odrzuć to nie to samo, co zero.
Jeśli chcesz wyzerować za pomocą cryptsetup, możesz zmniejszyć FS, a następnie blok krypt, a następnie dodać niewykorzystane miejsce na woluminie.
Jeśli chcesz wiedzieć, czy trymowanie działało, próba prędkości powinna być wskaźnikiem po intensywnym użytkowaniu.
https://linux.die.net/man/8/fstrim https://en.m.wikipedia.org/wiki/Trim_(computing)
źródło
df
raportowanie wolnego miejsca nie oznacza wyzerowanego miejsca.trim
informuje urządzenie pamięci, że bloki nie są używane. Nie sądzę, że to je zeruje.źródło