解決策 1:
<ブロック引用>RA 設定は仮想ブロック デバイス チェーンにどのように渡されますか?
場合によります。 Xen domU 内にいて、RA=256 であると仮定しましょう。 /dev/xvda1 は、/dev/dm1 の下に表示される dom0 の実際の LV です。したがって、 RA(domU(/dev/xvda1)) =256 および RA(dom0(/dev/dm1)) =512 になります。これにより、dom0 カーネルが domU のカーネルとは別の RA で /dev/dm1 にアクセスするようになります。シンプルです。
/dev/md0(/dev/sda1,/dev/sda2)の状況を想定すると、別の状況が発生します。
blockdev --report | grep sda
rw **512** 512 4096 0 1500301910016 /dev/sda
rw **512** 512 4096 2048 1072693248 /dev/sda1
rw **512** 512 4096 2097152 1499227750400 /dev/sda2
blockdev --setra 256 /dev/sda1
blockdev --report | grep sda
rw **256** 512 4096 0 1500301910016 /dev/sda
rw **256** 512 4096 2048 1072693248 /dev/sda1
rw **256** 512 4096 2097152 1499227750400 /dev/sda2
/dev/md0 RA を設定しても、/dev/sdX ブロックデバイスには影響しません。
rw **256** 512 4096 2048 1072693248 /dev/sda1
rw **256** 512 4096 2097152 1499227750400 /dev/sda2
rw **512** 512 4096 0 1072627712 /dev/md0
したがって、一般的に、カーネルは実際に設定されている方法でブロックデバイスにアクセスします。 1 つの論理ボリュームは、RAID (その一部である) またはデバイスマッパー デバイスを介してアクセスでき、それぞれが尊重される別の RA を使用します。
したがって、答えは - RA 設定は IMHO であり、ブロックデバイス チェーンに渡されませんが、最上位デバイスの RA 設定が何であれ、構成デバイスにアクセスするために使用されます
<ブロック引用>dm-0 は、実際にアクセスしているトップ レベルのブロック デバイスであるため、すべてに優先しますか?
「切り札」による深い伝播を意味する場合 - 以前のコメントによると、システム内のデバイスごとに異なる RA を使用している可能性があると思います。
<ブロック引用>lvchange -r は dm-0 デバイスに影響を与え、ここには表示されませんか?
はい、しかしこれは特殊なケースです。 LVM の /dev/vg0/blockdevice である /dev/dm0 があるとします。もしそうなら:
lvchange -r 512 /dev/vg0/blockdevice
カーネル アクセスに関しては、/dev/dm0 と /dev/vg0/blockdevice はまったく同じブロック デバイスであるため、/dev/dm0 も変更されます。
しかし、/dev/vg0/blockdevice が、それを利用している Xen domU の /dev/dm0 および /dev/xvda1 と同じであると仮定しましょう。 /dev/xvda1 の RA を設定すると有効になりますが、dom0 にはまだ独自の RA があることがわかります。
<ブロック引用>仮想デバイスの実際の先読み値を決定するために、上記のセクター サイズに相当するものを使用します:
私は通常、さまざまな値を試して hdparm でテストすることで RA を発見します。
<ブロック引用>RAID のストライプ サイズ (md0 用)?
上と同じ。
<ブロック引用>FS は役割を果たしますか (主に ext4 と XFS に興味があります)?
確かに - これは非常に大きなトピックです。ここから始めることをお勧めします http://archives.postgresql.org/pgsql-performance/2008-09/msg00141.php
解決策 2:
答えを説明するのが難しいので、例で説明します。このために、3 つのブロック デバイスがあり、標準セクターを想定して RA を 4 (4*512 バイト) に設定するとします。 3 つのディスクを使用して RAID-5 スキームを使用すると言う場合、一意のディスク上のストライプに触れた読み取りでも、最初にブロック デバイス RA を設定した係数によって RA が複合化されます。したがって、読み取りが 3 つのディスクすべてに正確にまたがる場合、有効な RA は 12*512 バイトになります。これは、例えばMDまたはLVMなどの様々なレベルでRAを設定することによって悪化する可能性がある。経験則として、アプリが RA の恩恵を受ける場合、可能な限り最上位のレイヤーに設定して、不必要に RA を合成しないようにします。次に、ファイルシステムをセクター 2049 で開始し、各セクターの開始点を 8 で割り切れる数にオフセットします。あなたが求めていることとはかなりずれているかもしれませんが、これは私の 2¢ です。