Lvremove के साथ हटाए गए तार्किक वॉल्यूम को कैसे पुनर्प्राप्त करें


12

मैं सेंटोस 5.5 पर हूं और एक्सईएन चला रहा हूं। मेरे पास एक बड़ा वॉल्यूम समूह है जो मैं lvcreate का उपयोग करके तार्किक वॉल्यूम बनाता हूं। आज मेरे पास एक ग्राहक था जिसने अपना खाता रद्द कर दिया, फिर लगभग एक घंटे बाद उसका मन बदल गया। दुर्भाग्यवश मैंने पहले ही LVM को हटा दिया था कि उसकी एक्सएमएल छवि पर आधारित थी। (सिर्फ एक मानक lvremove का उपयोग करके)। तब से इस डिस्क पर कोई अन्य LVM गतिविधि नहीं हुई है (और कुछ नहीं जोड़ा या हटाया गया)। क्या एक lvremove को "पूर्ववत करना" या तार्किक मात्रा को पुनर्प्राप्त करना संभव है? यदि हां, तो मैं इसके बारे में कैसे जाऊंगा?

जवाबों:


13

LVM बैकअप करता है कि यह मेटाडेटा है /etc/lvm/backupऔर /etc/lvm/archive। प्रत्येक फ़ाइल के शीर्ष पर यह आपको समय / डेटा बताएगा जब फ़ाइल उत्पन्न हुई थी, तो संभावना है कि आपके पास LV हटाए जाने से पहले पुराने मेटाडेटा की एक प्रति होगी। मेरा मानना ​​है कि मेटाडेटा के किसी भी समय बैकअप स्वचालित है।

निम्नलिखित खतरनाक और विनाशकारी हो सकता है इसलिए बहुत सावधान रहें और यदि संभव हो तो पूर्ण बैकअप लें।

इन वॉल्यूमग्रुप मेटाडेटा बैकअप को पुनर्स्थापित करने का कमांड है vgcfgrestore। सुनिश्चित करें कि आप vgcfgbackupआउटपुट के लिए एक अलग फ़ाइल निर्दिष्ट करने के लिए -f फ्लैग के साथ कमांड का उपयोग करके मौजूदा वर्किंग कॉन्फ़िगरेशन की एक वर्तमान प्रतिलिपि बनाते हैं ताकि आप किसी भी फाइल को बदल न दें जो / etc / lvm / backup या / etc में हैं। / lvm / संग्रह फ़ोल्डर। सुनिश्चित करें कि आप कॉन्फ़िगरेशन के साथ वर्तमान कॉन्फ़िगरेशन को अलग करना चाहते हैं ताकि आप यह सत्यापित कर सकें कि आपके द्वारा लागू किए जाने वाले एकमात्र परिवर्तन हाल ही में हटाए गए LV को फिर से बनाना है। आपके डेटा का पूर्ण बैकअप होने के बाद संभवत: कोई बुरा विचार नहीं है। आप समर्थन / मार्गदर्शन के लिए अपने लिनक्स विक्रेता से संपर्क करने पर विचार कर सकते हैं यदि आप आगे बढ़ने से पहले एक समर्थन अनुबंध के तहत हैं क्योंकि मुझे खुद ऐसा कभी नहीं करना पड़ा है।

सौभाग्य।


1
Vgcfgrestore में गहराई से पढ़ते हुए, ऐसा लगता है कि मुझे इस प्रयास से पहले हर वीएम को उस बॉक्स पर बंद करना होगा, या पूरे ऐरे को जोखिम में डालना होगा। ऐसा लगता है कि आपके निर्देश काम करेंगे इसलिए मैं उत्तर स्वीकार कर रहा हूं, लेकिन डेटा जोखिम के लायक नहीं है। धन्यवाद
जॉन पी

@ जॉन पी। हाँ, मुझे वीएम के साथ और इस तरह के माहौल में ऐसा करना मुश्किल होगा। मुझे लगता है कि इस पर एक दूर ले जाता है कि भविष्य में शायद खाते को हटाने की प्रक्रिया में 30 दिन की कोई अवधि शामिल नहीं होनी चाहिए।
3dinfluence

