बैरियर के साथ SATA ड्राइव पर कैश लिखने की सुरक्षा


13

मैं हाल ही में SATA ड्राइव के बारे में कैशिंग, NCQ, फर्मवेयर बग, बैरियर आदि लिखने के बारे में पढ़ रहा हूं, और मुझे यकीन नहीं है कि सबसे अच्छा सेटिंग क्या है जो बिजली की विफलता के मामले में मेरे डेटा को सुरक्षित बना देगा।

मेरी समझ से, NCQ ड्राइव को लिखने के प्रदर्शन को अनुकूलित करने के लिए फिर से व्यवस्थित करने की अनुमति देता है, जबकि कर्नेल को सूचित करते हुए कि अनुरोधों को शारीरिक रूप से लिखा गया है।

कैश लिखें ड्राइव ड्राइव को बहुत तेजी से अनुरोध करता है, क्योंकि यह डेटा को भौतिक डिस्क पर लिखे जाने की प्रतीक्षा नहीं करता है।

मुझे यकीन नहीं है कि NCQ और लिख कैश मिक्स यहाँ कैसे ...

फ़ाइल सिस्टम, विशेष रूप से पत्रिकाओं वाले, यह सुनिश्चित करने की आवश्यकता होती है कि किसी विशेष अनुरोध को नीचे लिखा गया है या नहीं। इसके अलावा, उपयोगकर्ता की अंतरिक्ष प्रक्रिया एक विशेष फ़ाइल के फ्लश को मजबूर करने के लिए fsync () का उपयोग करती है। Fsync () को कॉल तब तक वापस नहीं आना चाहिए जब तक कि फ़ाइल सिस्टम यह सुनिश्चित न कर ले कि डेटा डिस्क पर लिखा है।

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

तब फ़र्मवेयर बग्स के साथ ड्राइव होती है, या जब डेटा भौतिक रूप से लिखा गया है, तो जानबूझकर झूठ बोलते हैं।

यह कहने के बाद .. ड्राइव / फाइलसिस्टम को सेटअप करने के कई तरीके हैं: A) NCQ और लिख कैश अक्षम B) बस NCQ सक्षम C) बस लिखें कैश सक्षम D) NCQ और राइट कैश दोनों को सक्षम करें

मैं मान रहा हूं कि बाधाएं सक्षम हैं .. BTW, कैसे जांचें कि क्या वे वास्तव में सक्षम हैं?

बिजली की हानि के मामले में, डिस्क पर सक्रिय रूप से लिखते समय, मेरा अनुमान है कि विकल्प बी (एनसीक्यू, नो कैश) सुरक्षित है, फाइल सिस्टम जर्नल और डेटा दोनों के लिए। प्रदर्शन पर जुर्माना लग सकता है।

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

मेरा प्रश्न, हालांकि, खड़ा है ... क्या मुझे कुछ याद आ रहा है? क्या खाते में लेने के लिए कोई अन्य चर है? क्या कोई ऐसा उपकरण है जो इस बात की पुष्टि कर सकता है, और यह कि मेरे ड्राइव जैसा वे चाहते हैं वैसा ही व्यवहार करें?


आपकी स्थिति में आवेदन क्या है? आप RAID नियंत्रक और इसके कैश के सेटअप पर प्रभाव या प्रभाव को देख रहे हैं। आप किस ऑपरेटिंग सिस्टम पर भी ध्यान केंद्रित कर रहे हैं? आप किस फाइलसिस्टम पर विचार कर रहे हैं?
ewwhite

कोई विशिष्ट अनुप्रयोग नहीं। मैं वर्षों से सॉफ्टवेयर raid1 का उपयोग कर रहा हूं, लेकिन कभी भी उस समस्या को न खोदें जो कि caches का प्रतिनिधित्व करती है। इसके अलावा, btrfs में देखा जा रहा है, जिसके लिए अभी तक कोई विश्वसनीय fsck नहीं है, मुझसे यह सवाल करता है कि मैं भ्रष्टाचार को रोकने के लिए क्या कर सकता हूं, अगर मैं इसका उपयोग करता।
जूलियनज्म

1
इसके बजाय लिनक्स पर ZFS का उपयोग करें और एक उद्देश्य-निर्मित ZIL डिवाइस के साथ युगल। मैं ZFS सिस्टम के लिए DDRDrive का उपयोग करता हूं :)
ewhite

क्या आप FFS के साथ ZFS का उपयोग कर रहे हैं?
julianjm

2
यूपीएस प्राप्त करना सुनिश्चित करें।
माइकल हैम्पटन

जवाबों:


11

सीधे एंटरप्राइज सिस्टम के लिए, स्टोरेज एडॉप्टर (लगभग हमेशा एक RAID कार्ड) के रूप में एक अतिरिक्त परत होती है, जिस पर अभी तक कैश की एक और परत मौजूद है। इन दिनों स्टोरेज स्टैक में बहुत अधिक अमूर्तता है, और मैंने इसे अपने ब्लॉग I / O के बारे में जानने वाली एक ब्लॉग श्रृंखला में गहराई से जाना ।

RAID कार्ड ऑन-डिस्क कैश को बायपास कर सकते हैं, जिनमें से कुछ RAID BIOS में भी इस सुविधा को शुरू करने की अनुमति देते हैं। यह एक कारण है कि एंटरप्राइज डिस्क एंटरप्राइज है, थायर फर्मवेयर ऐसी चीजों की अनुमति देता है जो उपभोक्ता ड्राइव ( विशेष रूप से 'ग्रीन' ड्राइव) नहीं करते हैं। यह सुविधा सीधे उस मामले को संबोधित करती है, जिसके बारे में आप चिंतित हैं: असूचीबद्ध लेखन के साथ बिजली की विफलता। RAID कार्ड कैश, जो या तो बैटरी या फ्लैश-बैक होना चाहिए, जब तक कि पावर रिटर्न और उन राइट्स को फिर से नहीं लिखा जा सकता है, तब तक संरक्षित रखा जाएगा।

