01 Jan 0001, 00:00

Share

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) !