18

"क्या आप कृपया बैकअप फ़ाइल से EFROM और ETO खोजने के लिए अधिक विशिष्ट हो सकते हैं? सभी lv में मेरी बैकअप फ़ाइल में 0 से" start_extend "है इसलिए मैं थोड़ा खो गया हूँ :) धन्यवाद! - user186975 Aug 24 '13 17 से : 06 "

ठीक है, मैं बहुत विशिष्ट होगा ... तार्किक मात्रा को पुनर्प्राप्त करने का सबसे सरल तरीका।

उदाहरण:

1 - मैंने अपनी तार्किक मात्रा को हटा दिया है!

$ sudo lvremove /dev/vg1/debian.root

2 - सबसे पहले बात यह है कि /etc/lvm/archive/vg1_(xxxxx).vg पर आर्काइव फ़ाइल देखें। मैं ऐसा कर सकता हूं, बस उस तारीख को देख रहा हूं जिसमें मैंने तार्किक आयतन को हटा दिया है!

$ sudo ls -l /etc/lvm/archive |more

3- मैंने इसे पा लिया!

-rw------- 1 root root 16255 Mar 20 14:29 vg1_00223-235991429.vg
-rw------- 1 root root 16665 Mar 20 16:49 vg1_00224-748876387.vg
-rw------- 1 root root 17074 Mar 20 16:49 vg1_00225-931666169.vg
-rw------- 1 root root 17482 Mar 20 16:50 vg1_00226-1238302012.vg
-rw------- 1 root root 18081 **Mar 20 21:57 vg1_00227-2048533959.vg**

तारीख जहाँ मैं lvremove किया था ... यह एक मिनट पहले था ..

4 - चलो फाइल देखते है!

$ sudo head /etc/lvm/archive/vg1_00227-2048533959.vg
*# Generated by LVM2 version 2.02.95(2) (2012-03-06): Thu Mar 20 21:57:58 2014
contents = "Text Format Volume Group"
version = 1
description = **"Created *before* executing 'lvremove /dev/vg1/debian.root'"**
creation_host = "server"    # Linux server 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64
creation_time = 1395363478  # Thu Mar 20 21:57:58 2014*

5 - ठीक होने से पहले एक परीक्षण करें!

$ sudo vgcfgrestore vg1 --test -f /etc/lvm/archive/vg1_00227-2048533959.vg
Test mode: Metadata will NOT be updated and volumes will not be
(de)activated.   **Restored volume group vg1**

6 - ठीक है, अब (--test) के बिना कमांड लाइन दोहराएं

$ sudo vgcfgrestore vg1 -f /etc/lvm/archive/vg1_00227-2048533959.vg
**Restored volume group vg1**

7 - इसे जांचें!

$ sudo lvscan |grep debian
ACTIVE            '/dev/vg1/debian.root' [7,81 GiB] inherit

8 - यदि तार्किक सक्रिय नहीं था, तो इसे करें!

$ sudo lvchange -a y /dev/vg1/debian.root 

इट्स ऑल

मुझे उम्मीद है कि यह अन्य लोगों की मदद कर सकता है जो इस समाधान की तलाश कर रहे हैं!


5

Lvremove से पुनर्प्राप्त करने के लिए सबसे आसान चीज (यह मानते हुए कि आपने LV को निवास के लिए नहीं लिखा है) इस प्रकार है:

बस / मेटाडेटा / lvm / संग्रह में अपने मेटाडेटा का बैकअप ढूंढें और पता लगाएँ

a) जो LV का विस्तार करता है, वह (EFROM, ETO)
b में रहता था) जो आपके LV का PV रहता था और जो उस PV पर विस्तार कर रहा था (PFROM, PTO)

आपके पास यह जानकारी होने के बाद कि आप पीवी के पहले 8kB को मिटाए बिना ठीक उसी आकार का एक नया LV बनाते हैं, जिसका पीवी पर विस्तार होता है :

lvcreate --extents EFROM-ETO --zero n --name customer007 YOUR-VG-NAME /dev/yourpv:PFROM-PTO

