Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
23.2. ユーザー領域のアクセス
常に正しく調整された正しいサイズの入出力を使用するよう注意してください。とくに、ダイレクトな入出力アクセスの場合には重要となります。ダイレクトな入出力は
logical_block_size
の境界上で、logical_block_size
の倍数単位で調整してください。
ネイティブの 4K デバイス (つまり、
logical_block_size
が 4K という意味) では、アプリケーションがデバイスの logical_block_size
の倍数単位でダイレクトな入出力を行うことが重要となってきます。つまり、4k の調整した入出力ではなく 512 バイトの調整した入出力を行うネイティブな 4k デバイスではアプリケーションの実行は失敗することになります。
これを回避するには、正しい入出力調整とサイズを使用していることを確認するためアプリケーションにデバイスの入出力パラメーターの問い合わせを行わせる必要があります。前述のように入出力のパラメーターは
sysfs
とブロックデバイス ioctl
の両方のインターフェースを介して公開されます。
詳細は
man libblkid
を参照してください。man
ページは libblkid-devel
パッケージで提供しています。
sysfs インターフェース
- /sys/block/
disk
/alignment_offsetまたは/sys/block/disk
/partition
/alignment_offset注記
ファイルの場所は、ディスクが物理ディスク (ローカルディスク、ローカル RAID、またはマルチパス LUN) または仮想ディスクであるかによって異なります。最初のファイルの場所は物理ディスクに適用でき、2 つ目のファイルの場所は仮想ディスクに適用できます。これは、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
カーネルは、入出力のパラメーター情報を提供しないレガシーなデバイス用にこれらの
sysfs
属性をエクスポートします。たとえば、以下のようになります。
例23.1 sysfs
インターフェース
alignment_offset: 0 physical_block_size: 512 logical_block_size: 512 minimum_io_size: 512 optimal_io_size: 0
このページには機械翻訳が使用されている場合があります (詳細はこちら)。