fsck: सबसे गहन डिस्क जांच के लिए विकल्प


12

मुझे एक ज्ञात समस्या के साथ एक डिस्क मिली है (मुझे पता है क्योंकि dd gags जब मैं इसे क्लोन करने की कोशिश करता हूं)। लेकिन जब मैं एक जीवित सीडी के साथ बूट करता हूं और अनमाउंट विभाजन पर fsck चलाता हूं, तो मुझे यह मिलता है:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

एक मिलीसेकंड बाद में। यह मानना ​​मुश्किल है कि यह एक एमएस में पूरी हार्ड ड्राइव की जाँच कर रहा है।

मुझे यह भी निश्चित नहीं है कि मुझे fsck'ing sdf1 या संपूर्ण भौतिक डिस्क sdf होना चाहिए। जब मैं पूरी ड्राइव की कोशिश करता हूं:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

जो मुझे समझ में नहीं आता है क्योंकि कोई भी विभाजन आरोहित नहीं होता (मैं सिर्फ एक लाइव सीडी से बूट हुआ और कमांड चलाया)।

तो मेरा मूल प्रश्न है: मैं अपनी समस्या डिस्क का विश्लेषण करने वाले मिलीसेकंड से अधिक खर्च करने के लिए fsck (या एक अलग उपकरण जो बेहतर काम कर सकता है) कैसे प्राप्त कर सकता हूं?

जवाबों:


14

सबसे पहले, आप विभाजन पर fsck चलाने के बारे में सही हैं - fsck केवल फाइल सिस्टम पर काम करता है, संपूर्ण डिस्क पर नहीं। आप डिस्क पर सभी विभाजनों की एक सूची प्राप्त कर सकते हैं fdisk -l /dev/sdd

आप फाइलसिस्टम प्रकार शायद ext3 हैं (अधिकांश लिनक्स डिस्ट्रोस में डिफ़ॉल्ट), जिसका अर्थ है कि यह आमतौर पर एक fsck पास करेगा जब तक कि इसकी पत्रिका साफ न हो। fsck -fजैसा कि ऊपर उल्लेख किया गया है, एक पूर्ण जांच के लिए मजबूर करेगा।

हालाँकि, यदि आपने डिस्क पर त्रुटियों को पढ़ा है, तो fsck की कोई भी मात्रा dd की मदद नहीं करेगी - क्योंकि dd वास्तव में डिस्क की सामग्री की परवाह नहीं करता है।

डिस्क को पढ़ने के लिए dd पाने के लिए और रीड एरर का उपयोग dd conv=noerror,syncकरना जारी रखें, जो रीड एरर पर जारी रहेगा और रीड एरर होने पर किसी भी ब्लॉक को null बाइट्स अपग्रेड करेगा।

बैकअप समाप्त करने के बाद, आपको fsck -fइसे फिर से चलाने और चलाने के लिए क्लोन पर चलना चाहिए।

एक और टिप: यदि आप किसी फ़ाइल में विभाजन का बैकअप लेते हैं, तो आप इसके साथ लूपबैक को माउंट कर सकते हैं mount -o loop filename.ext3 /mountpoint। यह भी कहें कि आप 200G पार्टीशन को 500G ड्राइव पर क्लोन कर रहे हैं, तो आप चला सकते हैं resize2fs /dev/sdx1(जहाँ sdx आपकी नई ड्राइव है, एक सिंगल 500G पार्टीशन के साथ पार्टीशन किया गया है), और फाइल सिस्टम को 500G में बदल दिया जाएगा।

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


मैंने "dd conv = noerror, सिंक" की कोशिश की, लेकिन परिणामी क्लोन डिस्क अप्राप्य थी। जो निराशाजनक है, क्योंकि बूट डिस्क ठीक चलता है, ठीक चलता है, लेकिन मैं इसे किसी अन्य डिस्क पर क्लोन नहीं कर सकता क्योंकि डिस्क में 1 खराब ब्लॉक है (जहां जाहिरा तौर पर कोई डेटा नहीं है)। मुझे अटका हुआ लगता है ...
फ्रेड हैमिल्टन

यह मत भूलो कि डिस्क अनबूटेबल (भिन्न डिस्क ज्यामिति और एमबीआर / बूट लोडर मुद्दों) क्यों अन्य कारण हो सकते हैं। यदि आप पहली बार यह पुष्टि कर सकते हैं कि नई डिस्क पर फ़ाइल सिस्टम ठीक है, तो आप सिस्टम में बूट से इंस्टॉल सीडी से बचाव कर सकते हैं, GRUB बूटलोडर आदि को अपडेट कर सकते हैं। पहले fsck -f / dev / sdx1 चलाएं, फिर माउंट / देव / sdx1 / mnt के साथ फाइल सिस्टम को माउंट करने का प्रयास करें - x को उपयुक्त ड्राइव अक्षर से बदलें।
क्रिस्टियन

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