कुछ उद्यम एसएसडी में ऑनबोर्ड कैश को पूरी तरह से बिजली देने से पहले पर्याप्त ओम्फ के साथ एक जहाज पर संधारित्र शामिल है।

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

हालांकि, समय आगे बढ़ गया है और XFS को इसे जीवित रखने के लिए इंजीनियर बनाया गया है। अन्य प्रमुख लिनक्स फाइलसिस्टम (साथ ही विंडोज पर ) के पास पहले से ही इस बहुत ही असफल मोड से बचने के लिए इंजीनियरिंग थी । यह कैसे काम करने वाला है कि खोए गए लेखन एफएस पत्रिका में दिखाई नहीं देंगे और यह पता चलेगा कि वे काम नहीं करते हैं, इसलिए भ्रष्टाचार का पता लगाया जाएगा और चारों ओर काम किया जाएगा।

आप यहां एक समस्या की ओर इशारा करते हैं: डिस्क फर्मवेयर जो झूठ है। इस मामले में एफएस पत्रिका ने गलत धारणा बनाम वास्तविकता बना दी है और कुछ समय के लिए भ्रष्टाचार का पता नहीं लग सकता है। पैरिटी RAID और मिरर RAID इस के आसपास काम कर सकते हैं क्योंकि खींचने के लिए एक और कॉमेड कॉपी होनी चाहिए। लेकिन सिंगल डिस्क सेटअप में वह क्रॉस-चेक नहीं होगा, इसलिए वास्तव में गलती होगी।

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


मैं समझता हूं कि हार्डवेयर RAID के तहत, यह कैशिंग (उम्मीद है कि बैटरी समर्थित) करने के लिए नियंत्रक पर निर्भर है, और वास्तविक डिस्क कैश अक्षम होना उचित है। मेरे मामले में (इसका उल्लेख नहीं किया) मैं सॉफ्टवेयर छापे का उपयोग कर रहा हूँ। ऐसा लगता है कि कैश लिखना अनुशंसित नहीं है क्योंकि इससे डेटा हानि होगी। शायद तबाही (फाइल सिस्टम भ्रष्टाचार) नहीं है, लेकिन डेटा हानि वैसे भी। मैं समय के लिए, मेरे softraid1 + ext4 से btrfs + raid1 माइग्रेट करने से बचना चाहूंगा। :)
जूलियनज्म

RAID इससे मदद नहीं करता है क्योंकि डेटा आसानी से दोनों ड्राइव में बैठ सकता है एक ड्राइव के रूप में कैश लिखता है।
Psusi

@psusi यह 100% शमन नहीं है, लेकिन यह अतिरिक्त सुरक्षा प्रदान करता है । यह समय की समस्या है। व्यक्तिगत RAID कार्यान्वयन अलग हैं।
sysadmin1138

यह एक शमन नहीं है। माध्यमिक ड्राइव बिल्कुल भी मायने नहीं रखता है, क्योंकि दुर्घटना की स्थिति में, प्राथमिक को पुनर्प्राप्त करने के लिए माध्यमिक पर वापस कॉपी किया जाएगा। इसलिए, आप इस बात पर वापस आ गए हैं कि लेखन ने इसे (प्रथम) ड्राइव पर बनाया है या नहीं।
Psusi

3

फाइलसिस्टम पत्रिका मूल रूप से मेटाडाटा को पत्र जारी करने से पहले पत्र को पूरा करने के लिए इंतजार कर रहा था, यह मानते हुए कि कोई ड्राइव राइट कैश नहीं था। ड्राइव लेखन कैशिंग सक्षम होने के साथ, यह धारणा टूट गई है और डेटा हानि हो सकती है। इस प्रकार, बाधाओं का निर्माण किया गया था। बाधाओं के साथ, पत्रिका यह सुनिश्चित कर सकती है कि मेटाडेटा को लिखने से पहले जर्नल पूरा हो जाता है, भले ही डिस्क लेखन कैशिंग का उपयोग कर रही हो। डिस्क ड्रायवर परत पर, अवरोधक बाद में IO भेजे जाने से पहले डिस्क कैश फ़्लश करता है, जब ड्राइव रिपोर्ट करता है कि इसमें राइट कैश है और यह सक्षम है। अन्यथा, इसकी आवश्यकता नहीं है, इसलिए बैरियर केवल पिछले IO के पूरा होने तक ड्राइव को बाद के IO को जारी करने से रोकता है। NCQ का अर्थ है कि अधिक जारी करने से पहले इसे पूरा करने के लिए एक से अधिक लंबित अनुरोधों का इंतजार करना पड़ सकता है।


मुझे लगता है कि बाधाएं आपको भ्रष्टाचार से बचाती हैं (यदि फाइल सिस्टम अनुरोध करता है), लेकिन मुझे फाइलों पर वास्तविक डेटा के बारे में निश्चित नहीं है ... हर लिखने के बाद कैश फ्लश जारी करना लिखना कैश को बेकार कर देगा, नहीं ?
julianjm

@julianjm, निश्चित रूप से ... कैश की गई फ़ाइल डेटा हमेशा NCQ या ड्राइव राइट कैश के साथ या उसके बिना क्रैश की स्थिति में खो जाती है।
15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.