लिनक्स LVM स्नैपशॉट को कमिट करें या वापस लाएं?


16

मैं अपने CentOS 5 सर्वर पर प्रायोगिक उन्नयन करने वाला हूं। अगर अपग्रेड फेल हो जाता है, तो मैं फाइल सिस्टम में हुए बदलावों को वापस लेना चाहता हूं। यह परिदृश्य LVM2 पढ़ने-लिखने के स्नैपशॉट के लिए LVM HOWTO की धारा 3.8 में उदाहरण के समान लगता है - लेकिन उदाहरण वास्तविक वास्तविक में नहीं बल्कि कमी है।

  1. मैं उन परिवर्तनों को कैसे करूँगा, जो उन्हें मूल विभाजन में वापस मिलाते हैं?

  2. मैं परिवर्तनों को वापस कैसे लाऊँगा, फाइल सिस्टम को उसकी मूल स्थिति में वापस ला रहा हूँ? क्या मुझे यह मान लेना चाहिए कि मुझे कई सेवाओं को फिर से शुरू करने की आवश्यकता होगी, यदि एकमुश्त रिबूट न ​​हो?

  3. क्या किसी विभाजन पर केवल कुछ निर्देशिकाओं को स्नैपशॉट देना संभव है, या क्या यह विभाजन-व्यापी ऑपरेशन है?

जवाबों:


11

यदि आप Linux 2.6.33+ चला रहे हैं और LVM 2.0.5 %+ का उपयोग कर रहे हैं, तो LVM2 / डिवाइस मैपर स्नैपशॉट मर्ज कार्यक्षमता उपलब्ध है:

lvconvert --merge

इस पोस्ट को देखें: http://www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/

यह http://kernelnewbies.org/Linux_2_6_33 (खंड 5, एमडी / डीएम पर देखें) और LVM चैंज 2.0.58 पर देखें: ftp://sources.redhat.com/pub/lvm2/WHATS_NEW

लेकिन मैं आपको अभी तक यह नहीं बता सकता कि इसे ठीक से कैसे उपयोग किया जाए ;-)


dmsetup targetsस्नैपशॉट-मर्ज दिखाना चाहिए अगर ऐसा है तो मर्ज-कमांड, जो स्नैपशॉट-एलवी पर लागू होता है वह उस स्थिति में वापस आ जाएगा जहां स्नैपशॉट लिया गया था।
नेल्स

ओपी किसी प्रकार के मर्ज कदम के माध्यम से परिवर्तन करने के बारे में उलझन में लगता है। स्नैपशॉट आकार में बढ़ने के कारण परिवर्तन किए जा रहे हैं। स्नैपशॉट (परिवर्तनों का) उन्हें lvconvert --merge के माध्यम से वापस करने के लिए आवश्यक जानकारी है। यदि ओपी अपने परिवर्तनों से खुश है तो वह स्नैपशॉट को lvremove के माध्यम से हटा सकता है।
विंस

21

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

 # lvrename lvm root root-old
 # lvcreate -n root -s lvm/root-old -L 10G

आकार को उचित रूप से चुना जाना चाहिए। फिर रिबूट, इसलिए 'नया' lvm / ubuntu रूट के रूप में माउंट हो जाता है और आप अपग्रेड कर सकते हैं। अब आप नए संस्करण का परीक्षण कर सकते हैं और यहां तक ​​कि पुराने सिस्टम में भी बदलाव कर सकते हैं

 # lvrename lvm root root-new
 # lvrename lvm root-old root
 # reboot

यदि आप अपग्रेड को छोड़ना चाहते हैं, तो बस चलाएं (पुराने सिस्टम से)

# lvremove lvm/root-new

यदि आप परिवर्तन करना चाहते हैं, तो बस चलाएं (पुरानी प्रणाली से)

# lvconvert --merge lvm/root-new

या, नई प्रणाली से

# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root

इसके बाद रिबूट हुआ। सिस्टम अभी मर्ज करने से मना कर देगा, क्योंकि वॉल्यूम खुले हैं। इसलिए मर्ज बूट के दौरान शुरू किया जाएगा और जारी रहेगा जबकि आप सिस्टम के साथ काम कर सकते हैं।

