https://securitypitfalls.wordpress.com/tag/hmac/ http://www.unixsheikh.com/articles/battle-testing-data-integrity-verification-with-zfs-btrfs-and-mdadm-dm-integrity.html
Formatage
sudo integritysetup format /dev/sdX
–no-wipe pour ne pas intialiser le disque (il aura donc uniquement des données corrompues)
Si le périphérique est + petit que ~ 250ko, le formatage échouera.
Informations
Infos sur le superblock :
sudo integritysetup dump /dev/sdX
# Retour avec options par défault :
Info for integrity device /dev/sdX.
superblock_version 5
log2_interleave_sectors 15
integrity_tag_size 4
journal_sections 744
provided_data_sectors 484481000
sector_size 512
log2_blocks_per_bitmap 15
flags fix_padding fix_hmac
Infos sur le mapper :
sudo integritysetup status /dev/mapper/sdX_integrity
# Retour avec options par défaut :
/dev/mapper/sdX_integrity is active.
type: INTEGRITY
tag size: 4
integrity: crc32c
device: /dev/sdh
sector size: 512 bytes
interleave sectors: 32768
size: 484481000 sectors
mode: read/write
failures: 2
journal size: 67043328 bytes
journal watermark: 50%
journal commit time: 10000 ms
Ouverture
sudo integritysetup open /dev/sdX sdX_integrity
Le mapper sera créé dans /dev/mapper/
.
Tests taille
### Disque nu
Disk /dev/sdf: 232,89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: CT250MX500SSD1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
### Options par défaut
Disk /dev/mapper/sdf_integr: 231,02 GiB, 248054272000 bytes, 484481000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
On voit une perte de 2005078016 octets, soit environ 2Go, soit environ 0,8% de l’espace du disque.
VITESSE
sudo /sbin/sysctl -w vm.drop_caches=3
entre chaque test READ pour vider le cache, sinon vitesses exubérantes
SSD SATA ACCES DIRECT
Taille de blocs par défaut : 512
WRITE
sync; sudo dd if=/dev/zero of=/dev/sdf count=4096000; sync
4096000+0 enregistrements lus
4096000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 38,4354 s, 54,6 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=1k count=2048000; sync
2048000+0 enregistrements lus
2048000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 35,286 s, 59,4 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=2k count=1024000; sync
1024000+0 enregistrements lus
1024000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 33,5331 s, 62,5 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=4k count=512000; sync
512000+0 enregistrements lus
512000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 9,14775 s, 229 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=8k count=256000; sync
256000+0 enregistrements lus
256000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 8,89703 s, 236 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=1M count=1024; sync
1024+0 enregistrements lus
1024+0 enregistrements écrits
1073741824 octets (1,1 GB, 1,0 GiB) copiés, 4,44295 s, 242 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=4M count=512; sync
512+0 enregistrements lus
512+0 enregistrements écrits
2147483648 octets (2,1 GB, 2,0 GiB) copiés, 8,92596 s, 241 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=8M count=256; sync
256+0 enregistrements lus
256+0 enregistrements écrits
2147483648 octets (2,1 GB, 2,0 GiB) copiés, 9,00292 s, 239 MB/s
sync; sudo dd if=/dev/zero of=/dev/sdf bs=8M count=1024; sync
1024+0 enregistrements lus
1024+0 enregistrements écrits
8589934592 octets (8,6 GB, 8,0 GiB) copiés, 33,2798 s, 258 MB/s
On a une perte massive de performances si bs inférieur à 4k. On a de meilleures performances sur un fichier de 8G que de 2G.
READ
dd if=/dev/sdf of=/dev/null count=4096000
4096000+0 enregistrements lus
4096000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 5,79669 s, 362 MB/s
dd if=/dev/sdf of=/dev/null bs=1k count=2048000
2048000+0 enregistrements lus
2048000+0 enregistrements écrits
2097152000 octets (2,1 GB, 2,0 GiB) copiés, 5,69471 s, 368 MB/s
dd if=/dev/sdf of=/dev/null bs=1M count=2048
2048+0 enregistrements lus
2048+0 enregistrements écrits
2147483648 octets (2,1 GB, 2,0 GiB) copiés, 5,52223 s, 389 MB/s
dd if=/dev/sdf of=/dev/null bs=4M count=512
512+0 enregistrements lus
512+0 enregistrements écrits
2147483648 octets (2,1 GB, 2,0 GiB) copiés, 5,42488 s, 396 MB/s
dd if=/dev/sdf of=/dev/null bs=8M count=256
256+0 enregistrements lus
256+0 enregistrements écrits
2147483648 octets (2,1 GB, 2,0 GiB) copiés, 5,40028 s, 398 MB/s
Légère perte de perf avec des secteurs de 512. Max atteint vers 1M.
SATA, integritysetup default options
WRITE
sync; sudo dd if=/dev/zero of=/dev/mapper/sdf_integr bs=1M count=1024; sync
1024+0 enregistrements lus
1024+0 enregistrements écrits
1073741824 octets (1,1 GB, 1,0 GiB) copiés, 8,40675 s, 128 MB/s
sync; sudo dd if=/dev/zero of=/dev/mapper/sdf_integr bs=4M count=1024; sync
1024+0 enregistrements lus
1024+0 enregistrements écrits
4294967296 octets (4,3 GB, 4,0 GiB) copiés, 35,5758 s, 121 MB/s
READ Erreur de lecture normale car device non initialisé lors de la création
dd if=/dev/mapper/sdf_integr of=/dev/null
dd: erreur de lecture dans '/dev/mapper/sdf_integr': Erreur d'entrée/sortie
8388608+0 enregistrements lus
8388608+0 enregistrements écrits
4294967296 octets (4,3 GB, 4,0 GiB) copiés, 13,783 s, 312 MB/s
dd if=/dev/mapper/sdf_integr of=/dev/null bs=1M count=10240
dd: erreur de lecture dans '/dev/mapper/sdf_integr': Erreur d'entrée/sortie
4096+0 enregistrements lus
4096+0 enregistrements écrits
4294967296 octets (4,3 GB, 4,0 GiB) copiés, 11,4346 s, 376 MB/s
dd if=/dev/mapper/sdf_integr of=/dev/null bs=8M count=1024
dd: erreur de lecture dans '/dev/mapper/sdf_integr': Erreur d'entrée/sortie
512+0 enregistrements lus
512+0 enregistrements écrits
4294967296 octets (4,3 GB, 4,0 GiB) copiés, 11,2318 s, 382 MB/s
C’est + rapide en secteurs de 1M (ou multiple) !