कई परतों (भौतिक ड्राइव -> एमडी -> डीएम -> एलवीएम) के मामले में, शेड्यूलर्स, रीडहेड सेटिंग्स और अन्य डिस्क सेटिंग्स कैसे बातचीत करते हैं?
कल्पना करें कि आपके पास mdadm के साथ बनाए गए सॉफ़्टवेयर RAID डिवाइस (/ dev / md0) के सभी भाग (/ dev / sda - / dev / sdd) हैं। प्रत्येक डिवाइस (भौतिक डिस्क और / dev / md0 सहित) की अपनी सेटिंग आईओ अनुसूचक ( ऐसा बदला ) और रीडहेड ( ब्लॉकदेव का उपयोग करके बदला हुआ ) के लिए अपनी सेटिंग है । जब आप डीएम (क्रिप्टो) और एलवीएम जैसी चीजों में फेंकते हैं तो आप अपनी सेटिंग्स के साथ और भी परतें जोड़ते हैं।
उदाहरण के लिए, यदि भौतिक डिवाइस में 128 ब्लॉक से आगे रीड है और RAID में 64 ब्लॉक का रीडहेड है, जिसे मैं / dev / md0 से रीड करते समय सम्मानित किया जाता है? क्या md ड्राइवर 64 ब्लॉक को पढ़ने का प्रयास करता है जिसे भौतिक डिवाइस ड्राइवर फिर 128 ब्लॉक के रीड में बदल देता है? या क्या RAID रीडहेड "पास-थ्रू" अंतर्निहित डिवाइस पर आता है, जिसके परिणामस्वरूप 64 ब्लॉक पढ़ा जाता है?
शेड्यूलर्स के लिए एक ही तरह का प्रश्न है? क्या मुझे IO अनुसूचियों की कई परतों के बारे में चिंता करनी है और वे कैसे बातचीत करते हैं, या / dev / md0 प्रभावी रूप से अंतर्निहित अनुसूचियों को ओवरराइड करता है?
इस प्रश्न का उत्तर देने के मेरे प्रयासों में, मैंने शेड्यूलर्स और टूल्स पर कुछ दिलचस्प डेटा खोदा है, जो इसे समझने में मदद कर सकते हैं:
/sys/block/md0/queue/scheduler
मेरे सिस्टम पर एक है , लेकिन वहाँ एकमात्र विकल्प हैnone
।