ओह, और वैसे: सिस्टम के बीच बदलते समय, उचित कर्नेल का उपयोग करना याद रखें। चूंकि / बूट lvm का हिस्सा नहीं है, इसलिए पुरानी और नई गुठली को साथ-साथ रखा जाएगा।


आपके उत्तर के लिए धन्यवाद। मैंने अभी एक CentOS 7 वर्चुअल मशीन में अपनी प्रक्रिया को दोहराया है और यह एक आकर्षण की तरह काम करता है। मेरी वर्चुअल मशीन को मर्ज करने की प्रक्रिया के बीच में रीसेट करने के बाद, LVM सबसिस्टम ने इसे फिर से शुरू कर दिया, जबकि सिस्टम अभी भी अपग्रेडेड फाइलों तक पहुंच बना रहा था।
एंडरसन मेडेरियोस गोम्स

इस उत्तर का एक हिस्सा lvconvert --merge के माध्यम से परिवर्तन करने का सुझाव देता है। जैसे-जैसे स्नैपशॉट आकार में बढ़ता है वैसे-वैसे बदलाव भी हो रहे हैं। एक lconconvert - स्नैपशॉट जानकारी का उपयोग करके परिवर्तन (वापस बाहर) बदल जाता है।
विंस

10

ठीक है, मुझे लगता है कि मुझे यह पता चला है कि HOWTO 3.8 को फिर से पढ़ना है।

  • रीड-ओनली स्नैपशॉट्स (जैसे LVM1) में स्नैपशॉट निर्माण के बाद ब्लॉक-स्तर के अंतर होते हैं - मूल अभी भी बदल जाता है, लेकिन स्नैपशॉट मूल का प्रतिनिधित्व बनाए रखता है। पढ़ना से स्नैपशॉट प्रस्तुत डेटा के रूप में यह उस समय दिखाई दिया।
  • रीड-राइट स्नैपशॉट (LVM2 में डिफ़ॉल्ट) को लिखा जा सकता है: वे मूल विभाजन का एक कांटा हैं। लेखन के लिए स्नैपशॉट मूल नहीं बदलता है।

स्नैपशॉट काम करने का तरीका मूल से परिवर्तनों का एक ब्लॉक-स्तरीय सेट है। इसलिए, जब मूल को लिखा जाता है, तो निम्न चीजें होती हैं:

  1. कुछ मूल लिखने की कोशिश करता है।
  2. मूल पढ़ा जाता है, और मूल से ब्लॉक स्नैपशॉट में कॉपी किए जाते हैं।
  3. मूल बदल जाता है।
  4. स्नैपशॉट में "रिवर्स-डिफरेंशियल" होते हैं - वे बदलाव जो मूल रूप को बनाते हैं जैसे कि स्नैपशॉट बनाया गया था।

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

मेरे अपने प्रश्न का उत्तर देना:

LVM के साथ एक नया स्नैपशॉट बनाएँ। यदि अपडेट को स्नैपशॉट माउंट बिंदु पर लिखने के लिए कॉन्फ़िगर किया जा सकता है, तो R / W स्नैपशॉट का उपयोग करें। अन्यथा, या तो आरओ या आर / डब्ल्यू करेगा।

फिर:

  • यदि R / W स्नैपशॉट माउंट बिंदु पर लिख रहा है, तो स्नैपशॉट को मूल में लिखकर कमिट करें , और स्नैपशॉट को दूर फेंककर वापस लाएं
  • यदि मूल आरोह बिंदु पर लिखना है, तो स्नैपशॉट को फेंक कर कमिट करें , और स्नैपशॉट से मूल में लिखकर वापस लाएं

मुझे अभी भी इस मर्ज को करने के लिए विशेष रूप से एक टूल नहीं मिला है - और, यह देखते हुए कि मेरा परिदृश्य स्नैपशॉट के उपयोग के लिए बिल्कुल ठीक नहीं है, एक नहीं हो सकता है। यह rdiff के लिए एक नौकरी की तरह लगता है।


अभी तक कोई LVM मर्ज टूल उपलब्ध नहीं है। यह काम करता है, लेकिन मुझे विश्वास नहीं है कि यह पूरा हो गया है।
इग्नासियो वाज़क्वेज़-अब्राम्स

