Red Hat Training

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

第23章 ストレージ I/O アライメントとサイズ

最近の SCSI 規格および ATA 規格の強化により、ストレージデバイスには推奨される (場合によっては必須の) I/O アライメント および I/O サイズ を示すことができるようになりました。この情報は、物理セクターのサイズを 512 バイトから 4k バイトに増やす新しいディスクドライブで特に役立ちます。この情報は、チャンクサイズやストライプサイズがパフォーマンスに影響を与える RAID デバイスにも役立ちます。
Linux I/O スタックは、ベンダー提供の I/O アライメントおよび I/O サイズ情報を処理するように拡張され、ストレージ管理ツール ( partedlvmmkfs.* など) がデータの配置とアクセスを最適化できるようになりました。レガシーデバイスが I/O のアラインメントとサイズのデータをエクスポートしていない場合、Red Hat Enterprise Linux 7 のストレージ管理ツールは、4k (またはそれ以上の 2 の累乗) 境界で I/O を控えめに調整します。これにより、必要/推奨される I/O アライメントやサイズが記載されていなくても、4k セクターデバイスが正しく動作するようになります。
オペレーティングシステムがデバイスから取得した情報を特定する方法は、「ユーザー空間アクセス」 を参照してください。このデータは、その後にストレージ管理ツールによってデータ配置を決定するために使用されます。
Red Hat Enterprise Linux 7 では IO スケジューラーが変更されました。SATA ドライブを除き、デフォルトの IO スケジューラーが期限になりました。CFQ は、SATA ドライブのデフォルトの IO スケジューラーです。ストレージを高速化するために、Deadline は CFQ を上回り、使用時には特別なチューニングなしでパフォーマンスが向上します。
一部のディスク (SAS ローテーションディスクなど) ではデフォルトが適切でない場合は、IO スケジューラーを CFQ に変更します。このインスタンスはワークロードによって異なります。

23.1. ストレージアクセスパラメーター

オペレーティングシステムは、次の情報を使用して I/O アライメントとサイズを判断します。
physical_block_size
デバイスが動作できる最小の内部ユニット
logical_block_size
デバイス上の場所指定に外部で使用される
alignment_offset
基礎となる物理的なアライメントのオフセットとなる Linux ブロックデバイス (パーティション/MD/LVM デバイス) の先頭部分のバイト数
minimum_io_size
ランダムな I/O に対して推奨のデバイス最小ユニット
optimal_io_size
I/O ストリーミングで推奨されるデバイスのユニット
たとえば、特定の 4K セクターデバイスは内部で 4K physical_block_size を使用しますが、より詳細な 512 バイトの logical_block_size を Linux に公開する場合があります。この不一致により、I/O がずれる可能性があります。これに対処するため、Red Hat Enterprise Linux 7 の I/O スタックは、ブロックデバイスの開始が基本となる物理アラインメントからオフセットされている場合に、alignment_offset を考慮に入れて、自然に整列された境界 (physical_block_size) ですべてのデータ領域の起動を試みます。
また、ストレージベンダーは、デバイスのランダム I/O (minimum_io_size) やストリーミング I/O (optimal_io_size) に適した最小単位に関する I/O ヒント を提供することができます。たとえば、minimum_io_size および optimal_io_size は、それぞれ RAID デバイスのチャンクサイズとストライプのサイズに対応する場合があります。