मैं BTRFS विभाजन को कैसे पुनर्प्राप्त करूंगा जो माउंट नहीं करेगा?


13

12.04 के लिए इंस्टॉलेशन विफल रहा, और समाधान यह था कि इंस्टॉलर ने उन btrfs विभाजन को अनदेखा किया जो मैं पहले / घर के लिए उपयोग करता रहा हूं।

अब यह स्थापित हो गया है, मैं इसे btrfs विभाजन को माउंट करने के लिए प्राप्त करने की कोशिश कर रहा हूं ताकि मैं अपनी 70GB फाइलों तक पहुंच बना सकूं। यह माउंट नहीं करेगा, और निम्न तीन पंक्तियों के साथ त्रुटियों को दूर करेगा:

parent transid verify failed on 31302336512 wanted 62455 found 62456
parent transid verify failed on 31302336512 wanted 62455 found 62456
parent transid verify failed on 31302336512 wanted 62455 found 62456

क्या कोई मुझे बता सकता है कि इस विभाजन को कैसे काम करना है? मैंने ऑनलाइन पढ़ा है कि मैं शायद btrfs- पुनर्स्थापना का उपयोग करके डेटा को पुनर्प्राप्त कर सकता हूं, लेकिन मुझे वह प्रोग्राम कहीं भी नहीं मिल रहा है।

जवाबों:


10

सबसे आसान उपाय

btrfs-zero-log /dev/sda5

आपका वह मुद्दा मिलना क्योंकि लेनदेन (लिखना या हटाना) जर्नल लॉग में अटका हुआ है और डिस्क इसे मेल नहीं खाता है।

यह काम किस प्रकार करता है:

इसलिए जब डेटा 1 लिखा जाता है तो उसका जर्नल जर्नल को डिस्क (या उसी समय पर लिखा जाता है, लेकिन जर्नल आने वाले राइट के बारे में मेटाडेटा को बचाता है - निश्चित नहीं ... उस हिस्से पर अधिक शोध की आवश्यकता है) ...

किसी भी तरह अगर आप इस राइट / डिलीट के बीच में सिस्टम को बंद कर देते हैं या सिस्टम को कुछ hickups करते हैं (USB को जो आपके btrfs माउंट पॉइंट को होल्ड करता है) को डिस्क्राइब करता है , तो जब वह रिटर्न देता है तो माउंट काम नहीं करेगा ( dmesg और btrfsck) आपको और अधिक विस्तार से त्रुटियाँ दिखाते हैं) ...

Dmesg को देखते हुए आपको वही ट्रांज़िड संदेश दिखाई देंगे।

आप कुछ इस तरह देखेंगे:

parent transid verify failed on 109973766144 wanted 1823 found 1821

इसका मतलब यह है कि btrfs 1826 को स्थानांतरित करना चाहता था (जो कि पत्रिका पर था) लेकिन डिस्क पर इसे 1821 देखा गया। इसलिए डिस्क 2 लेन-देन था जो पत्रिका के साथ सिंक होने से दूर था। मैं व्यक्तिगत रूप से एक brtfs- शून्य लॉग इन करने का जोखिम उठाऊंगा क्योंकि इसके केवल 2 लेनदेन हैं। लेकिन 100% सुरक्षित होना अगर यह आपका एकमात्र डेटा है (वैसे यदि आपके पास महत्वपूर्ण डेटा है तो आपको कभी भी इसकी केवल 1 प्रति नहीं होनी चाहिए, हमेशा एक सुरक्षित अन्य स्थान में एक कॉपी / बैकअप होना चाहिए - btrfs.nt के रचनाकारों को दोष देना एक बैकअप न होने की ज़िम्मेदारी के अभाव में व्यक्तियों के खिलाफ उचित ठहराना - btrfs बैकअप समाधान नहीं है, इसकी फाइल सिस्टम - इसके अलावा इसकी एक कॉपी होने के अलावा कुछ भी सही बैकअप समाधान नहीं है - जहां समता या मिरर ड्राइव भी नहीं है, एक सच्चा बैकअप आल्प्स में कहीं भूमिगत बैठे हैं जबकि इसकी सक्रिय प्रतिलिपि टेक्सास में आपके कार्यालय में है)

parent transid verify failed on 31302336512 wanted 62455 found 62456

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

एक btrfsck / dev / sda5 (जो वैसे ही सिर्फ एक पूरी तरह से सुरक्षित है, इसके केवल btrfsck विकल्प, जिनके बारे में आपको चिंता करने की ज़रूरत है) को चलाकर आपको उन संदेशों को भी दिखाएगा।

लेकिन सावधान रहें कि यदि डेटा महत्वपूर्ण है, तो मैं पहले करूँगा (जैसा कि अन्य जेंट्स ने कहा है)

mount -t btrfs -o rootflags=recovery,nospace_cache /dev/sda3 /mnt/sda3

mount -t btrfs -o rootflags=recovery,nospace_cache,clear_cache /dev/sda3 /mnt/sda3

mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3

फिर अपनी सभी फाइलों को सुरक्षित स्थान पर cp या rsync करें, तब जब btrfs-शून्य-लॉग सुरक्षित हो, तो यदि इसका सफल संचालन आपने अभी-अभी अपना सिस्टम बर्बाद कर दिया है, लेकिन यदि यह सफल नहीं हुआ, तो आप बस अपना गधा)

फिर यदि माउंट विफल हो जाते हैं तो एक btrfs पुनर्स्थापना (सिस्टम का डंप, जैसा कि मैं इसके एक फिर से शुरू करने योग्य संचालन को समझता हूं, हालांकि यह हर बार Y या y के लिए पूछता रहता है और फिर से आउटपुट को देखता है)

btrfs restore /dev/sda5 /USB

