LVM में एकल भौतिक आयतन पर रहने वाले दो तार्किक आयोजनों को कैसे जोड़ूँ?


14

मेरे पास दो तार्किक वॉल्यूम हैं, एक / के रूप में माउंट किया गया है, दूसरा / होम के रूप में माउंट किया गया है।

मैं उन्हें संयोजित करना चाहता हूं, क्योंकि /वॉल्यूम लगातार अंतरिक्ष से बाहर चल रहा है। (हां, मुझे पता है कि उस सभी जगह का उपयोग क्या है? नहीं, मैं इसे हटा नहीं सकता।)

मैं इसे करने के लिए एक या दो दिन के लिए मशीन को नीचे ले जाना चाहता हूं।

OS: Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(CentOS)


1
केवल /वॉल्यूम क्यों नहीं बढ़ाएं, क्या यह LVM के उपयोग की बात नहीं है?
19on में

2
@jasonwryan मुझे डिस्क स्थान आवंटित करने के लिए मैन्युअल रूप से समायोजित करने की आवश्यकता क्यों होनी चाहिए? एक फाइल सिस्टम की पूरी बात नहीं है?
निक ओडेल

@ निकोडेल नं। यदि डेटा रखने के लिए एक वॉल्यूम बहुत छोटा है, तो यह बहुत छोटा है। समग्र क्षमता वॉल्यूम साइज़ का कारक है, न कि फाइलसिस्टम आकार का। लॉजिकल वॉल्यूम माउंटेड वॉल्यूम का आकार बदलना और भंडारण संसाधनों को एक एकल वॉल्यूम में विलय करना आसान बनाते हैं। LVM के साथ आपको वह कार्य करने में सक्षम होना चाहिए जो बिना किसी रिबूटिंग के भी हो रहा है: सुनिश्चित करें कि नियमित उपयोगकर्ता लॉग इन (फ्री / होम) umount / होम से जुड़े हुए हैं (इसे मत भूलना -r) फिर से माउंट करें फिर एक lvextend करें रूट फाइलसिस्टम पर और आप कर रहे हैं। यदि आप मर्ज करना चाहते हैं तो आपको एक rsync करना होगा।
ब्राचली

@JoelDavis यदि मुझे आवश्यकता है कि सभी उपयोगकर्ता लॉग आउट करें, तो क्या यह प्रासंगिक है कि क्या मुझे रीबूट करने की आवश्यकता है?
निक ओडेल

@ निकलोडेल उम ... हाँ? अधिकांश लिनक्स सिस्टम सर्वर हैं, आपको एहसास होना चाहिए कि लोगों की धारणा तब तक होगी जब तक आप अन्यथा नहीं कहेंगे।
ब्राचली

जवाबों:


10

मैं कर रहा हूँ, और फिर से विभाजन ने काम किया। हालांकि, चूंकि दोनों गाइड में लापता क्षेत्र हैं, इसलिए मैंने जो कुछ किया, उसे संक्षेप में बताने जा रहा हूं। कृपया ध्यान दें कि मैंने अपना उपयोगकर्ता zzzzनाम और अपने कंप्यूटर का नाम बदल दिया है xxxxxxx। इसके अलावा, सभी कमांड को रूट के रूप में चलाया जाना चाहिए जब तक कि अन्यथा नोट न किया गया हो।

सबसे पहले, मैंने बैकअप लिया:

tar -zcvf /media/e14be279-8c11-450a-b52c-1493cff3c632/xxxxxxx-home.tar.gz --exclude=/home/zzzz/Downloads /home

यह / होम डाइरेक्टरी का एक संपीड़ित बैकअप बनाता है, और इसे मेरी बाहरी ड्राइव पर डालता है। (ध्यान दें कि आपके बाहरी ड्राइव का एक अलग रास्ता होगा।)

अब, आपको एकल-उपयोगकर्ता मोड में रीबूट करने की आवश्यकता है।

reboot

जब आपका कंप्यूटर फिर से चालू होता है, तो आपको इस तरह की स्क्रीन देखने की जरूरत है:

