Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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_offset
    ou
    /sys/block/disk/partition/alignment_offset

    Note

    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

ioctls du périphérique bloc

  • BLKALIGNOFF: alignment_offset
  • BLKPBSZGET : physical_block_size
  • BLKSSZGET : logical_block_size
  • BLKIOMIN : minimum_io_size
  • BLKIOOPT : optimal_io_size