Dm-कैश

dm-कैश लिनक्स कर्नेल के मैपर उपकरण का घटक है, जो उच्च-स्तरीय वर्चुअल ब्लॉक उपकरण पर ब्लॉक उपकरण को मैप करने के लिए सॉफ्टवेयर प्रारूप है। यह या से अधिक तेज़ स्टोरेज उपकरण, जैसे फ्लैश-आधारित ठोस स्थिति ड्राइव (SSDs) को हार्ड डिस्क ड्राइव (HDDs) जैसे या अधिक धीमे स्टोरेज उपकरण के लिए कैशे (कंप्यूटिंग) के रूप में कार्य करने की अनुमति देता है; यह प्रभावी रूप से संकर मात्रा बनाता है और माध्यमिक भंडारण प्रदर्शन में सुधार प्रदान करता है।

डीएम-कैश के डिजाइन के लिए एकल हाइब्रिड वॉल्यूम के निर्माण के लिए तीन भौतिक भंडारण उपकरणों की आवश्यकता होती है; dm-कैश वास्तविक डेटा, कैश डेटा और आवश्यक मेटा डेटा को अलग से स्टोर करने के लिए उन स्टोरेज उपकरण का उपयोग करता है। कॉन्फ़िगर करने योग्य ऑपरेटिंग मोड और कैश पॉलिसी के पश्चात अलग-अलग मॉड्यूल के रूप में, डेटा कैशिंग वास्तव में करने के तरीके को निर्धारित करते हैं।

dm-कैश को जीएनयू जनरल पब्लिक लाइसेंस (GPL) की शर्तों के तहत लाइसेंस दिया गया है, इसके प्राथमिक डेवलपर्स के रूप में जो थॉर्नबर, हेंज मौएलशेगन और माइक स्निट्ज़र हैं।

अवलोकन
dm-कैश हार्ड डिस्क ड्राइव (हार्ड डिस्क ड्राइव) तक पहुँचने के समय संकेत के अतिरिक्त स्तर के रूप में सॉलिड-स्टेट ड्राइव (SSDs) का उपयोग करता है, इस प्रकार घूर्णन होने पर इस पर आधारित धीमी गति वाले यांत्रिक HDD के लिए कैश के रूप में तेज़ फ्लैश मेमोरी-आधारित SSDs का उपयोग करके समग्र प्रदर्शन में सुधार करता है। चुंबकीय भंडारण या परिणामस्वरूप, SSDs की महंगी गति धीमी लेकिन कम खर्चीली HDDs द्वारा दी जाने वाली भंडारण क्षमता के साथ संयुक्त हो जाती है। इसके अतिरिक्त, वर्चुअल मशीनों के लिए साझा किये जाने वाले स्टोरेज सिस्टम के रूप में क्लाउड कम्प्यूटिंग वातावरण में उपयोग किए जाने वाले संरक्षण क्षेत्र नियंत्रण कार्य (SANs) के मामले में, dm-कैश समग्र प्रदर्शन में सुधार कर सकता है और क्लाइंट-साइड लोकल स्टोरेज का उपयोग करके डेटा कैशिंग प्रदान करके SAN के भार को कम कर सकता है।

डीएम-कैश को लिनक्स कर्नेल के उपकरण मैपर के घटक के रूप में लागू किया गया है, जो वॉल्यूम प्रबंधन ढांचा है जो भौतिक और वर्चुअल ब्लॉक उपकरणों के बीच विभिन्न मैपिंग बनाने की अनुमति देता है। जिस प्रकार से उपकरणों के बीच मैपिंग बनाई जाती है, यह निर्धारित करता है कि वर्चुअल ब्लॉक (डेटा स्टोरेज) को अंतर्निहित भौतिक ब्लॉकों में कैसे अनुवादित किया जाता है, विशिष्ट अनुवाद प्रकारों को लक्ष्य के रूप में संदर्भित किया जाता है। मैपिंग लक्ष्य के रूप में कार्य करते हुए, डीएम-कैश एसएसडी-आधारित कैशिंग के लिए बनाए गए वर्चुअल ब्लॉक उपकरण का हिस्सा बनना संभव बनाता है, जबकि कॉन्फ़िगर करने योग्य ऑपरेटिंग मोड और कैश नीतियां निर्धारित करती हैं कि डीएम-कैश आंतरिक रूप से कैसे कार्य करता है। इस प्रकार ऑपरेटिंग मोड उस तरीके का चयन करता है जिसमें डेटा को एचडीडी और एसएसडी के बीच सिंक में रखा जाता है, जबकि कैश पॉलिसी, प्रत्येक पॉलिसी को लागू करने वाले अलग-अलग मॉड्यूल से चयन करने योग्य, यह निर्धारित करने के लिए कलन विधि प्रदान करता है कि कौन से ब्लॉक को बढ़ावा दिया जाता है (एक से स्थानांतरित) HDD से SSD में), पदावनत SSD से HDD में ले जाया गया, साफ किया गया आदि।

