दौड़ते समय 'mdadm' RAID कैसे जांचें?


41

मैं घर पर कंप्यूटरों का एक संग्रह प्राप्त करना शुरू कर रहा हूं और उनका समर्थन करने के लिए मेरे पास मेरा "सर्वर" लिनक्स बॉक्स है, जो एक RAID सरणी है।

वर्तमान में mdadm RAID-1, RAID-5एक बार मेरे पास अधिक ड्राइव (और फिर RAID-6मैं उम्मीद कर रहा हूं) जा रहा हूं। हालाँकि, मैंने एक ड्राइव पर डेटा के दूषित होने के बारे में कई कहानियाँ सुनी हैं और दूसरी ड्राइव के विफल होने के कारण आप कभी भी इसका उपयोग नहीं कर रहे हैं, जब तक कि पहली ड्राइव विफल नहीं हो जाती है, और आप पाते हैं कि आपकी दूसरी ड्राइव भी खराब हो गई है (और 3rd, 4th , 5 वीं ड्राइव)।

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

आप कैसे चल रहे रेकॉर्ड की जांच करेंगे, यह सुनिश्चित करने के लिए कि सभी डिस्क अभी भी सामान्य रूप से प्रीफॉर्म हो रही हैं?

मैं सभी ड्राइव पर SMART की निगरानी करता हूं और mdadmविफलता के मामले में मुझे ईमेल करने के लिए भी सेट किया है, लेकिन मैं अपनी ड्राइव को कभी-कभार "चेक" करना चाहता हूं।


ऐसा लगता है कि आप पहले से ही सही रास्ते पर हैं, आपको बस अपने ड्राइव के लिए स्मार्टक्टेल के परिणाम भेजने के लिए एक क्रोन सेटअप करना होगा।
laebshade

जवाबों:


56

RAID विथ अतिरेक की बात यह है कि जब तक यह चल सकता है, तब तक चलता रहेगा, लेकिन जाहिर है कि यह उन त्रुटियों का पता लगाएगा जो इसे एक अस्वीकृत डिस्क के रूप में अपमानित मोड में डालती हैं। आप किसी सरणी की वर्तमान स्थिति दिखा सकते हैं mdadm -D:

# mdadm -D /dev/md0
<snip>
       0       8        5        0      active sync   /dev/sda5
       1       8       23        1      active sync   /dev/sdb7

इसके अलावा रिटर्न की स्थिति mdadm -Dनॉनजरो है अगर कोई समस्या है जैसे कि एक असफल घटक (1 एक त्रुटि इंगित करता है कि RAID मोड के लिए क्षतिपूर्ति करता है, और 2 पूर्ण विफलता का संकेत देता है)।

