第23章 ストレージ I/O アライメントとサイズ
SCSI および ATA 規格に対する最近の機能拡張により、ストレージデバイスが優先される(必要な場合は必須)の I/O 調整 と I/O サイズ を示すことができます。この情報は、物理セクターサイズを 512 バイトから 4k バイトに増やす新しいディスクドライブで特に便利です。この情報は、RAID デバイスにも利点があります。この場合、チャンクサイズとストライプサイズがパフォーマンスに影響を及ぼす可能性があります。
Linux I/O スタックが強化され、ベンダー提供の I/O 調整と I/O サイズ情報を処理し、ストレージ管理ツール(parted、lvm、mkfs など)を処理し、 データの配置とアクセスを最適化できるようになりました。レガシーデバイスが I/O アライメントとサイズデータをエクスポートしていない場合は、Red Hat Enterprise Linux 6 のストレージ管理ツールは伝統的に 4k (または 2 の累乗) の境界に I/O を調整します。これにより、必要な I/O 調整およびサイズを指定しなくても、4k-sector デバイスが正しく動作できるようになります。
デバイスから取得したオペレーティングシステムに関する情報を確認するには、「ユーザー空間アクセス」 を参照してください。このデータは、データの配置を決定するためにストレージ管理ツールによって使用されます。
Red Hat Enterprise Linux 7 の IO スケジューラーが変更されました。デフォルトの IO スケジューラーは Deadline (SATA ドライブを除く)になりました。CFQ は、SATA ドライブのデフォルト IO スケジューラーです。ストレージの速度を短縮するために、Deadline outperforms 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 6の I/O スタックは、ブロックデバイスの最初が基礎となる物理アライメントからオフセットである場合に alignment_offset がアジュアルされた境界ですべてのデータ領域の起動を試みます。
また、ストレージベンダーは、デバイスのランダム I/O (minimum_io_size) やストリーミング I/O (optimal_io_size) に適した最小単位に関する I/O ヒント を提供することができます。たとえば、minimum_io_size および optimal_io_size は、それぞれ RAID デバイスのチャンクサイズとストライプのサイズに対応する場合があります。