मल्टीक्यू (एमक्यू) या स्टोचैस्टिक मल्टीक्यू (एसएमक्यू) कैश पॉलिसी का उपयोग करने के लिए कॉन्फ़िगर किए जाने पर, बाद में डिफ़ॉल्ट होने के साथ, डीएम-कैश एसएसडी का उपयोग रैंडम एक्सेस से जुड़े डेटा को स्टोर करने के लिए करता है, एसएसडी के करीब शून्य को खोजते समय पूंजीकरण करता है और विशिष्ट HDD प्रदर्शन बाधाओं के रूप में ऐसे इनपुट/आउटपुट|I/O संचालन से बचना। एसएसडी पर अनुक्रमिक पढ़ने और लिखने से जुड़े डेटा को कैश नहीं किया जाता है, इस प्रकार के संचालन के समय अवांछनीय कैश अमान्यकरण से बचा जाता है; प्रदर्शन-वार, यह फायदेमंद है क्योंकि अनुक्रमिक I/O संचालन HDD के लिए उनके यांत्रिक प्रकृति के कारण उपयुक्त हैं। अनुक्रमिक I/O को कैशिंग नहीं करने से कैश के रूप में उपयोग किए जाने वाले लेखन प्रवर्धन को विस्तारित करने में भी मदद मिलती है।

इतिहास
इसी प्रकार के लक्ष्यों के साथ अन्य डीएम-कैश परियोजना की घोषणा 2006 में एरिक वैन हेन्सबर्गेन और मिंग झाओ द्वारा की गई थी, आईबीएम में इंटर्नशिप कार्य के परिणाम के रूप में प्राप्त होता हैं। इसके पश्चात जो थॉर्नबर, हेंज मौएलशेगन और माइक स्निट्ज़र ने अवधारणा का अपना कार्यान्वयन प्रदान किया, जिसके परिणामस्वरूप डीएम-कैश को लिनक्स कर्नेल में सम्मिलित किया गया हैं। इस प्रकार डीएम-कैश को कर्नेल संस्करण 3.9 में लिनक्स कर्नेल मेनलाइन में मिला दिया गया था, जो 28 अप्रैल, 2013 को जारी किया गया था।

डिजाइन
डीएम-कैश में, मैप्ड वर्चुअल ब्लॉक उपकरण बनाने के लिए जो हाइब्रिड वॉल्यूम के रूप में कार्य करता है, तीन भौतिक स्टोरेज उपकरण की आवश्यकता होती है: * मूल उपकरण – धीमा प्राथमिक भंडारण प्रदान करता है (सामान्यतः HDD)
 * कैश उपकरण – फास्ट कैश प्रदान करता है (सामान्यतः SSD)
 * मेटाडेटा उपकरण – प्रति-ब्लॉक हिट गणनाओं सहित कैश नीति के लिए आवश्यक अन्य आंतरिक डेटा के साथ-साथ ब्लॉकों और उनके गंदे झंडों के स्थान को रिकॉर्ड करता है; मेटाडेटा उपकरण को कई कैश उपकरण के बीच साझा नहीं किया जा सकता है, और डिस्क मिररिंग होने का प्रस्ताव दिया जाता है