1
क्या आप कृपया बैकअप फ़ाइल से EFROM और ETO खोजने में अधिक विशिष्ट हो सकते हैं? सभी lv में मेरी बैकअप फ़ाइल में 0 से एक "start_extend" है इसलिए मैं थोड़ा खो गया हूं :) धन्यवाद!

3

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

हटाए गए तार्किक वॉल्यूम के आकार और स्थिति की जांच करें क्योंकि वे फ़ाइलों को / etc / lvm / संग्रह में पढ़ने से हटाने से पहले थे। मात्रा के आकार में है extent_countकी segment1(या की राशि segment*/extent_countमूल्यों अगर यह कई विस्तार था)। स्थिति stripesभौतिक आयतन उर्फ ​​(उदा pv0) के बाद खंड में है ।

उदाहरण के लिए, खंड खंड इस तरह दिख सकता है:

    physical_volumes {
            pv0 {
                    device = "/dev/somedisk" # Hint only
                    ...
            }
    }

    logical_volumes {
            ...
            example {
                    ...
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 1024     # 4 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 30720
                            ]
                    }
            }
            ...
    }

इस exampleवॉल्यूम का आकार 1024 था और यह 30720 की सीमा से शुरू होने वाले / dev / somedisk पर स्थित था।

प्रारंभ + आकार -1 = 30720 + 1024 - 1 = 31743 के रूप में अंतिम सीमा की गणना करें। उस वॉल्यूम मुद्दे को फिर से बनाने के लिए:

lvcreate --extents 1024 --zero n --name example vgname /dev/somedisk:30720-31743

इस जवाब ने कल ही मेरी रात बचाई थी! मेरे पास एक टूटी हुई XenServer थी जो API त्रुटि के कारण गलत LV को हटा रही थी ...: o
Elektordi

2

मेरी भी ऐसी ही स्थिति थी। मेरे पास सभी पीवी में वांछित एलवी हैं, लेकिन मेरे वीजी ने पीवी और 0 एलवी गायब हैं। मैंने निम्नलिखित कार्य करके पुनः प्राप्त किया:

  1. जड़ हो गए
  2. pvsसभी ड्राइव के लिए UUIDs इकट्ठा करने के लिए चलाएँ ।
  3. / Etc / lvm / संग्रह में फ़ाइलों की समीक्षा करें जब तक कि मुझे एक समान UUIDs सूचीबद्ध नहीं मिला।
  4. संग्रहीत कॉन्‍फ़िगर फ़ाइल की एक कार्य प्रतिलिपि बनाएँ, और संपादन प्रारंभ करें।
  5. में physical_volumesअनुभाग, सेट device =वर्तमान डिवाइस / UUIDs द्वारा रिपोर्ट से मिलान करने लाइनों pvs, किसी भी स्पष्ट "MISSING"झंडे, और किसी भी हटाने pvNवर्गों है कि वास्तव में लापता हैं।
  6. logical_volumesअनुभाग में, उन सूचियों को हटा दें जिनकी pvNखंडों पर धारियां थीं जो अब मौजूद नहीं थीं ।
  7. बस, फिर मैं दौड़ता रहा

    vgcfgrestore --test vg -f /root/dangerously_edited.vg

  8. जब वह काम कर रहा था, मैं --testविकल्प के बिना फिर से भागा ।

मैंने PVs sdg और sdh के साथ VG बढ़ाकर अपनी विशेष स्थिति प्राप्त की। फिर मैंने /dev/sdg /dev/sdhकमांड लाइन पर निर्दिष्ट करते हुए एक नया LV बनाया, जिससे मुझे पता था कि नया LV उन ड्राइव पर है। फिर मैंने उन ड्राइव को एक नई मशीन में स्थानांतरित कर दिया। पुरानी मशीन लापता ड्राइव के बारे में बहुत परेशान थी, और जब मैंने उन्हें मजबूर किया, तो उसने सभी एलवी को भी हटा दिया। ओह।

अगली बार, निश्चित रूप से, मैं इस समस्या से बचने के लिए एक नया वीजी बनाऊंगा।

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