अवलोकन
"Mdadm" (सॉफ़्टवेयर RAID प्रबंधन के लिए) और "पालिम्पेस्ट डिस्क उपयोगिता" (उबंटू लाइव सीडी पर उपयोग किए जाने वाले) जैसे प्रोग्राम, एसएम.ए.आर.टी. सूचना का उपयोग करते हैं ताकि डिस्क आपको सूचित हो या विफल हो। हालांकि एक हेडलेस सर्वर (कोई जीयूआई) पर कोई सेवा नहीं है जो आपको बहुत देर हो चुकी है इससे पहले लंबित विनाश के बारे में सूचित करेगी। इसके अलावा, आप सर्वर में मैन्युअल रूप से लॉग इन किए बिना इसके बारे में कैसे जानेंगे?
यह स्क्रिप्ट, क्रॉन के साथ दिन में एक बार चलने पर, चेतावनी दी जाएगी कि किसी भी सिस्टम की हार्ड ड्राइव खराब क्षेत्रों की गिनती उस सीमा तक पहुंच गई है जो जानबूझकर कम हो जाती है, "डिस्क खराब है" थ्रेसहोल्ड, और मशीन के व्यवस्थापक को चेतावनी ईमेल करें।
पूर्वापेक्षाएँ और धारणाएं
- आप "लिनक्स पर ईमेल अलर्ट कैसे सेट करें" मार्गदर्शिका का उपयोग कर सर्वर के लिए पहले ही ईमेल समर्थन सेट कर चुके हैं।
- आप एक डेबियन आधारित प्रणाली का उपयोग कर रहे हैं।
- आप एक * हार्डवेयर RAID नियंत्रक का उपयोग नहीं कर रहे हैं।
- आप मुझे संपादक प्रोग्राम के रूप में वीआईएम का उपयोग करेंगे, यह इसलिए है क्योंकि मुझे इसका उपयोग किया जाता है … आप किसी भी अन्य संपादक का उपयोग कर सकते हैं जो आप चाहें।
* क्योंकि यह बहुत संभव है कि हार्डवेयर RAID नियंत्रक सिस्टम की इस जानकारी तक पहुंच को अवरुद्ध करता है।
सेट अप
"Smartmontools" पैकेज स्थापित करें जो हार्ड ड्राइव नियंत्रक से S.M.A.R.T जानकारी को पढ़ता है और इसे प्रस्तुत करता है।
sudo aptitude install smartmontools
मॉनीटर स्क्रिप्ट बनाएं:
sudo vim /root/smart-monitor.sh
इसे अपनी सामग्री बनाएं:
#!/bin/bash ########Email function######## email_admin_func() { echo 'To: [email protected]' > $temp_email_file echo 'From: [email protected]' >> $temp_email_file echo 'Subject: S.M.A.R.T monitor Threshold breached' >> $temp_email_file echo '' >> $temp_email_file echo -e $1 >> $temp_email_file /usr/sbin/ssmtp -t < $temp_email_file echo 'Sent an Email to the Admin' }
smartc_func() { /usr/sbin/smartctl -A /dev/$1 | grep Reallocated_Sector_Ct |tr -s ' '|cut -d' ' -f11 }
########End of Functions########
########Set working parameter######## temp_email_file=/tmp/smart_monitor.txt allowed_threshold=5 #set the amount of bad sectors your willing to live with, recommended 5.
########Engine######## for i in sda sdb; do # Add or subtract disk names from this list as appropriate for your setup. if [ '`smartc_func $i`' -ge $allowed_threshold ]; then echo Emailing the Administrator email_admin_func 'One of the HDs on '`hostname`', has reached the upper threshold limit!!! nThe threshold was set to:$allowed_threshold and the $i disk status was: '`smartc_func $i`'' fi done
नोट करने के लिए महत्वपूर्ण बिंदु हैं:
- ईमेल फ़ंक्शन - मशीन नाम और व्यवस्थापक ईमेल जैसी उपयुक्त जानकारी सेट करें।
- अनुमत दहलीज - इस पैरामीटर को जो उचित लगता है उसे सेट करें, मैंने 5 का उपयोग किया है क्योंकि "सर्वर ग्रेड" हार्ड ड्राइव के लिए निर्धारित सीमा 10 थी। (मुझे "उपभोक्ता ग्रेड" ड्राइव के लिए दहलीज मिली है 140 जितना ऊंचा हो)।
- "फॉर" लूप में डिस्क नामों की गणना को समायोजित करके उन डिवाइस को सेट करें जिन्हें आप मॉनिटर करना चाहते हैं। वर्तमान में दो डिस्क (एसडीए और एसडीबी) शामिल हैं, इसलिए अपने सेटअप के लिए समायोजित करें। यदि आप किसी कारण से डिस्क को बाहर करने की आवश्यकता है, तो आप अपनी सभी डिस्क या बस कुछ शामिल कर सकते हैं।
* मेरे मूल सेटअप में पहली डिस्क एक फ्लैश ड्राइव थी इसलिए यदि संभव हो तो इसकी जानकारी पढ़ना ज्यादा उपयोग नहीं है।
स्क्रिप्ट निष्पादन योग्य बनाएं:
sudo chmod +x /root/smart-monitor.sh
सेटअप किया जाता है।
स्क्रिप्ट को स्वचालित रूप से चलाने के लिए शेड्यूल करें
हम स्क्रिप्ट को स्वचालित रूप से चलाने के लिए चाहते हैं ताकि हम इसके लिए एक नया क्रॉन नौकरी तैयार कर सकें। जैसा कि "लिनक्स पर ईमेल अलर्ट कैसे सेट अप करें" में कहा गया है, ऐसा करने के लिए ऊपर की ओर मार्गदर्शन करें, यह है कि यदि स्क्रिप्ट स्वयं एक त्रुटि का सामना करती है, तो क्रॉन स्वचालित रूप से ईमेल के माध्यम से हमें सूचित करता है जैसे ही होता है।
क्रॉन जॉब शेड्यूलर खोलें:
sudo crontab -e
इसे अपनी सामग्री में जोड़ें:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
यह स्क्रिप्ट को हर सुबह सुबह 7 बजे चलाने के लिए सेट करेगा।
आपके सभी क्षेत्र हमारे हैं:)