डिस्क त्रुटि से आसानी से माउंट होने के बाद आप एक ext3 एफएस रीडराइट को फिर से कैसे माउंट करते हैं?


18

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

देखो:

[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 1:0:0:1 sdb 8:16  [active][ready]
\_ 2:0:0:1 sdc 8:32  [active][ready]
[root@localhost ~]# mount /dev/mapper/mpath0 /mnt/foo
[root@localhost ~]# touch /mnt/foo/blah

सब अच्छा है, अब मैं इसके नीचे से LUN निकालता हूं।

[root@localhost ~]# touch /mnt/foo/blah
[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system
[root@localhost ~]# tail /var/log/messages
Mar 18 13:17:33 localhost multipathd: sdb: tur checker reports path is down
Mar 18 13:17:34 localhost multipathd: sdc: tur checker reports path is down
Mar 18 13:17:35 localhost kernel: Aborting journal on device dm-2.
Mar 18 13:17:35 localhost kernel: Buffer I/O error on device dm-2, logical block 1545
Mar 18 13:17:35 localhost kernel: lost page write due to I/O error on dm-2
Mar 18 13:17:36 localhost kernel: ext3_abort called.
Mar 18 13:17:36 localhost kernel: EXT3-fs error (device dm-2): ext3_journal_start_sb:   Detected aborted journal                      
Mar 18 13:17:36 localhost kernel: Remounting filesystem read-only

यह केवल इसके रीड-ओनली के बारे में सोचता है, वास्तव में इसके भी नहीं।

[root@localhost ~]# multipath -ll
sdb: checker msg is "tur checker reports path is down"
sdc: checker msg is "tur checker reports path is down"
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
 \_ 1:0:0:1 sdb 8:16  [failed][faulty]
 \_ 2:0:0:1 sdc 8:32  [failed][faulty]
[root@localhost ~]# ll /mnt/foo/
ls: reading directory /mnt/foo/: Input/output error
total 20
-rw-r--r-- 1 root root     0 Mar 18 13:11 bar

यह अभी भी याद है कि 'बार' फ़ाइल वहाँ कैसे है ... रहस्य, लेकिन अभी महत्वपूर्ण नहीं है। अब मैं LUN को फिर से प्रस्तुत करता हूं:

[root@localhost ~]# tail /var/log/messages
Mar 18 13:23:58 localhost multipathd: sdb: tur checker reports path is up
Mar 18 13:23:58 localhost multipathd: 8:16: reinstated
Mar 18 13:23:58 localhost multipathd: mpath0: queue_if_no_path enabled
Mar 18 13:23:58 localhost multipathd: mpath0: Recovered to normal mode
Mar 18 13:23:58 localhost multipathd: mpath0: remaining active paths: 1
Mar 18 13:23:58 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:58 localhost multipathd: dm-2: devmap already registered
Mar 18 13:23:59 localhost multipathd: sdc: tur checker reports path is up
Mar 18 13:23:59 localhost multipathd: 8:32: reinstated
Mar 18 13:23:59 localhost multipathd: mpath0: remaining active paths: 2
Mar 18 13:23:59 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:59 localhost multipathd: dm-2: devmap already registered
[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][enabled]
 \_ 1:0:0:1 sdb 8:16  [active][ready]
 \_ 2:0:0:1 sdc 8:32  [active][ready]

महान सही है? यह कहते हैं [आरडब्ल्यू] वहीं। इतना शीघ्र नही:

[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system

ठीक है, यह स्वचालित रूप से नहीं करता है, मैं इसे थोड़ा धक्का दूंगा:

[root@localhost ~]# mount -o remount /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only

नरक तुम हो:

[root@localhost ~]# mount -o remount,rw /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only

Noooooooooo।

मैंने सभी प्रकार के विभिन्न माउंट / ट्यून 2 एफएस / डीएमएसटअप कमांड की कोशिश की है और मैं यह नहीं पता लगा सकता कि इसे ब्लॉक डिवाइस को राइट-प्रोटेक्टेड के रूप में कैसे चिह्नित किया जाए। रिबूटिंग इसे ठीक कर देगा, लेकिन मैं इसे ऑन-लाइन नहीं करूंगा। एक घंटे की गुगली मुझे कहीं नहीं मिली। मुझे सर्वरफ़ॉल्ट सहेजें।


3
हम्म, सवालों के जोड़े 'इसकी एक अपेक्षाकृत आम समस्या है जब कुछ गलत हो जाता है SAN' क्यों अपने SAN इतना अविश्वसनीय है, मैं पहले कि बाहर की जाँच करेंगे? क्या तुमने सिर्फ umount के साथ unmounting की कोशिश की, और फिर इसे फिर से बढ़ाना? क्या आपको रीमाउंट करने की कोई अच्छी वजह है? मुझे आमतौर पर केवल रखरखाव के बाद अपने रूट फाइल सिस्टम को रिमूव करने की आवश्यकता होती है।
यूनिक्स जेनेटर

umount खुले फ़ाइल हैंडल पर उछलता है, जो अक्सर उन प्रक्रियाओं से होता है जिन्हें आपने बहुत बार बाहर किया होगा।
cagenut

मैं एक समान मुद्दा है, जहां एक के बाद SAN मुद्दा VMs डिस्क केवल पढ़ने के लिए और रिमाउंट करने का प्रयास ओपी में एक ही त्रुटि का कारण बनता है। VMs फाइबर चैनल स्टोरेज के साथ esxi 4.1 पर हैं। VM की रिबूट समस्या को ठीक करता है। मैं व्यक्तिगत रूप से नहीं सोचता कि यह बहुपथ के साथ कुछ भी करना है। निश्चित रूप से रिबूट किए बिना तय करने का एक तरीका होना चाहिए, खासकर जब से कुछ सेवाओं (अपाचे) को केवल एफएस पर पढ़ने के लिए चालू रखा जाता है।
विल

मैं यहाँ अपनी समस्या का हल ढूंढने आया था (जो अलग है, एक भ्रष्ट डिस्क है)। मैं इसके बजाय मुस्कुराया। +1 "द हेल
यू आर

मेरे पास इसके जैसा ही मुद्दा है, लेकिन मैं LVM का उपयोग कर रहा हूं। उसी lvdisplay ने मुझे "रीड 404 के बाद 449197309952: इनपुट / आउटपुट एरर" दिया, जब तक कि मैंने "मल्टीपाथ-आर" नहीं किया, तब एलवीएम ने त्रुटियों के बिना ही सब कुछ प्रदर्शित करना शुरू कर दिया। मैं अभी भी विभाजन को प्राप्त नहीं कर सकता, हालांकि। यह भी कहा जा सकता है कि डिवाइस व्यस्त नहीं है। यदि मैं डिवाइस का उपयोग करके सभी प्रक्रियाओं को बंद कर देता हूं, तो मैं अनमाउंट कर सकता हूं और फिर सफलतापूर्वक
रीमाउंट

जवाबों:


6

मैं अभी हाल ही में इस समस्या में भाग गया और इसे रिबूट करके हल किया लेकिन आगे की जांच के बाद ऐसा प्रतीत होता है कि निम्नलिखित आदेश जारी करना इसे ठीक कर सकता है।

echo running > /sys/block/device-name/device/state

मुझे लगता है कि आप धारा 25.14.4 को देखना चाहते हैं : इस दस्तावेज़ में एक ऑनलाइन लॉजिकल यूनिट की रीड / राइटिंग स्टेट को बदलना , हालांकि, मैं रिबूट करने की सलाह देता हूं।


धन्यवाद केविन। (अन) सौभाग्य से समस्या लंबे समय से चली आ रही है इसलिए मैं परीक्षण नहीं कर सकता लेकिन यह सबसे आशाजनक विकल्प की तरह दिखता है।
cagenut

3
इसी तरह के एक मुद्दे में मैंने अनुभव किया है / sys / block / device-name / device / state पहले से ही 'रनिंग' पर सेट है और उपरोक्त कमांड से समस्या हल नहीं हुई।
विल

3

प्रयोग करके देखें:

mount -o remount,rw /mnt/fo

मैं FreeBSD को जानता हूं, न कि लिनक्स को। लेकिन fBSD के लिए mount -rw /mnt/foo, इसलिए यह मेरे लिए सबसे सही लगता है।
क्रिस एस

1
प्रश्न में उल्लिखित परिदृश्य में मुझे यह काम कभी नहीं मिला। एक बार डिस्क को त्रुटियों के कारण केवल पढ़ने के लिए चिह्नित किया गया है, इसने हमेशा मेरे लिए एक रिबूट लिया है।
एलेक्स

1
मैं इसे ओपी में संपादित करूँगा, लेकिन एलेक्स यहीं है, समस्या फ़ाइल सिस्टम के नीचे दिखाई देती है: [रूट @ लोकलहोस्ट ~ ~ # माउंट -o रीमाउंट, आरडब्ल्यू / मेन्ट / फू माउंट: ब्लॉक डिवाइस / डेव / मैपर / mpath0 राइट-
ओनली

1
क्या आपने विभाजन को हटाने और इसे हटाने की कोशिश की है? मेरे पास ड्राइव से पहले डेटा त्रुटियां हैं, अनमाउंटिंग (या रीमाउंट, आरडब्ल्यू) ने इसे मेरे लिए तय किया है। यह SATA ड्राइव (और पुराने EIDE / SCSI) के साथ था, हालांकि, आपकी स्थिति में, मैं सोच रहा हूं कि क्या समस्या यह है कि ड्राइव चैनल को रीसेट करने की आवश्यकता है। मैं सोच रहा था कि HDIO_DRIVE_RESET किसी तरह ioctl के माध्यम से भेजा गया है। ब्लॉकदेव का उपयोग विभाजन तालिका की पुनरावृत्ति के लिए किया जा सकता है जो यह कर सकता है। IDE इसे hdparm -w के साथ उजागर करता है, शायद आपके FC ड्राइव्स के साथ, आपको ioctl चैनल पर भेजने का एक तरीका मिल गया है।

2

मैं पहली बार में इस मुद्दे को रोकने का प्रशंसक हूं। अधिकांश एंटरप्राइज़ UNIX बॉक्स हमेशा की तरह फाइलसिस्टम ऑपरेशन का पुन: प्रयास करेंगे। आपके MPIO कॉन्फ़िगरेशन को ट्यून करने से पहले आपको एक व्यवस्थापक के रूप में कुछ होमवर्क करने की आवश्यकता होती है। यदि आपके एप्लिकेशन को तब तक इंतजार करना चाहिए जब तक डिवाइस एक उपयोगी स्थिति में वापस नहीं आता है, तो यहां एक समाधान है। अपने /etc/multipath.conf में सुनिश्चित करें कि जिस डिवाइस प्रकार की आप परवाह करते हैं, उसके लिए "no_path_retry" सेट "कतार" के लिए सेटिंग है। इसे सेट करने से I / Os को कतार में विफल हो जाएगा जब तक कि कोई वैध मार्ग नहीं है। हमने अपने EMC Symmtrix / DMX बक्से के लिए कुछ शर्तों ड्राइव / नियंत्रक / srdf पथ विफलताओं / पुनर्प्राप्ति के तहत हिचकी के बारे में काम करने के लिए ऐसा किया है।

इस दृष्टिकोण ने हमारे बेकन को अनगिनत बार बचाया है और आपदा वसूली के लिए प्रतिकृति के साथ एक मल्टीकास्ट / मल्टीवेंडर सैन पर सैकड़ों बक्से के लिए हमारा मानक है।

बस सोचा था कि मैं आप सभी के साथ साझा कर सकता हूं। ख्याल रखना।


2

मेरे पास कुछ समस्या थी, जिसे मैंने तार्किक, बहुपथ उपकरणों के उपखंडों पर विकल्प के साथ hdparm का उपयोग करके हल किया -r

-r जाओ / सेट डिवाइस के लिए केवल-पढ़ने के लिए ध्वज। जब सेट किया जाता है, तो लिनक्स डिवाइस पर ऑपरेशन लिखना बंद कर देता है।


1

क्या आपको लगता है कि यह इस दस्तावेज़ के अनुभाग से संबंधित है जिसका शीर्षक है कि मेरे संग्रहण क्षेत्र नेटवर्क (SAN) पर मौजूद एक्स 3 फाइल सिस्टम बार-बार केवल-पढ़ने के लिए ही क्यों बन जाते हैं ?

यह काफी पुराना लेख है, और फाइबर चैनल के बारे में बात कर रहा है, लेकिन यह आपकी समस्या से संबंधित हो सकता है।


हां, यह बिल्कुल विशिष्ट बग नहीं है क्योंकि मैं उन संदर्भों की तुलना में बहुत नए संस्करण चला रहा हूं, लेकिन सभी प्रकार की समान परिस्थितियां इसका कारण बन सकती हैं। फाइबर-चैनल, hbas / hba-फर्मवेयर / hba- ड्राइवर्स, ऐरे फर्मवेयर, स्विच फर्मवेयर, फैब्रिक डिज़ाइन, डिवाइस-मैपर / मल्टीपाथ कॉन्फिग, lvm, और ext3 की दुनिया बस सादा चलती भागों का एक बहुत है। पर्याप्त वातावरण पर काम करें और आप इस परिदृश्य को समान नहीं बल्कि समान समस्याओं के ग्रैब बैग के कारण देखेंगे। हाथ में सवाल है, रिबूट किए बिना कैसे पुनर्प्राप्त / रिमूव किया जाए।
cagenut

0

फाइल सिस्टम भ्रष्टाचार? प्रयत्न:

dumpe2fs /dev/c/c | grep Filesystem\

यदि त्रुटियों से साफ है, तो आपको स्कैन और साफ करने की आवश्यकता है।


-4

लिनक्स बस मध्यम-बड़े पैमाने पर SAN के साथ अच्छी तरह से सामना नहीं करता है। आप इसे कुछ देखभाल और ठीक धुन देना चाहिए IO टाइमआउट और मल्टीपल टाइमआउट हैंडलिंग, वे सभी डेस्कटॉप-तैयार डिफॉल्ट पर बहुत अधिक हैं।

(याद रखें "मृत डिवाइस के लिए IO को अस्वीकार करना"?)


1
आपको संदर्भ और कठिन तथ्यों के साथ "लिनक्स को सैन के साथ सामना नहीं करना" और "डेस्कटॉप तैयार चूक" जैसे बैकअप स्टेटमेंट की आवश्यकता है।
क्रिस एस

1
डिफॉल्ट डिस्क IO समयबाह्य 30 सेकंड? उपरोक्त धागा? RedHat का नोट (जैसा कि हो सकता है पुराना) यह कहते हुए कि वे "स्टेट चेंज नोटिफिकेशन" को इनायत से नहीं संभाल सकते, जिस तरह से इसका इरादा होगा। उस रेडहैट ने डिफ़ॉल्ट रूप से मल्टीपाथ बाइंडिंग को एक स्थान (/ var / lib) में डाल दिया है जो मल्टीपथ ड्राइवर के लोड समय पर सुलभ नहीं होगा? कि आप पीसीआई हॉटप्लग एचबीए को पुन: हॉट-डिसेबल नहीं कर सकते हैं और अस्थायी रूप से स्वचालित रूप से सभी निर्भर एलयूएन ऑफ़लाइन ले सकते हैं जब तक कि इसे बदल नहीं दिया गया हो। कि इसमें कोई मल्टीथ्रेडेड HW इनिट नहीं है और> 1k लंड के साथ आने में "थोड़ी देर" लगती है। उदेव, एक शेल स्क्रिप्ट है ...
डार्कफादर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.