Booting Centos 2.6.32-279.22.1.el6.x86_64 in 3 seconds...

उसको बाधित करने के लिए कोई भी कुंजी दबाएँ। आपको इस तरह की स्क्रीन देखनी चाहिए:

ग्रब बूट सेंटोस प्रेस करें a, फिर स्पेस, फिर टाइप करें single। हिट दर्ज करें।

आपको इस तरह एक प्रॉम्प्ट देखना चाहिए:

 [root@xxxxxxx /] # 

निम्नलिखित कमांड दर्ज करें:

df -h

यह आप दिखाना चाहिए Size, Usedऔर Avail। हम में रुचि रखते हैं Used
नीचे लिखें कि आपके होम वॉल्यूम द्वारा कितना स्थान उपयोग में है। हमें बाद में इसकी आवश्यकता होगी।

umount /home
e2fsck -f /dev/mapper/vg_xxxxxxx-lv_home

याद रखें कि आपके घर की मात्रा का कितना स्थान इस्तेमाल किया गया है? इसे डबल करें, और इसे इस कमांड को दें। उदाहरण के लिए, मेरे घर निर्देशिका द्वारा 15 गीगाबाइट का उपयोग किया गया था, इसलिए मैंने इसे 30 गीगाबाइट का आकार दिया।

resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G

चेतावनी : यह अगला चरण वह है जो डेटा खो सकता है। बनाने यकीन है कि है कि आप एक आकार पिछला आदेश से बड़ा में डाल दिया। सुनिश्चित करने के लिए 5 गीगाबाइट जोड़ें।

lvresize -L 35G vg_xxxxxxx/lv_home

रूट विभाजन को उस सभी जगह का उपयोग करने के लिए कहें, जिसे हमने अभी मुक्त किया है।

lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

अपने डेटा को रूट विभाजन में कॉपी करें

mount -t ext4 /dev/mapper/vg_xxxxxxx-lv_home /mnt/home
ls /mnt/home
cp -a /mnt/home/. /home/

(वैसे, -aयह महत्वपूर्ण है, क्योंकि अन्यथा सब कुछ रूट के स्वामित्व में होगा, और आप ऐसा नहीं चाहते हैं।)
एक त्वरित जांच करें कि डेटा सही तरीके से कॉपी किया गया है:

ls -lR /home

अब हम होम विभाजन को हटा देते हैं, और नए स्थान को फिर से लेने के लिए रूट बताते हैं।

umount /mnt/home
lvremove /dev/mapper/vg_xxxxxxx-lv_home
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

इस बिंदु पर, मैंने एक बड़ी गलती की, जिसमें से आप सीख सकते हैं। मैंने रिबूट किया, और जब सिस्टम वापस आया, तो उसने मेरे रूट विभाजन को पढ़ने-लिखने के लिए माउंट करने से इनकार कर दिया क्योंकि यह मेरे / घर के विभाजन को माउंट नहीं कर सका। इसलिए, रिबूट करने से पहले, हम टाइप करते हैं

nano /etc/fstab

उन पंक्तियों में से एक सिस्टम को / होम विभाजन को माउंट करने के लिए बताएगा। #इसके पहले रख दो। Ctrl-O, Enter, Ctrl-X दबाएं। अब आप रिबूट कर सकते हैं।

(Hypothetically, अगर आप fstab को संपादित करने के लिए भूल गए थे जैसे मैंने किया था, तो अपने रूट विभाजन को माउंट करने का कमांड है mount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /)


विस्तार से प्यार करो!
nmr

मैं एक समान समस्या में भाग गया हूं, लेकिन मेरे पास मशीन तक भौतिक पहुंच नहीं है। क्या ऐसा करने का कोई तरीका है जिसे एकल-उपयोगकर्ता मोड में बूट करने की आवश्यकता नहीं है?
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner सैद्धांतिक रूप से, हाँ। यदि आपके पास ssh एक्सेस है, तो आप अपना बैकअप ले सकते हैं /home। फिर, जब तक आप अनमाउंट कर सकते हैं, तब तक /homeआप इसे हटा सकते हैं। हालाँकि, मैं वास्तव में प्रक्रिया के माध्यम से आपसे बात करने के लिए योग्य नहीं हूँ। यह एक ऐसी चीज है जिसके बारे में आपको एक नया सवाल पूछना चाहिए।
निक ओडेल

