Řešení 1:
Jak se nastavení RA přenese do řetězce virtuálních blokových zařízení?
Záleží. Předpokládejme, že jste uvnitř Xen domU a máte RA=256. Váš /dev/xvda1 je skutečný LV na dom0 viditelném pod /dev/dm1. Takže máte RA(domU(/dev/xvda1)) =256 a RA(dom0(/dev/dm1)) =512 . Bude to mít takový účinek, že jádro dom0 bude přistupovat k /dev/dm1 s jiným RA než jádro domU. Jak jednoduché.
Další situace nastane, pokud předpokládáme situaci /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
Nastavení /dev/md0 RA neovlivní /dev/sdX blockdevices.
rw **256** 512 4096 2048 1072693248 /dev/sda1
rw **256** 512 4096 2097152 1499227750400 /dev/sda2
rw **512** 512 4096 0 1072627712 /dev/md0
Takže obecně podle mého názoru jádro přistupuje k blockdevice způsobem, který je skutečně nastaven. K jednomu logickému svazku lze přistupovat přes RAID (jehož je součástí) nebo zařízení mapující zařízení a každý s jiným RA, který bude respektován.
Odpověď tedy zní – nastavení RA je IMHO nepředáváno v řetězci blokových zařízení, ale bez ohledu na to, jaké je nastavení RA zařízení nejvyšší úrovně, bude použito pro přístup k základním zařízením
Překoná dm-0 vše, protože je to blokové zařízení nejvyšší úrovně, ke kterému skutečně přistupujete?
Pokud máte na mysli hluboké šíření slovem "trumf all" - podle mého předchozího komentáře si myslím, že můžete mít různé RA pro různá zařízení v systému.
Měl by lvchange -r dopad na zařízení dm-0 a nezobrazil by se zde?
Ano, ale toto je konkrétní případ. Předpokládejme, že máme /dev/dm0, což je /dev/vg0/blockdevice LVM. Pokud tak učiníte:
lvchange -r 512 /dev/vg0/blockdevice
/dev/dm0 se také změní, protože /dev/dm0 a /dev/vg0/blockdevice jsou přesně stejné blokové zařízení, pokud jde o přístup k jádru.
Předpokládejme však, že /dev/vg0/blockdevice je stejný jako /dev/dm0 a /dev/xvda1 v Xen domU, který jej používá. Nastavení RA pro /dev/xvda1 se projeví, ale dom0 uvidí, že má stále vlastní RA.
Co používáte, ekvivalentní velikosti sektoru výše k určení skutečné hodnoty předčítání pro virtuální zařízení:
Obvykle objevuji RA experimentováním s různými hodnotami a testováním pomocí hdparm.
Velikost pruhu pole RAID (pro md0)?
Stejné jako výše.
Hraje v tom roli FS (primárně mě zajímá ext4 a XFS)?
Jistě – toto je velmi velké téma. Doporučuji začít zde http://archives.postgresql.org/pgsql-performance/2008-09/msg00141.php
Řešení 2:
Znát odpověď obtížněji vysvětlitelnou, takže to učiním v příkladu. Řekněme, že kvůli tomu máte 3 bloková zařízení a nastavíte RA na řekněme 4 (4 * 512 bajtů) za předpokladu standardního sektoru. Pokud byste řekli použít schéma RAID-5 s použitím 3 disků, každé čtení, které by se i jen dotklo proužku na jedinečném disku, by zvýšilo RA o faktor, na který jste původně nastavili RA blokového zařízení. Pokud by tedy vaše čtení zabíralo přesně všechny 3 disky, pak by vaše efektivní RA byla 12*512 bajtů. K tomu může přispívat settin RA v různých úrovních, např. MD nebo LVM. Obecně platí, že pokud moje aplikace využívá RA, nastavím ji na nejvyšší možnou vrstvu, abych RA zbytečně neskládal. Potom spustím souborový systém na sektoru 2049 a posunu každý začátek sektoru na číslo dělitelné 8. Možná jsem úplně mimo, na co se ptáte, ale toto jsou moje 2¢.