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 मूल और कैश उपकरण को संरक्षित किया जा सकता है। इस प्रकार हाइब्रिड वॉल्यूम को डीकमीशन करने या कैश उपकरण को सिकोड़ने के लिए क्लीनर पॉलिसी के उपयोग की आवश्यकता होती है, जो मेटाडेटा में चिह्नित सभी ब्लॉक को कैश उपकरण से ओरिजिनल उपकरण तक बुरी तरह से फ़्लश करता है।

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


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


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


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

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

यह भी देखें

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

बाहरी संबंध

 * लिनक्स 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)