Wie interagieren die Scheduler, Readahead-Einstellungen und andere Festplatteneinstellungen bei mehreren Ebenen (physische Laufwerke -> MD -> DM -> LVM)?
Stellen Sie sich vor, Sie haben mehrere Festplatten (/ dev / sda - / dev / sdd), die alle Teil eines mit mdadm erstellten Software-RAID-Geräts (/ dev / md0) sind. Jedes Gerät (einschließlich physischer Datenträger und / dev / md0) verfügt über eine eigene Einstellung für den E / A-Scheduler ( wie folgt geändert ) und den Readahead ( mit blockdev geändert ). Wenn Sie Dinge wie dm (Krypto) und LVM einfügen, fügen Sie noch mehr Ebenen mit ihren eigenen Einstellungen hinzu.
Wenn das physische Gerät zum Beispiel einen Lesevorgang von 128 Blöcken und das RAID einen Lesevorgang von 64 Blöcken hat, wird dies gewürdigt, wenn ich aus / dev / md0 lese. Versucht der md-Treiber einen 64-Block-Lesevorgang, den der physische Gerätetreiber dann in einen Lesevorgang von 128 Blöcken übersetzt? Oder "durchläuft" der RAID-Readahead das zugrunde liegende Gerät, was zu einem 64-Block-Lesevorgang führt?
Die gleiche Art von Frage gilt für Scheduler? Muss ich mir Gedanken über die Interaktion mehrerer Ebenen von E / A-Schedulern machen oder überschreibt / dev / md0 die zugrunde liegenden Scheduler?
Bei meinen Versuchen, diese Frage zu beantworten, habe ich einige interessante Daten zu Schedulern und Tools ausgegraben, die dazu beitragen könnten, dies herauszufinden:
/sys/block/md0/queue/scheduler
auf meinen Systemen, aber die einzige Wahl istnone
.