Red Hat Training

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

23.2. 사용자 공간 액세스

항상 올바르게 정렬되고 크기가 지정된 I/O를 사용해야 합니다. 이는 직접 I/O 액세스에 특히 중요합니다. 직접 I/O는 logical_block_size 경계 및 logical_block_size 의 복수에 맞아야 합니다.
네이티브 4K 장치(예: logical_block_size 는 4K)를 사용하는 경우 애플리케이션이 장치의 logical_block_size 를 여러 개에서 직접 I/O를 수행하는 것이 중요합니다. 즉, 4k 정렬 I/O 대신 512바이트 맞춤 I/O를 수행하는 기본 4K 장치로 애플리케이션이 실패합니다.
이를 방지하려면 애플리케이션에서 적절한 I/O 정렬 및 크기를 사용하도록 장치의 I/O 매개 변수를 참조해야 합니다. 앞에서 언급했듯이, I/O 매개변수는 sysfs 및 블록 장치 ioctl 인터페이스를 통해 노출됩니다.
자세한 내용은 man libblkid 를 참조하십시오. 이 도움말 페이지는 libblkid-devel 패키지에서 제공합니다.

23.2.1. sysfs 인터페이스

  • /sys/block/disk/alignment_offset
    또는
    /sys/block/disk/partition/alignment_offset
    참고
    파일 위치는 디스크가 물리적 디스크인지(로컬 디스크, 로컬 RAID 또는 다중 경로 LUN)인지에 따라 다릅니다. 첫 번째 파일 위치는 물리 디스크에 적용되고 두 번째 파일 위치는 가상 디스크에 적용됩니다. 그 이유는 virtio-blk가 항상 파티션의 정렬 값을 보고하기 때문입니다. 물리 디스크는 정렬 값을 보고하거나 보고하지 않을 수 있습니다.
  • /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
커널은 I/O 매개변수 정보를 제공하지 않는 "레거시" 장치에 대한 이러한 sysfs 속성을 계속 내보냅니다. 예를 들면 다음과 같습니다.

예 23.1. sysfs 인터페이스

alignment_offset:    0
physical_block_size: 512
logical_block_size:  512
minimum_io_size:     512
optimal_io_size:     0

23.2.2. 블록 장치 ioctls

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