Dans le cas de plusieurs couches (disques physiques -> md -> dm -> lvm), comment les planificateurs, les paramètres de lecture anticipée et les autres paramètres de disque interagissent-ils?
Imaginez que vous disposez de plusieurs disques (/ dev / sda - / dev / sdd) faisant tous partie d'un périphérique RAID logiciel (/ dev / md0) créé avec mdadm. Chaque périphérique (y compris les disques physiques et / dev / md0) a son propre paramètre pour le planificateur d'E / S ( modifié comme tel ) et readahead ( modifié à l'aide de blockdev ). Lorsque vous ajoutez des éléments comme dm (crypto) et LVM, vous ajoutez encore plus de couches avec leurs propres paramètres.
Par exemple, si le périphérique physique a une lecture avant 128 blocs et le RAID a une lecture anticipée de 64 blocs, qui est honoré lorsque je fais une lecture depuis / dev / md0? Le pilote md tente-t-il une lecture de 64 blocs que le pilote de périphérique physique traduit ensuite en une lecture de 128 blocs? Ou est-ce que la lecture anticipée du RAID est "transmise" au périphérique sous-jacent, ce qui entraîne une lecture de 64 blocs?
Le même genre de question vaut pour les planificateurs? Dois-je m'inquiéter de plusieurs couches de planificateurs d'E / S et de la façon dont ils interagissent, ou le / dev / md0 remplace-t-il efficacement les planificateurs sous-jacents?
Dans mes tentatives pour répondre à cette question, j'ai déterré des données intéressantes sur les planificateurs et les outils qui pourraient aider à comprendre cela:
/sys/block/md0/queue/scheduler
sur mes systèmes, mais le seul choix là-dedans estnone
.