Nel caso di più livelli (unità fisiche -> md -> dm -> lvm), come interagiscono gli scheduler, le impostazioni di lettura e altre impostazioni del disco?
Immagina di avere diversi dischi (/ dev / sda - / dev / sdd) tutti parte di un dispositivo RAID software (/ dev / md0) creato con mdadm. Ogni dispositivo (compresi i dischi fisici e / dev / md0) ha le proprie impostazioni per lo scheduler IO ( modificato in questo modo ) e readahead ( modificato usando blockdev ). Quando lanci cose come dm (crypto) e LVM aggiungi ancora più livelli con le loro impostazioni.
Ad esempio, se il dispositivo fisico ha una lettura davanti a 128 blocchi e il RAID ha una lettura di 64 blocchi, che viene onorato quando faccio una lettura da / dev / md0? Il driver md tenta una lettura a 64 blocchi che il driver del dispositivo fisico traduce in una lettura a 128 blocchi? Oppure il readahead RAID "passa" al dispositivo sottostante, risultando in un blocco a 64?
Lo stesso tipo di domanda vale per gli scheduler? Devo preoccuparmi di più livelli di scheduler IO e di come interagiscono oppure il / dev / md0 ha la precedenza su quelli che pianificano?
Nei miei tentativi di rispondere a questa domanda, ho raccolto alcuni dati interessanti su programmatori e strumenti che potrebbero aiutare a capire questo:
/sys/block/md0/queue/scheduler
sui miei sistemi, ma l'unica scelta ènone
.