Dm-कैश

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

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

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

सिंहावलोकन
dm-cache हार्ड डिस्क ड्राइव (हार्ड डिस्क ड्राइव) तक पहुँचने के दौरान संकेत के एक अतिरिक्त स्तर के रूप में सॉलिड-स्टेट ड्राइव (SSDs) का उपयोग करता है, घूर्णी पर आधारित धीमी यांत्रिक HDD के लिए कैश के रूप में तेज़ फ्लैश मेमोरी-आधारित SSDs का उपयोग करके समग्र प्रदर्शन में सुधार करता है। चुंबकीय भंडारण। नतीजतन, SSDs की महंगी गति धीमी लेकिन कम खर्चीली HDDs द्वारा दी जाने वाली भंडारण क्षमता के साथ संयुक्त हो जाती है। इसके अलावा, आभासी मशीन ों के लिए साझा स्टोरेज सिस्टम के रूप में  क्लाउड कम्प्यूटिंग  वातावरण में उपयोग किए जाने वाले संरक्षण क्षेत्र नियंत्रण कार्य (SANs) के मामले में, dm-cache समग्र प्रदर्शन में सुधार कर सकता है और क्लाइंट-साइड लोकल स्टोरेज का उपयोग करके डेटा कैशिंग प्रदान करके 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-cache दोनों दिशाओं (यानी, डेटा प्रमोशन और डिमोशन) में करता है, एक कॉन्फ़िगर की गई गति के लिए थ्रॉटलिंग प्रक्रिया (कंप्यूटिंग) हो सकती है, इसलिए नियमित 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, bcache and dm-cache, LKML, June 11, 2013
 * EnhanceIO, Bcache & DM-Cache Benchmarked, Phoronix, June 11, 2013, by Michael Larabel
 * SSD Caching Using dm-cache Tutorial, July 2014, by Kyle Manna
 * Re: [dm-devel [PATCH 8/8] [dm-cache] cache target ], December 14, 2012 (guidelines for metadata device sizing)