W przypadku wielu warstw (dyski fizyczne -> md -> dm -> lvm), w jaki sposób współdziałają harmonogramy, ustawienia readahead i inne ustawienia dysku?
Wyobraź sobie, że masz kilka dysków (/ dev / sda - / dev / sdd), które są częścią programowego urządzenia RAID (/ dev / md0) utworzonego za pomocą mdadm. Każde urządzenie (w tym dyski fizyczne i / dev / md0) ma swoje własne ustawienia dla harmonogramu we / wy ( tak zmienione ) i readahead ( zmienione za pomocą blockdev ). Kiedy dodajesz takie rzeczy jak dm (krypto) i LVM, dodajesz jeszcze więcej warstw z ich własnymi ustawieniami.
Na przykład, jeśli urządzenie fizyczne ma odczyt przed 128 blokami, a RAID ma readahead 64 bloków, co jest honorowane, gdy wykonuję odczyt z / dev / md0? Czy sterownik MD próbuje odczytać 64 bloki, które sterownik fizyczny przekłada następnie na odczyt 128 bloków? Czy może RAID „przepuszcza” do urządzenia bazowego, co powoduje odczyt 64 bloków?
Ten sam rodzaj pytania dotyczy harmonogramów? Czy muszę się martwić wieloma warstwami harmonogramów IO i ich interakcją, czy też / dev / md0 skutecznie zastępuje bazowe harmonogramy?
Próbując odpowiedzieć na to pytanie, wykopałem kilka interesujących danych na temat harmonogramów i narzędzi, które mogą pomóc to rozwiązać:
/sys/block/md0/queue/scheduler
w moich systemach, ale jest tam jedyny wybórnone
.