J'ai une LUKS
partition avec /dev/sda1
laquelle je luksOpen --allow-discards
:
cryptsetup --allow-discards luksOpen /dev/sda1 root
Je monte ensuite le ext4
système de fichiers avec l' discard
option:
grep /dev/mapper/root /proc/mounts
/dev/mapper/root / ext4 ro,relatime,block_validity,discard,delalloc,barrier,user_xattr,acl 0 0
Je coupe ensuite l'espace libre sur la partition montée:
fstrim -v /
avec df
, je vois /
a 80% d'espace libre. Cela signifie que sur /dev/sda1
80% du disque sont des zéros binaires.
Si je clone l'image avec cat
cat /dev/sda1 > sda1.img
et compresser l'image avec xz
, je m'attendrais à ce que tous les zéros du disque soient compressés. Étant donné que les 20% des données sur le disque sont cryptées, elles devraient ressembler à des données aléatoires et être incompressibles. Par conséquent, l'image compressée xz doit être approximative. 20% de la taille brute.
Cependant, l'image compressée xz résultante a approximativement la même taille que l'original brut.
Mon raisonnement est-il correct?
Pourquoi ma théorie ne se traduit-elle pas en pratique?
dmsetup table | grep allow_discards
Réponses:
Votre logique n'est pas incorrecte. Mais il n'est valable que si certaines conditions sont remplies.
La commande TRIM , comme spécifié dans le jeu de commandes ATA , peut ou non mettre à zéro les secteurs pour lesquels elle est émise.
En fait, la norme se concentre sur les données à retourner après la publication de TRIM 1 :
Ainsi, ce que votre appareil retourne après
fstrim
dépend des fonctionnalités qu'il implémente. À moins qu'il ne prenne en charge RZAT, l'hypothèse selon laquelle les données lues à partir d'un périphérique découpé seront uniquement des zéros ne tient pas.Vous pouvez utiliser
hdparm
pour vérifier cela:J'ai effectué quelques tests en utilisant deux SSD,
sda
etsdb
. Même fabricant, différents modèles, avec une conformité ATA différente:Les deux SSD ont un support différent pour TRIM:
Je peux confirmer qu'après la publication
fstrim
, le lecteur prenant en charge les "Zéros de lecture déterministes après TRIM" (RZAT) semble avoir mis à zéro la partition concernée presque entièrement. Inversement, l'autre lecteur semble avoir mis à zéro (ou autrement remplacé par un modèle hautement compressible) seulement une partie mineure de l'espace libéré.1 Source en ligne: INCITS 529: Technologies de l'information - Jeu de commandes ATA / ATAPI - 4 (ACS-4)
Remarque sur les tests:
Comme l'a souligné frostschutz dans les commentaires, une lecture après
fstrim
peut renvoyer des données à partir du cache du système d'exploitation, et non à partir du périphérique coupé. C'est, par exemple, ce qui s'est passé dans cette qustion .(Je voudrais également souligner cette réponse à la même question pour une méthode alternative pour tester TRIM).
Entre
fstrim
et une lecture ultérieure, vous devrez peut-être supprimer le cache, par exemple avec:Selon la taille de la partition avec laquelle vous jouez, ne pas supprimer le cache peut suffire à l'échec de vos tests.
Remarque sur votre configuration:
L'
discard
option de montage permet un TRIM continu, c'est-à-dire à tout moment où les fichiers sont supprimés. Il n'est pas requis parfstrim
. En effet, le TRIM à la demande et le TRIM continu sont deux façons distinctes de gérer les opérations de TRIM. Pour plus d'informations, je voudrais indiquer Solid State Drive sur le Wiki Arch Linux, qui a une couverture détaillée de cette question.la source
Le SSD a-t-il une couche de chiffrement matériel intégrée? S'il en a un, alors les blocs TRIMmed peuvent être tous des zéros (ou peut-être tous) au niveau du matériel brut, mais puisque l'ordinateur les voit à travers la couche de cryptage, ils apparaîtront comme du charabia pseudo-aléatoire après avoir passé le tout -Zéro bloque le bloc à travers le processus de décryptage.
Une telle couche de chiffrement matériel aurait certains avantages:
la source
Le rejet n'est pas le même que le zéro.
Si vous voulez mettre à zéro avec cryptsetup, vous pouvez réduire le fs puis le bloc de cryptage puis dd l'espace de volume inutilisé.
Si vous voulez savoir si la garniture a fonctionné, un test de vitesse devrait être un indicateur après une utilisation intensive.
https://linux.die.net/man/8/fstrim https://en.m.wikipedia.org/wiki/Trim_(computing)
la source
df
signaler un espace libre n'implique pas un espace mis à zéro.trim
indique au périphérique de stockage que les blocs ne sont pas utilisés. Je ne pense pas que cela les zéros.la source