आप सभी RAID डिवाइस स्थिति का त्वरित सारांश भी देख सकते हैं /proc/mdstat। आप RAID डिवाइस के बारे में भी जानकारी प्राप्त कर सकते हैं /sys/class/block/md*/md/*; Documentation/md.txtकर्नेल प्रलेखन में देखें । कुछ /sysप्रविष्टियाँ लेखन योग्य भी हैं; उदाहरण के लिए आप के md0साथ एक पूर्ण चेक ट्रिगर कर सकते हैं echo check >/sys/class/block/md0/md/sync_action

इन स्पॉट चेक के अलावा, mdadm जैसे ही कुछ बुरा होता है, आपको सूचित कर सकता है। सुनिश्चित करें कि आप है कि बनाने MAILADDR rootमें /etc/mdadm.conf(कुछ वितरण (जैसे डेबियन) इस स्वचालित रूप से सेट अप)। तब आपको एक ईमेल सूचना प्राप्त होगी जैसे ही एक त्रुटि (एक अपमानित सरणी) होती है

सुनिश्चित करें कि आपको स्थानीय मशीन पर रूट करने के लिए मेल भेजें (कुछ आधुनिक वितरण इसे छोड़ देते हैं, क्योंकि वे मानते हैं कि सभी ईमेल बाहरी प्रदाताओं के माध्यम से जाते हैं - लेकिन किसी भी गंभीर सिस्टम व्यवस्थापक के लिए स्थानीय मेल प्राप्त करना आवश्यक है)। रूट को एक मेल भेजकर इसका परीक्षण करें echo hello | mail -s test root@localhost:। आमतौर पर, एक उचित ईमेल सेटअप के लिए दो चीजों की आवश्यकता होती है:

  • अपने स्थानीय मशीन पर एक एमटीए चलाएँ । एमटीए को स्थानीय मेल वितरण की अनुमति देने के लिए कम से कम स्थापित किया जाना चाहिए। सभी वितरण उपयुक्त एमटीए के साथ आते हैं, यदि आप चाहते हैं कि ईमेल को स्थानीय स्तर पर वितरित किया जाए, तो कुछ भी चुनें (लेकिन अशक्त नहीं)।
  • मेल को सिस्टम खातों (कम से कम root) पर एक पते पर रीडायरेक्ट करें जिसे आप नियमित रूप से पढ़ते हैं। यह स्थानीय मशीन, या बाहरी ईमेल पते पर आपका खाता हो सकता है। अधिकांश एमटीए के साथ, पते को कॉन्फ़िगर किया जा सकता है /etc/aliases; आपके पास एक लाइन होनी चाहिए

    root: djsmiley2k
    

    स्थानीय वितरण के लिए, या

    root: djsmiley2k@mail-provider.example.com
    

    दूरस्थ वितरण के लिए। यदि आप दूरस्थ वितरण चुनते हैं, तो सुनिश्चित करें कि आपका MTA उसी के लिए कॉन्फ़िगर किया गया है। अपने एमटीए के आधार पर, आपको newaliasesसंपादन के बाद कमांड को चलाने की आवश्यकता हो सकती है /etc/aliases


क्या आप बता सकते हैं कि nullmailer का उपयोग क्यों नहीं किया जाना चाहिए? क्या यह unix.stackexchange.com/questions/1449/… में वर्णित कारणों के कारण है ? आप किस एमटीए की सिफारिश करेंगे?
कैमरन मार्टिन

@CameronMartin Nullmailer केवल रिमोट मशीन को मेल करता है, यह स्थानीय वितरण नहीं करता है। यदि आपके पास एसएमटीपी सर्वर है तो आप इसका उपयोग कर सकते हैं जो आपकी मशीन से मेल स्वीकार करता है, लेकिन यदि आप स्थानीय रूप से मेल वितरित कर रहे हैं तो नहीं। मैंने अपना उत्तर स्पष्ट करने के लिए संपादित किया है।
गिलेस एसओ- बुराई को रोकें '

19

ऑनलाइन होने के दौरान आप संपूर्ण सरणी की जांच को बाध्य कर सकते हैं। उदाहरण के लिए, सरणी को चेक करने के लिए, /dev/md0रूट के रूप में चलाएँ:

echo check > /sys/block/md0/md/sync_action

मेरे पास एक क्रॉन जॉब भी है जो महीने में एक बार निम्नलिखित कमांड चलाता है:

tar c /dir/of/raid/filesystem > /dev/null

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

एक छोटी चेतावनी यह है कि यदि आपका फाइल सिस्टम बड़ा है, तो यह कमांड लंबे समय तक चलने वाला है; मेरा सिस्टम लगभग 6hr / TiB लेता है। मैं इसका उपयोग करके चलाता हूं ioniceताकि ड्राइव चेक के दौरान बाकी सिस्टम रुक न जाए:

ionice -c3 tar c /dir/of/raid/filesystem > /dev/null

ध्यान दें कि ioniceकेवल तभी काम करेगा जब आप (डिफ़ॉल्ट) CFQ I / O अनुसूचक का उपयोग करेंगे।
Totor

तो यह अधिकांश के लिए स्पष्ट हो सकता है, लेकिन यह मेरे लिए नहीं है - कैसे एक स्क्रिप्ट चल रही है जिसका उत्पादन devnull पर पुनर्निर्देशित किया गया है वास्तव में आपको कुछ के बारे में सूचित करें? क्या यह मामला है कि यदि "टार" का सामना किसी भी त्रुटि से होता है, तो उन्हें mdadm डेमन तक प्रचारित किया जाएगा जो (संभवतः) आपको एक ईमेल भेजेगा?
ljwobker

मेरा प्रश्न आपके लिए कठोर है, कि यदि आप इसे क्रॉन जॉब से चलाया जा रहा है, तो टार त्रुटियों को कैसे उठाते हैं? वह आउटपुट कहां है? मैंने सोचा होगा कि आप एक फ़ाइल के लिए stderr के लिए एक पुनर्निर्देशन जोड़ सकते हैं जिसे समय-समय पर निगरानी की जा सकती है या टर्मिनल विंडो खोलने के कंसोल पर मुद्रित किया जा रहा है :)
Madivad

1
@ljwobker एक पुराने धागे को पुनर्जीवित करने के लिए क्षमा करें। मुझे लगता है कि यहाँ टार कमांड का आशय वॉल्यूम की संपूर्ण सामग्री को पढ़ने का प्रयास करना है। यह सत्यापित करेगा कि पूरी मात्रा अभी भी पढ़ने योग्य है और md को एक खराब डिस्क का पता लगाने का मौका देती है।
माईकपज

1
यदि यह क्रोनजॉब से आ रहा है, तो क्रोन आम तौर पर सभी आउटपुट को सीधे मेल्टो = स्थान पर भेज देगा, यदि कोई सेट है, अन्यथा रूट करने के लिए। हालांकि ... मैं सोच रहा था कि क्या dd टार से बेहतर होगा, लोअर ओवरहेड के लिए?
djsmiley2k - CoW

11

डेबियन और उबंटू 'mdadm' पैकेज में फ़ाइल है

/etc/cron.d/mdadm

जो हर महीने के पहले रविवार को कमांड चलाएगा

/usr/share/mdadm/checkarray --cron --all --idle --quiet

वह आपके सभी सरणियों की संगति के लिए जाँच करेगा (जब तक कि आप AUTOCHECK को झूठे / etc / default / mdadm में सेट न करें )। एक रिपोर्ट 'रूट' उपयोगकर्ता को भेजी जाएगी (सुनिश्चित करें कि आप इस तरह के ईमेल प्राप्त करते हैं)।


8

मैं जांच करने के लिए इस सरल फ़ंक्शन का उपयोग करता हूं /proc/mdstat:

#Health of RAID array
raid() { awk '/^md/ {printf "%s: ", $1}; /blocks/ {print $NF}'  /proc/mdstat; }

साफ! मुझे शैली पसंद है :) .. यह वही है जो मैं MOTD में डाल रहा था :) धन्यवाद!
जिरिस्लाव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.