Dalam hal beberapa lapisan (drive fisik -> md -> dm -> lvm), bagaimana cara penjadwal, pengaturan readahead, dan pengaturan disk lainnya berinteraksi?
Bayangkan Anda memiliki beberapa disk (/ dev / sda - / dev / sdd) semua bagian dari perangkat RAID perangkat lunak (/ dev / md0) dibuat dengan mdadm. Setiap perangkat (termasuk disk fisik dan / dev / md0) memiliki pengaturannya sendiri untuk IO scheduler ( diubah seperti itu ) dan readahead ( diubah menggunakan blockdev ). Ketika Anda melempar hal-hal seperti dm (crypto) dan LVM Anda menambahkan lebih banyak lapisan dengan pengaturan mereka sendiri.
Sebagai contoh, jika perangkat fisik memiliki read di depan 128 blok dan RAID memiliki readahead 64 blok, yang merasa terhormat ketika saya membaca dari / dev / md0? Apakah driver md mencoba membaca 64 blok yang kemudian diterjemahkan oleh driver perangkat fisik menjadi 128 blok? Atau apakah RAID readahead "pass-through" ke perangkat yang mendasarinya, sehingga blok 64 terbaca?
Jenis pertanyaan yang sama berlaku untuk penjadwal? Apakah saya harus khawatir tentang beberapa lapisan penjadwal IO dan bagaimana mereka berinteraksi, atau apakah / dev / md0 secara efektif mengesampingkan penjadwal yang mendasarinya?
Dalam upaya saya untuk menjawab pertanyaan ini, saya telah menggali beberapa data menarik tentang penjadwal dan alat-alat yang mungkin membantu memecahkan masalah ini:
/sys/block/md0/queue/scheduler
pada sistem saya, tetapi satu-satunya pilihan di sananone
.