मर्ज टूल अब मौजूद है (कम से कम उबंटू ट्रस्टी पर) - lvconvert --merge <snapshot-name>उस स्नैपशॉट पर आपकी मूल डिस्क को "पुनर्स्थापित" करेगा, और उस स्नैपशॉट को हटा देगा। आप निश्चित रूप से इसे तुरंत जल्दी से बहाल कर सकते हैं।
dpb

3

LVM ब्लॉक स्तर पर काम करता है। यह भी एक फाइल सिस्टम क्या है 'नहीं जानता'। तो आप केवल कुछ निर्देशिकाओं को स्नैपशॉट नहीं दे सकते, जब तक कि एक अलग LVM वॉल्यूम से कोई फ़ाइल सिस्टम वहां माउंट न हो।

जब आप LVM स्नैपशॉट बनाते हैं तो आप वास्तव में एक वॉल्यूम के डुप्लिकेट 'लिखने पर कॉपी' का अनुरोध करते हैं। स्नैपशॉट वॉल्यूम पर परिवर्तित किया गया कोई भी ब्लॉक पहले स्नैपशॉट में अनमॉडिफ़ाइड संग्रहीत किया जाएगा। इसलिए 'परिवर्तन करने के लिए' आपको कुछ करने की जरूरत नहीं है। बस स्नैपशॉट वॉल्यूम निकालें।

मुझे नहीं पता है कि 'परिवर्तनों को वापस लाने' के लिए अनुशंसित तरीका क्या है, क्योंकि मैंने कभी इस तरह के परिदृश्य में LVM का उपयोग नहीं किया था, लेकिन मुझे लगता है कि यह LVM प्रलेखन में कहीं अच्छी तरह वर्णित है। जो भी हो, आपको शायद किसी भी चीज़ को फिर से शुरू करने की आवश्यकता होगी, जिसे रिबूट करना एक अच्छा विचार हो सकता है।


2
  1. कुछ को विलय करने का कोई कारण नहीं है । बस स्नैपशॉट को हटा दें, स्रोत LV परिवर्तित रहें
  2. परिवर्तनों को वापस लाने के लिए विलय की आवश्यकता है lvconvert --merge <snapshot name>
  3. LVM ब्लॉक डिवाइस के साथ काम करता है। एफएस-प्रकार के अनुसार कोई भी एफएस-संबंधित परिवर्तन विशेष उपयोगिताओं (xfs_growfs, e2fsck, ...) द्वारा किया जाना चाहिए

स्नैपशॉट मूल एलवी की स्थिति को 'फ्रीज' करता है। निकालें स्नैपशॉट का मतलब है कि राज्य को भूल जाओ। मर्ज स्नैपशॉट का अर्थ है उस स्थिति में वापस आना

लेकिन LVM के अंदर यह स्नैपशॉट में फिर से लिखे गए डेटा को बचाता है: सुनिश्चित करें कि स्नैपशॉट आकार LV और स्नैपशॉट पर परिवर्तनों की अपेक्षित मात्रा को पूरा करता है


दरअसल, स्नैपशॉट कुछ भी फ्रीज नहीं करता है। यह एक अतिरिक्त जगह में बदलावों को रिकॉर्ड करता है ताकि उन्हें वांछित होने पर बाद में वापस किया जा सके।
विंस

0

प्रलेखन भ्रमित कर रहा है। यह मुझे लगता है कि lvcreate --merge का अर्थ है सभी परिवर्तनों को वापस लेना, और lvremove का अर्थ है कि परिवर्तन करना। भेद यह है कि आप इसका उपयोग कैसे करते हैं।

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

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

कृपया स्नैपशॉट से निपटने के दौरान सावधान रहें, क्योंकि कुछ लोग मान लेंगे कि आप उन्हें एक तरह से उपयोग करने का मतलब है और आपको निर्देश देंगे जो आपके सिस्टम को नष्ट कर सकते हैं यदि आप विपरीत धारणा के तहत काम करते हैं!


आप केवल स्नैपशॉट बढ़ते हुए स्नैपशॉट पर लिखते हैं; LVM डिफॉल्ट्स के साथ क्या करना है, इसके बारे में बहुत कुछ नहीं बताया गया है - यह इस बात की ज्यादा परवाह नहीं करता है कि आप प्रत्येक लॉजिकल वॉल्यूम के साथ क्या करते हैं, यह स्नैपशॉट है या नहीं, यह सिर्फ ट्रैक करता है कि यह ओपन है या नहीं।
जोसिप रोडिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.