1
@NickODell: मैं किया था कोई नया प्रश्न पूछ: askubuntu.com/questions/1115913/...
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner मैं आपको दे सकता है की तुलना में यह बेहतर सलाह है।
16:25 पर निक ओडेल

3

चेतावनी: कुछ भी करने से पहले सभी महत्वपूर्ण डेटा का बैकअप लें!

आपको सभी डेटा को / होम विभाजन से दूसरे विभाजन, स्थानीय विभाजन या बाहरी ड्राइव या जहाँ भी आपके पास पर्याप्त स्थान है, स्थानांतरित करने की आवश्यकता होगी।

/ Home lv निकालें और फिर / (root) lv का विस्तार करें

डेटा को वापस / होम निर्देशिका में कॉपी करें

संपादित करें 1

उपरोक्त उत्तर मान रहा है कि आपके पास घर विभाजन में डेटा रखने के लिए रूट विभाजन में पर्याप्त स्थान नहीं है।

यदि यह मामला नहीं है, तो बस घर के विभाजन को कहीं और माउंट करें और उदाहरण के लिए, डेटा कॉपी करें:

umount /home
mount /dev/mapper/lv-home /mnt/home
cp -a /mnt/home/. /home/

फिर बस घर विभाजन को हटा दें और रूट विभाजन का विस्तार करें


3

आप इसे किसी भी बाहरी भंडारण के बिना कर सकते हैं, /जिससे चल रहा है , लेकिन आपको अनमाउंट करने की आवश्यकता होगी /home

यह विशेष रूप से जोखिम भरा प्रक्रिया नहीं है यदि आप सावधान रहें, लेकिन फिर भी, मानक सलाह लागू होती है: पहले बैकअप बनाएं, और उनका परीक्षण करें।

मैं इस्तेमाल करेंगे fooमात्रा समूह नाम के लिए है, और rootऔर homeतार्किक मात्रा नामों के रूप में। यह लॉजिकल वॉल्यूम पथ foo/rootऔर foo/home, और डिवाइस पथ बनाता है /dev/mapper/foo-rootऔर /dev/mapper/foo-home। मैं मानता हूं कि वे एक ही वॉल्यूम समूह में हैं, अन्यथा यह अधिक जटिल हो जाता है और दो वॉल्यूम समूहों के भौतिक वॉल्यूम लेआउट पर निर्भर है।

सबसे पहले, अनमाउंट /homeऔर रन करें e2fsck -f /dev/mapper/foo-home। फिर पहले फाइलसिस्टम को सिकोड़ें, और उसके अनुसार लॉजिकल वॉल्यूम। चलाएं resize2fs /dev/mapper/foo-home NNNNजहां NNNN उन खंडों की संख्या है जिन्हें आप वॉल्यूम के अंदर बनाए रखना चाहते हैं (आप प्रत्यय K, Mया के बजाय kB या MB या GB का उपयोग कर सकते हैं G)। फाइल सिस्टम सिकुड़ने के बाद, साथ तार्किक मात्रा हटना lvresize -L MMMM foo/homeजहां MMMM मेगाबाइट की एक संख्या है (ध्यान दें कि डिफ़ॉल्ट इकाई से अलग है resize2fs, लेकिन आप एक ही प्रत्ययों का उपयोग कर सकते K, M, G)। फ़ाइल सिस्टम की तुलना में तार्किक वॉल्यूम को और अधिक सिकोड़ने के लिए बहुत सावधान रहें - यह इस प्रक्रिया में एक खतरनाक कदम है।

