Red Hat Training

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

23.4. I/O パラメーターのスタッキング

Linux I/O スタックのすべてのレイヤーは、さまざまな I/O パラメーターをスタックに伝播するように設計されています。レイヤーが属性を使用するか、多くのデバイスを集約する場合、レイヤーは適切な I/O パラメーターを公開して、上位レイヤーのデバイスまたはツールが変換時にストレージを正確に表示できるようにする必要があります。実用例を以下に示します。
  • I/O スタックの 1 つのレイヤーのみがゼロ以外のalignment_offsetに調整する必要があります。レイヤーが適宜調整すると、alignment_offsetがゼロのデバイスがエクスポートされます。
  • LVM で作成されたストライプ化デバイスマッパー (DM) デバイスは、ストライプ数 (ディスク数) とユーザーが指定したチャンクサイズを基準にして、minimum_io_sizeoptimal_io_sizeをエクスポートする必要があります。
Red Hat Enterprise Linux 7 では、デバイスマッパーおよび Software Raid (MD) デバイスドライバーを使用して、異なる I/O パラメーターを持つデバイスを任意に組み合わせることができます。カーネルのブロック層は、個々のデバイスの I/O パラメーターを合理的に組み合わせようとします。カーネルは、異種デバイスの組み合わせを妨げません。ただし、そうすることに伴うリスクに注意してください。
たとえば、512 バイトのデバイスと 4K デバイスを組み合わせて、logical_block_size が 4K の 1 つの論理 DM にすることができます。このようなハイブリッドデバイスに階層化されたファイルシステムは、4K がアトミックに書き込まれることを想定していますが、実際には、512 バイトのデバイスに発行されると 8 つの論理ブロックアドレスにまたがることになります。より高いレベルの DM デバイスに 4K logical_block_size を使用すると、システムクラッシュがある場合に、512 バイトデバイスへの部分的な書き込みが可能になります。
複数のデバイスの I/O パラメーターを組み合わせて競合が発生すると、ブロック層が、デバイスが部分的な書き込みの影響を受けやすく、かつ/またはアラインが正しくないという警告を発することがあります。