चेतावनी: मैंने इस समाधान को लागू कर दिया है और यह काम करता है, लेकिन स्नैपशॉट पर वापस जाने के लिए मर्ज समय बूट प्रक्रिया को लंबे समय तक ले सकता है यदि सिस्टम में अंतिम बूट के दौरान बड़े बदलाव किए गए थे। इस प्रतीक्षा अवधि के दौरान, यह उपयोगकर्ताओं को दिखाई दे सकता है कि सिस्टम लटका हुआ है!
यह भी सावधान रहें कि जिस किसी के पास स्नैपशॉट माउंट करने के लिए पर्याप्त ज्ञान है, वह "जमे हुए" राज्य में परिवर्तन कर सकता है। मैंने "जमे हुए" सिस्टम को अपडेट करने के लिए इस संभावना का लाभ उठाया है, लेकिन फिर से, यह स्नैपशॉट को मर्ज करने (वापस करने) में लगने वाले समय को भी बढ़ा सकता है!
LVM स्नैपशॉट + क्रोन + स्क्रिप्ट = "फ्रोजन" स्थिति
मैंने हाल ही में LVM में खुदाई शुरू की और यह मुझे समझ में आया कि कोई LVM का उपयोग करके मशीन पर "जमे हुए" राज्य को संभवत: बना सकता है और यह स्नैपशॉट क्षमता है। बेशक, इस पद्धति के लिए LVM (या कम से कम LVM के जमने पर विभाजन) का उपयोग करके कॉन्फ़िगर किया गया सिस्टम आवश्यक है।
सारांश:
- एक स्नैपशॉट के लिए पीवी पर पर्याप्त स्थान को जमा करने वाले LVM विभाजन पर सिस्टम स्थापित करें
- अपने इच्छित तरीके से सिस्टम को कॉन्फ़िगर करें।
- स्नैपशॉट मर्ज करने के लिए बूट पर रूट के रूप में चलने वाली क्रॉन जॉब बनाएं और मर्ज किए गए को बदलने के लिए एक नया स्नैपशॉट बनाएं
- सभी लगातार रिबूट स्नैपशॉट पर वापस लौटते हैं। आपके द्वारा बनाए गए राज्य में सिस्टम के सभी स्नैपशॉट ले लिए गए हैं।
- एक अतिरिक्त बोनस के रूप में, स्नैपशॉट को माउंट किया जा सकता है और संशोधित किया जा सकता है (बशर्ते आपके पास रूट विशेषाधिकार हो) और यदि आवश्यक हो तो "जमे हुए" राज्य को अपडेट किया जा सकता है।
अवधारणा का सबूत: एक साफ स्थापित से एक विभाजन को छोड़कर सब कुछ फ्रीज करें
स्थापित करें:
- लाइव उबंटू डिस्क / यूएसबी से बूट करें और "बिना इंस्टॉल किए उबंटू ट्राई करें" विकल्प चुनें। LVM के साथ विभाजन को मैन्युअल रूप से कॉन्फ़िगर करने के लिए यह महत्वपूर्ण है
- जब उबंटू आपकी पसंद के उपकरण का उपयोग करके आपकी डिस्क को विभाजित करता है ताकि इसमें एक ऐसा विभाजन हो जो ड्राइव के पूरे स्थान को लेता है। यहाँ मैं क्या काम कर रहा हूँ:
- इसके बाद टर्मिनल पर LVM सेट करें
/dev/sda1
। मैं एक विभाजन पर अधिकांश प्रणाली डालने जा रहा हूं, लेकिन आपको नहीं करना होगा।
sudo pvcreate /dev/sda1
sudo vgcreate ubuntu-vg /dev/sda1
sudo lvcreate -n swap -L 1G ubuntu-vg
sudo lvcreate -n unfrozen -L 10G ubuntu-vg
sudo lvcreate -n root -l +50%free ubuntu-vg
- अब यदि आप
sudo vgs
द्वारा पीछा किया गया था, sudo lvs
तो आप यह देख सकते हैं कि वॉल्यूम समूह "ubuntu-vg" (vFree अंडर वीजीएस आउटपुट) में छोड़ी गई खाली जगह की मात्रा तार्किक वॉल्यूम द्वारा ली गई जगह की मात्रा के बराबर है "रूट "(Lvs आउटपुट के तहत LSize)। मेरे मामले में, मेरे पास ubuntu-vg में 506.44g मुफ्त है और मेरा रूट विभाजन 506.44g बड़ा है। यदि वॉल्यूम समूह में छोड़ी गई खाली जगह विभाजन के आकार के बराबर है जिसे मैं फ्रीज करना चाहता हूं, तो मुझे पूरे विभाजन को मिटा देना चाहिए और फिर भी रिबूट के साथ पुनर्प्राप्त करने में सक्षम होना चाहिए। बाकी खाली जगह को ubuntu-vg में अभी के लिए अप्रयुक्त छोड़ दें। हम इसे बाद में उपयोग करेंगे।
- अब मैन्युअल विभाजन का उपयोग करके उबंटू स्थापित करें
- जब इंस्टॉल समाप्त हो जाए तो आगे बढ़ें और नए इंस्टॉल किए गए सिस्टम में रिबूट करें।
- एक बार अपने नए सिस्टम में बूट हो जाने के बाद, इसे कॉन्फ़िगर करें ताकि यह वैसा ही हो जैसा आप चाहते हैं कि कंप्यूटर हर बार बूट हो।
- यदि आप स्नैपशॉट में आकस्मिक परिवर्तन नहीं करते हैं और आप नहीं चाहते कि स्नैपशॉट विभाजन मेनू बार में दिखाई दे ...
mkdir /steady
- फ़ाइल की अंतिम पंक्ति के रूप में
/etc/fstab
जोड़कर (यह सभी एक पंक्ति है) संपादित करें/dev/ubuntu-vg/steadystate /steady ext4 defaults,ro,nofail 0 1
- चूंकि अपडेट जैसी चीजें प्रत्येक रिबूट के साथ उड़ जाएंगी, आप उन्हें बंद करना चाह सकते हैं।
- यदि आपके पास मेरे जैसा कोई अपरिवर्तनीय विभाजन है / unfrozen, तो इसे उन उपयोगकर्ताओं के लिए सुलभ बनाना न भूलें जिन्हें इसकी पहुँच की आवश्यकता है
- एक बार जब आप सिस्टम को ठीक उसी तरह से कॉन्फ़िगर कर लेते हैं जैसा आप चाहते हैं, तो निम्न स्क्रिप्ट बनाएं (आपको रूट विशेषाधिकार की आवश्यकता होगी) और
/root/steadystate.sh
अपने पसंदीदा संपादक के साथ सहेजें । ध्यान दें कि यदि आपने LVM सेट करते समय वॉल्यूम समूह का नाम बदल दिया है, तो आपको नीचे दी गई स्क्रिप्ट में भी इसे अपडेट करना होगा।
#!/bin/bash
LOG=/dev/kmsg
# wait for merge in progress
echo -n "Reverting to snapshot if present... " | tee -a $LOG
merging=1
while [ "$merging" == "1" ];
do
/usr/sbin/service lightdm stop #prevent the auto-login/login screen from loading
[ "$(sudo lvs -a | grep steadystate)" == "" ] && merging=0
sleep 1
done
# create snapshot
echo -n "Creating new snapshot... " | tee -a $LOG
/sbin/lvcreate -s -n steadystate -l +100%free /dev/ubuntu-vg/root
# make sure root comes online before trying to merge
while [ ! -e /dev/mapper/ubuntu--vg-root];
do
sleep .5;
done
echo -n "Scheduling reset to snapshot... " | tee -a $LOG
/sbin/lvconvert --merge /dev/ubuntu-vg/steadystate
echo -n "Starting lightdm... " | tee -a $LOG
/usr/sbin/service lightdm start
- अंत में चलाएं
sudo crontab -e
, एक संपादक चुनें और @reboot /bin/bash /root/steadystate.sh
फ़ाइल के अंत में रखें। सहेजें और बंद करें ( Ctrl+ Xउत्तर Yदें बचाने के लिए)
- रिबूट, और आपके पास एक ऐसी प्रणाली होनी चाहिए जो कि विभाजन को छोड़कर / फ़ॉरेनजेन पर मुहिम के दौरान जमी हो
यह काम इसलिए करता है क्योंकि स्नैपशॉट बूट समय पर बनाया गया है, और भले ही हम स्नैपशॉट को उसके ठीक बाद विलय करने के लिए कमांड पास करते हैं, स्नैपशॉट को मर्ज नहीं किया जा सकता है, जबकि रूट के लिए तार्किक वॉल्यूम सक्रिय है। इसलिए यह अगली बार / देव / ubuntu-vg / root सक्रिय होने तक विलय की कार्रवाई को स्थगित कर देता है जो अगले रिबूट पर होता है। यदि सिस्टम लाइव USB से बूट किया गया था, तो यह क्रिया भी चालू हो जाएगी।
बस किक के लिए, मैं एक रिबूट के बाद अंदर चला गया और भाग गया sudo apt remove --purge firefox* libreoffice-* unity*
जिसे मैं सामान्य रूप से करने की सलाह नहीं दूंगा क्योंकि यह कुछ उपयोगी कार्यक्रमों को हटा देता है और सिस्टम को डालता है जो वांछनीय अवस्था से कम हो सकता है!
GUI से सिस्टम ठीक से बंद भी नहीं होगा। तो कोई इसे कैसे ठीक करता है? रीबूट!
रिबूट करने पर, सब कुछ वापस क्रम में था। फ़ायरफ़ॉक्स, लिब्रे ऑफिस और यूनिटी सभी वापस आ गए थे जहाँ वे थे।
मैंने लिनक्स को हटाने की भी कोशिश की *। यह छोड़ दिया वह बूट करने में असमर्थ मशीन, हालांकि, एक लाइव उबंटू डिस्क से बूट करने से लग रहा था कि मर्ज हो जाएगा। फिर से शुरू करने से सिस्टम अपने "फ्रोजन" राज्य में चला गया
यदि आप परिवर्तन करने में सक्षम होना चाहते हैं, तो आप स्नैपशॉट को आरडब्ल्यू विशेषाधिकारों के साथ माउंट कर सकते हैं और फिर इसे चेरोट कर सकते हैं और कोई भी बदलाव कर सकते हैं जिसे आप स्थायी रहना चाहते हैं। यह निर्दोष नहीं है, लेकिन यह अवधारणा का प्रमाण है।