आंतरिक रूप से, डीएम-कैश कई निश्चित आकार के ब्लॉकों के माध्यम से प्रत्येक मूल उपकरण का संदर्भ देता है; कैशिंग फाइल सिस्टम के आकार के बराबर इन ब्लॉकों का आकार केवल हाइब्रिड वॉल्यूम के निर्माण के समय ही कॉन्फ़िगर किया जा सकता है। कैशिंग सीमा का आकार 32 KiB और 1 GiB के बीच होना चाहिए, और यह 32 KB का गुणक होना चाहिए; सामान्यतः, कैशिंग सीमा का आकार 256 और 1024 केबी के बीच होता है। डिस्क क्षेत्रों की तुलना में बड़े कैशिंग का विकल्प मेटाडेटा के आकार और कैश स्पेस को बर्बाद करने की संभावना के बीच समझौता करता है। बहुत कम कैशिंग विस्तार होने से मेटाडेटा उपकरण और कर्नेल मेमोरी दोनों में मेटाडेटा का आकार बढ़ जाता है, जबकि बहुत बड़ा कैशिंग विस्तार होने से केवल उच्च कैश हिट दर की स्थिति में भी पूरे विस्तार को कैश करने के कारण व्यर्थ कैश स्थान की मात्रा बढ़ जाती है। उनके कुछ हिस्से। डीएम-कैश द्वारा समर्थित ऑपरेटिंग मोड वापस लिखना हैं, जो कि डिफ़ॉल्ट, इससे लिखो और पास-थ्रू है। राइट-बैक ऑपरेटिंग मोड में, कैश्ड ब्लॉक को लिखता है केवल कैश उपकरण पर जाता है, जबकि मूल उपकरण पर ब्लॉक केवल मेटाडेटा में गंदे के रूप में चिह्नित होते हैं। राइट-थ्रू ऑपरेटिंग मोड के लिए, लिखने के अनुरोधों को तब तक पूरा नहीं किया जाता है जब तक कि डेटा मूल और कैश उपकरण दोनों तक नहीं पहुंच जाता है, जिसमें कोई साफ ब्लॉक गंदे के रूप में चिह्नित नहीं होता है। पास-थ्रू ऑपरेटिंग मोड में, सभी रीड सीधे मूल उपकरण से किए जाते हैं, कैश से बचते हुए, जबकि सभी राइट्स सीधे ओरिजिनल उपकरण पर जाते हैं; कोई भी कैश राइट हिट भी कैश्ड ब्लॉक को अमान्य कर देता है। पास-थ्रू मोड हाइब्रिड वॉल्यूम को सक्रिय करने की अनुमति देता है जब कैश उपकरण की स्थिति मूल उपकरण के अनुरूप नहीं होती है। डेटा माइग्रेशन की दर जो dm-कैश दोनों दिशाओं (यानी, डेटा प्रमोशन और डिमोशन) में करता है, कॉन्फ़िगर की गई गति के लिए थ्रॉटलिंग प्रक्रिया (कंप्यूटिंग) हो सकती है, इसलिए नियमित I/O मूल और कैश उपकरण को संरक्षित किया जा सकता है। हाइब्रिड वॉल्यूम को डीकमीशन करने या कैश उपकरण को सिकोड़ने के लिए क्लीनर पॉलिसी के उपयोग की आवश्यकता होती है, जो मेटाडेटा में चिह्नित सभी ब्लॉक को कैश उपकरण से ओरिजिनल उपकरण तक गंदे के रूप में फ़्लश करता है।