वॉल्यूम समूह में अब अप्रयुक्त कमरा है। lvresize -l +100%FREE foo/rootरूट वॉल्यूम बनाने के लिए रन वॉल्यूम समूह में सभी खाली स्थान को पकड़ो। फिर resize2fs /dev/mapper/foo-rootपूरे तार्किक वॉल्यूम को बढ़ाने के लिए फाइल सिस्टम को बड़ा करने के लिए (बिना आकार के पैरामीटर के साथ) चलाएं ; बढ़ाई जा सकती है जबकि वॉल्यूम आरोहित है।

अब आपके पास कुछ फ़ाइलों को कॉपी करने के लिए जगह है। यदि आपके पास हर चीज के लिए पर्याप्त जगह नहीं है, तो जितना संभव हो उतना आगे बढ़ें, फिर प्रक्रिया दोहराएं।

एक बार जब आप सभी फ़ाइलों की प्रतिलिपि बना /homeलेते हैं, तो आप इसे नष्ट करने के लिए तैयार हैं। सत्यापित करें कि /homeखाली है (यदि आपने फ़ाइलें स्थानांतरित की हैं) या कि सभी फ़ाइलों /homeको कॉपी किया गया है /root(यदि आपने फ़ाइलों की प्रतिलिपि बनाई है)। अब-अनावश्यक लॉजिकल वॉल्यूम को नष्ट करने के लिए, चलाएं lvremove foo/home। अंत में, lvresize -l 0%FREE foo/rootऔर इसके फाइल सिस्टम के साथ रूट वॉल्यूम बढ़ाएँ resize2fs /dev/mapper/foo-home


नोट: जब तक मैंने एकल-उपयोगकर्ता मोड में रिबूट नहीं किया, तब तक / घर ने अनमाउंट करने से इनकार कर दिया।
निक ओडेल

नोट: इसे vg_ (मशीन का नाम) और lv_home के रूप में संदर्भित किया जाता है
निक ओडेल

ठीक है, मैं इसे काम कर रहा हूँ। हालांकि इस गाइड से कुछ विवरण गायब थे, इसलिए मैं जल्द ही अपना पूरा कमांड इतिहास पोस्ट करूंगा।
निक ओडेल

2

ठीक है, मैंने खुद को उसी स्थिति में पाया। ऐसा लगता है कि CentOS डिफ़ॉल्ट रूप से एक छोटा रूट वॉल्यूम बनाता है और आपके शेष स्थान को भरता है /home। मैंने अपना सेटअप पहले वीएम में परीक्षण किया था, लेकिन छोटी डिस्क के साथ CentOS ने होम वॉल्यूम नहीं बनाया। मैंने इस समस्या को उठाया, इससे पहले कि अंतरिक्ष में तंगी हो जाए 'और यह भी पता लगाया कि एकल उपयोगकर्ता मोड में कैसे प्रवेश करना है। निम्नलिखित नुसार:

मशीन तक पहुंच प्राप्त करें, ssh ठीक है (गैर-रूट उपयोगकर्ता को मानते हुए)।

  1. cd / तो तुम घर निर्देशिका में नहीं हो
  2. sudo -s हम इस सब के लिए जड़ होंगे
  3. lsof /home जांचें कि कोई भी होम वॉल्यूम का उपयोग नहीं कर रहा है, नहीं होना चाहिए
  4. mv, tarया घर की सामग्री के समान कहीं और
  5. lvremove centos/home
  6. संपादित करें /etc/fstabऔर टिप्पणी करें या के लिए लाइन निकालें/home
  7. घर की उन सामग्रियों को स्थानांतरित करें जिन्हें आपने बैक-अप से पहले बैकअप दिया था /home- अब आप एक सुरक्षित स्थिति में हैं, यहां एक रिबूट ठीक होना चाहिए
  8. lvresize -l +100%FREE centos/root
  9. xfs_growfs /dev/centos/root CentOS 7 पर, अन्य उपयोग कर सकते हैं resize2fs
  10. df -h क्या आप सफल हुए हैं?

आशा है कि यह किसी के लिए आसान बनाता है। यह वास्तव में काफी आश्चर्यजनक है कि आप इन दिनों फाइलसिस्टम पर क्या कर सकते हैं।


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