23.2. Accès à l'espace utilisateur
Veuillez toujours prendre soin d'utiliser des E/S de taille et d'alignement corrects. Ceci est particulièrement important pour l'accès aux E/S directes. Les E/S directes doivent être alignées sur une limite
logical_block_size
, et sur des multiples de logical_block_size
.
Avec les périphériques 4K natifs (par exemple,
logical_block_size
font 4K) il est désormais critique que les applications effectuent des E/S directes multiples de logical_block_size
. Ceci signifie que les applications échoueront avec les périphériques 4k qui effectuent des E/S alignées sur 512 octets plutôt que sur des E/S alignées 4k.
Pour éviter ceci, une application doit consulter les paramètres d'E/S d'un périphérique afin de s'assurer qu'il utilise l'alignement et la taille des E/S corrects. Comme mentionné ultérieurement, les paramètres d'E/S sont exposés via les interfaces
sysfs
et ioctl
de périphérique bloc.
Pour obtenir plus de détails, veuillez consulter
man libblkid
. Cette page man
est fournie par le paquet libblkid-devel
.
Interface sysfs
- /sys/block/
disk
/alignment_offset - /sys/block/
disk
/partition
/alignment_offset - /sys/block/
disk
/queue/physical_block_size - /sys/block/
disk
/queue/logical_block_size - /sys/block/
disk
/queue/minimum_io_size - /sys/block/
disk
/queue/optimal_io_size
Le noyau exportera toujours ces attributs
sysfs
pour les périphériques « hérités » qui ne fournissent pas d'informations sur les paramètres d'E/S, par exemple :
Exemple 23.1. Interface sysfs
alignment_offset: 0 physical_block_size: 512 logical_block_size: 512 minimum_io_size: 512 optimal_io_size: 0