4
Ddrescue (या dd_rescue + dd_rhelp) का उपयोग करना dd से बेहतर है; यह त्रुटियों से निपटने के लिए होशियार है, जिन सेक्टरों को त्रुटियां मिलीं, उन्हें पुनः प्रयास करें। gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddresoscope
freiheit

1
रूट ext2, ext3 या ext4 विभाजन के लिए सबसे गहन डिस्क चेक (यदि संभव हो तो स्वचालित रूप से स्वचालित रूप से) निम्नानुसार निष्पादित किया जाता है: (1) बचाव मीडिया से बूट (रूट विभाजन अनमाउंट होना चाहिए), (2) रन e2fsck -f -cc -D -p। यह मीडिया के लिए गैर-विनाशकारी रीड-राइट चेक के साथ जांच को मजबूर करता है और सभी पाया गया समस्याओं की मरम्मत करता है जिन्हें सुरक्षित रूप से तय किया जा सकता है। 2TB HDD के लिए कुछ दिन लग सकते हैं ...
Mikko Rantalainen

10

यह आपके मामले में प्रासंगिक नहीं हो सकता है, लेकिन मुझे लगा कि मैं इसका जिक्र करूंगा:

निचले स्तर की डिस्क जांच के लिए, आप badblocksउपयोगिता का उपयोग कर सकते हैं । यह एक उपकरण के माध्यम से जाता है और किसी भी खराब ब्लॉक की रिपोर्ट करता है (यह कुछ भी मरम्मत नहीं कर सकता है, निश्चित रूप से)। डिस्क के भौतिक रूप से क्षतिग्रस्त होने की पुष्टि करने के लिए, यह कम से कम उपयोगी है।

इसके अलावा, फाइलसिस्टम द्वारा उपयोग किए जा रहे खराब ब्लॉकों से बचने के लिए e2fsckउपयोग कर सकते हैं badblocks। से e2fsckमैनुअल:

  -c     This option causes e2fsck to use badblocks(8) program to do a  read-
         only scan of the device in order to find any bad blocks.  If any bad
         blocks are found, they are added to the bad block inode  to  prevent
         them from being allocated to a file or directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.

साथ ही नोट fsck_hfs -sखराब ब्लॉक्स के लिए स्कैन करेगा।
awiebe

5

आप fsck के लिए -f विकल्प चाहते हैं (भले ही फ़ाइल सिस्टम साफ लगे)।

आपको एकल उपयोगकर्ता मोड में fsck चलाना चाहिए। लाइव cdrom बूट के बिना ऐसा करने का एक आसान तरीका -F विकल्प के साथ रिबूट करना है।

shutdown -rF now 

धन्यवाद, लेकिन एक सवाल: अगर मैं एक लाइव सीडी का उपयोग करके -F विकल्प के साथ रीबूट करता हूं, तो लाइव सीडी को कैसे पता चलेगा कि यह चेक चलाना था? यह एक सीडी है, इसकी कोई स्मृति नहीं है कि मैं इसके बारे में जानता हूं ...
फ्रेड हैमिल्टन

मुझे नहीं लगता कि आपको लाइव सीडी से ऐसा करने की आवश्यकता है। लाइव सीडी से बूट करें और इसमें -f (बल) विकल्प के साथ अनमाउंट किए गए विभाजन पर fsck चलाएं। या, आप शटडाउन -rF के साथ अपनी हार्ड डिस्क से रिबूट कर सकते हैं। इससे पहले कि फाइलसिस्टम आरोहित होता है, एक fsck को बाध्य करेगा।
रिचर्ड हॉकिंस

दरअसल, यह सिंगल यूजर मोड में fsck करेगा। मैंने अपना उत्तर संपादित कर दिया है।
रिचर्ड हॉकिंस

1
-Fके लिए झंडा shutdownआमतौर पर आधिकारिक तौर पर दर्ज नहीं किया है (देखें man shutdownऔर shutdown --helpऔर नोटिस वह वहाँ नहीं है), तो आप इसे काम करने के लिए भरोसा नहीं कर सकते। कभी कभी यह एक सेशन नहीं है। आधिकारिक तौर पर रूट विभाजन को स्कैन करने का एकमात्र तरीका वैकल्पिक मीडिया से बूट करना है।
मिकको रैंटलैनेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.