कैश नीतियां
Linux कर्नेल का संस्करण 4.2, निम्नलिखित तीन कैश नीतियां लिनक्स कर्नेल मेनलाइन के साथ वितरित की जाती हैं, जिनमें से डीएम-कैश डिफ़ॉल्ट रूप से स्टोकेस्टिक मल्टीक्यू पॉलिसी का उपयोग करता है:


 * मल्टीक्यू (एमक्यू)
 * मल्टीक्यू (एमक्यू) पॉलिसी में 16 कतार (अमूर्त डेटा प्रकार) के तीन सेट हैं, कैश के लिए प्रतीक्षा करने वाली प्रविष्टियों के लिए पहला सेट और कैश में पहले से ही प्रविष्टियों के लिए शेष दो सेट का उपयोग करते हुए, बाद में अलग होने के साथ साफ और गंदा प्रविष्टियाँ दो सेटों में से प्रत्येक से संबंधित हैं। इस श्रेणी में कैश प्रविष्टियों की आयु उनके संबंधित तार्किक समय पर आधारित होती है। कैश में जाने वाली प्रविष्टियों का चयन (अर्थात्, प्रचारित होना) चर थ्रेसहोल्ड पर आधारित है, और क्यू चयन किसी प्रविष्टि की हिट संख्या पर आधारित है। इस नीति का उद्देश्य अलग-अलग कैश मिस लागतों को ध्यान में रखना और विभिन्न लोड पैटर्न में स्वत: समायोजन करना है।
 * यह नीति अनुक्रमिक I/O संचालन को आंतरिक रूप से ट्रैक करती है ताकि उन्हें यादृच्छिक I/O और अनुक्रमिक I/O संचालन के बीच अंतर के लिए अलग-अलग कॉन्फ़िगर करने योग्य थ्रेसहोल्ड के साथ कैश के आसपास रूट किया जा सके। परिणामस्वरूप, बड़े सन्निहित I/O संचालन मूल उपकरण द्वारा किए जाने के लिए छोड़ दिए जाते हैं क्योंकि ऐसे डेटा एक्सेस पैटर्न HDD के लिए उपयुक्त हैं, और क्योंकि वे अवांछनीय कैश अमान्यता से बचते हैं।


 * स्टोचैस्टिक मल्टीक्यू (एसएमक्यू)
 * स्टोचैस्टिक मल्टीक्यू (एसएमक्यू) नीति मल्टीक्यू नीति के समान ही प्रदर्शन करती है, लेकिन इसे संचालित करने के लिए कम संसाधनों की आवश्यकता होती है; विशेष रूप से, यह कैश्ड ब्लॉक को ट्रैक करने के लिए काफी कम मात्रा में मुख्य मेमोरी का उपयोग करता है। यह मल्टीक्यू पॉलिसी से हिट काउंटिंग को हॉटस्पॉट कतार से भी बदल देता है, और कम से कम हाल ही में उपयोग किए गए (LRU) आधार पर डेटा प्रमोशन और डिमोशन पर निर्णय लेता है। परिणामस्वरूप, यह नीति बहु-पंक्ति नीति की तुलना में बेहतर प्रदर्शन प्रदान करती है, अलग-अलग लोड पैटर्न के लिए स्वचालित रूप से बेहतर ढंग से समायोजित होती है, और विभिन्न थ्रेसहोल्ड के कॉन्फ़िगरेशन को समाप्त करती है।


 * सफाई वाला
 * क्लीनर नीति मेटाडेटा में गंदे के रूप में चिह्नित सभी ब्लॉकों को मूल उपकरण पर वापस लिखती है। इस ऑपरेशन के पूरा होने के बाद, हाइब्रिड वॉल्यूम को डीकमीशन किया जा सकता है या कैश उपकरण के आकार को कम किया जा सकता है।

एलवीएम के साथ प्रयोग
लॉजिकल वॉल्यूम मैनेजर में सम्मिलित हैं, जिसमें जो के  एलवीएम के साथ एकीकृत लिए आवरण प्रदान करता है ।

यह भी देखें

 * बी.सी.ए – केंट ओवरस्ट्रीट द्वारा विकसित लिनक्स कर्नेल का ब्लॉक लेयर कैश
 * फ़्लैश कैश – लिनक्स कर्नेल के लिए डिस्क कैश घटक, जिसे शुरू में फेसबुक द्वारा विकसित किया गया था
 * हाइब्रिड ड्राइव – स्टोरेज उपकरण जो फ्लैश-आधारित और स्पिनिंग मैग्नेटिक मीडिया स्टोरेज तकनीकों को जोड़ती है
 * रेडी बूस्ट – Windows Vista और बाद में Microsoft ऑपरेटिंग सिस्टम का डिस्क कैशिंग सॉफ़्टवेयर घटक
 * स्मार्ट रिस्पांस टेक्नोलॉजी (SRT) – इंटेल द्वारा अपने चिपसेट के लिए विकसित मालिकाना डिस्क स्टोरेज कैशिंग तंत्र
 * ZFS – क्रॉस-OS स्टोरेज मैनेजमेंट सिस्टम जिसमें समान एकीकृत कैशिंग उपकरण सपोर्ट (L2ARC) है

बाहरी संबंध

 * Linux Block Caching Choices in Stable Upstream Kernel (PDF), Dell, December 2013
 * Performance Comparison among EnhanceIO, bकैश and dm-कैश, LKML, June 11, 2013
 * EnhanceIO, Bकैश & DM-कैश Benchmarked, Phoronix, June 11, 2013, by Michael Larabel
 * SSD Caching Using dm-कैश Tutorial, July 2014, by Kyle Manna
 * Re: [dm-devel [PATCH 8/8] [dm-कैश] कैश target ], December 14, 2012 (guidelines for metadata device sizing)