तब जब सुरक्षित (जब btrfs पुनर्स्थापना की जाती है) btrfs-शून्य-लॉग करते हैं, यदि इसका सफल संचालन आपने अभी-अभी अपना सिस्टम वापस करने में बहुत समय बर्बाद किया है (लेकिन यदि यह सफल नहीं हुआ, तो आपने अपना गधा बचा लिया)

आप पहले स्क्रीन चला सकते हैं

screen /bin/bash

btrfs restore /dev/sda5 /USB

स्क्रीन साइड नोट

अलग करने के लिए (कमांड अभी भी चलेगा): नियंत्रण-फिर एक प्रकार ": अलग करें" बिना उद्धरण के फिर ENTER दबाएँ

अलग करने का दूसरा तरीका: फिर पोटीन या अपने टर्मिनल से बाहर निकल जाएं और यह अलग हो जाएगा (कमांड / रिस्टोर अभी भी चलेगा)।

इस पर जांच करने के लिए, बस इसे वापस स्क्रीन करें:

screen -x

स्क्रीन -x सत्रों में संलग्न होगा, भले ही अलग हो जाए, और इसके विपरीत-यदि कहता है, तो यह संलग्न करेगा भले ही पहले से ही संलग्न हो)

यदि आपके पास कई स्क्रीन हैं, तो स्क्रीन -x आपको बताएगा कि सत्र को संलग्न करने के लिए और अधिक विशिष्ट होना चाहिए:

screen -ls

सूची को याद रखने के लिए आसान सभी सत्रों के लिए एल.एस.

पीआईडी ​​देखने के लिए आप यह भी कर सकते हैं:

ps aux | grep screen

एक बार जब आप अपना पीआईडी ​​खोज लेते हैं, तो स्क्रीन को इस तरह से चलाएं:

screen -x PID

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


7

रूट एफएस माउंट विकल्पों का उपयोग करके बूट पर माउंट करें:

rootflags=recovery,nospace_cache

या

rootflags=recovery,nospace_cache,clear_cache

Btrfs माउंट विकल्पों की पूरी सूची यहाँ होनी चाहिए https://btrfs.wiki.kernel.org/index.php/Mount_options और अन्य चीजें उपयोगी भी हो सकती हैं, जैसे कि noatime, nodatacow (मेरे लिए मुझे एक कर्नेल बग निर्धारित करना) मेरी फ़ाइलों को कॉपी करने का मौका)।

इसे अपने grub.cfg / menu.lst में जोड़ें, या बूट करते समय इसे टाइप करें।

Nospace_cache सामान चीजों को बहुत धीमा कर देगा। बस बूट करें, प्रतीक्षा करें (लंबा), शट डाउन करें, और सामान्य रूप से बूट करें।

मेरे पास कुछ दिन पहले भी यही बात थी, और ऊपर ने इसे ठीक कर दिया। लेकिन इसके बाद भी, कुछ अंतरिक्ष मुद्दे थे ... रिपोर्ट की गई जगह 100% नहीं है, लेकिन यह अभी भी अंतरिक्ष से बाहर कह सकता है।

==

मुझे लगता है कि आप अपने fstab में भी वही विकल्प जोड़ सकते हैं, उदाहरण के लिए:

UUID=0237alksfadg-lhdfkj3624-4fdfjb-9dsfe2d-dfddaf /home btrfs defaults,recovery,nospace_cache,clear_cache,subvol=@home 0  
 2

यदि आप किसी विभाजन पर माउंट / होम निर्देशिका को पुनर्प्राप्त करने का प्रयास कर रहे थे UUID=0237alksfadg-lhdfkj3624-4fdfjb-9dsfe2d-dfddaf


दो क्यों nospace_cache?
बजे एक CVn

यह एक टाइपो था, जिसे स्पष्ट किया जाना चाहिए था
पीटर

:) आप बस बैकअप द्वारा बचाया!
derflocki

1

पीटर के जवाब ने मेरे लिए समस्या हल कर दी, हालांकि उबंटू पर नहीं। मेरे पास /homeविभाजन विभाजन था जो निश्चित रूप से भ्रष्ट हो गया था। सिस्टम बूट नहीं होगा क्योंकि यह चालू था fstab। मैंने रखरखाव मोड में प्रवेश किया, उस विभाजन के साथ लाइन को बाहर किया, और सामान्य रूप से बूट किया (मेरे पास एक अतिरिक्त ext4 विभाजन था जिसे मैं उपयोग कर सकता था /home)।

मैंने निम्नलिखित कमांड के साथ मैन्युअल रूप से विभाजन को माउंट किया:

mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3और वास्तव में मेरे डेटा को बचाने में सक्षम था। हालाँकि इसे माउंट करने में इतना समय नहीं लगा। तो धन्यवाद पीटर।


3
आप बस पेटीएम के उत्तर पर टिप्पणी के रूप में पोस्ट करना चाह सकते हैं, 'यह काम किया' और फिर इसे सही उत्तर के रूप में चिह्नित करें। अन्यथा, पीटर किसी भी "सही" क्रेडिट (प्रतिनिधि अंक) नहीं मिलेगा
थॉमस वार्ड

1
mount -t btrfs -o ro,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3

ro = केवल पढ़ा

यह काम मेरे लिए


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

1

मुझे भी यही समस्या थी। रिबूट के बाद मैं अब अपने btrfs विभाजन को माउंट करने में सक्षम नहीं था। हालाँकि यहाँ वर्णित कोई भी समाधान इसे हल नहीं कर सका।

मेरे लिए इसे ठीक करने के लिए 3.10 से 3.12 तक कर्नेल को अपग्रेड किया गया था। रिबूट के बाद btrfs विभाजन फिर से माउंट किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.