22.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_offsetou/sys/block/disk
/partition
/alignment_offsetNote
L'emplacement du fichier dépendra si le disque est un disque physique (local, RAID local ou LUN multivoies) ou un disque virtuel. Le premier emplacement s'applique aux disques physiques alors que le second s'applique aux disques virtuels. La raison pour ceci est que virtio-blk rapportera toujours une valeur d'alignement à la partition. Les disques physiques rapporteront ou non un valeur d'alignement. - /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 22.1. Interface sysfs
alignment_offset: 0 physical_block_size: 512 logical_block_size: 512 minimum_io_size: 512 optimal_io_size: 0