विभाजन को अलग करने के लिए चल / संस्करण, / घर


59

मैं कुछ फ़ोल्डर (जैसे स्थानांतरित करने के लिए प्रयास कर रहा हूँ /varऔर /homeइस गाइड को पढ़ने के बाद) एक अलग विभाजन करने के लिए:

3.2.1 एक बुद्धिमान विभाजन योजना चुनें

मैं इस गाइड का सफलतापूर्वक एक फ़ोल्डर ले जाने में सक्षम था ।

हालाँकि, यह कई फ़ोल्डरों के लिए काम नहीं करता है, और मेरे सभी फ़ोल्डर्स उचित फ़ोल्डर के बिना विभाजन में डंप हो जाते हैं।

मैं माउंट करने के लिए चाहते हैं /var, /homeऔर /tmpअलग विभाजन पर; किसी ने मुझे इस पर मार्गदर्शन कर सकते हैं?


क्या आपने प्रत्येक निर्देशिका या सिर्फ एक के लिए एक अतिरिक्त विभाजन बनाया है?
मेरीथूब

@mreithub मुझे यह पसंद है कि सभी को समान रूप से एक ही पार्टीशन में संग्रहीत किया जाए और केवल फ़ोल्डर के साथ बदलता रहे। इस तरह से यह मेरे लिए बहुत सरल है, अंतरिक्ष के बारे में चिंता करने के लिए नहीं।
टॉफ़ी.बिन

1
मैं /varएक अलग विभाजन पर डालने की सलाह नहीं देता । इसका कोई लाभ नहीं है। पूरे ओएस को एक ही पार्टीशन पर रखें ( /)। अलग-अलग विभाजनों का उपयोग केवल उन चीजों के लिए करें जो ओएस नहीं हैं - उपयोगकर्ता डेटा /home, मेल स्पूल (यदि आपके पास एक बड़ा है) /var/mail, डेटाबेस में जैसे /var/lib/mysqlया /srv, ...
गाइल्स

7
@ गिल्स " इसका कोई फ़ायदा नहीं है " ?????? (शायद मुझे और प्रश्नवाचक चिन्ह चाहिए)। निश्चित रूप से इसका एक फायदा है। / ज्यादातर स्थिर है। / var लगभग पूरी तरह से गतिशील है। यदि आप एक अलग विभाजन पर माउंट / वार करते हैं, तो आप केवल पढ़ने के लिए रूट विभाजन को माउंट कर सकते हैं। वहाँ स्थितियों की एक टन कर रहे हैं कि एक अच्छा बात है ™।
शुभ अंक

जवाबों:


73

1. सबसे पहले आपको प्रत्येक माउंटपॉइंट (/ var, / home, / tmp) के लिए विभाजन बनाने के लिए कुछ असंबद्ध स्थान की आवश्यकता होती है। इसके लिए Gparted का इस्तेमाल करें।

2. फिर आपको उन विभाजनों के लिए फाइलसिस्टम बनाने की जरूरत है (Gparted के साथ भी किया जा सकता है) या उपयोग करें:

mkfs.ext4 /dev/sdaX

उदाहरण के लिए / dev / sdaX डिवाइस पर नया ext4 फाइल सिस्टम बनाने के लिए (अपने डिवाइस के साथ / dev / sdaX को बदलें)

3. / mnt के तहत नए फाइलसिस्टम को माउंट करें

mkdir /mnt/var        
mount /dev/sdaX /mnt/var

4. एकल-उपयोगकर्ता मोड पर जाएं ताकि प्रक्रिया के दौरान निर्देशिका पर कोई आरडब्ल्यू गतिविधि न हो

init 1

5. अपना रूट पासवर्ड डालें।

6. केवल var में बैकअप डेटा (नहीं / स्वयं var निर्देशिका)

cd /var
cp -ax * /mnt/var

आपके डेटा को सफलतापूर्वक स्थानांतरित किए जाने के बाद / var निर्देशिका का नाम बदलें।

cd /
mv var var.old

8. नई संस्करण निर्देशिका बनाएं

mkdir var

9. नए विभाजन को अनमाउंट करें।

umount /dev/sdaX

10. इसे / var के रूप में रिमूव करें

mount /dev/sdaX /var

11. नए विभाजन को शामिल करने के लिए संपादित करें / etc / fstab फ़ाइल, माउंट बिंदु के साथ / var, ताकि यह स्वचालित रूप से बूट पर आरोहित हो जाए।

/dev/sdaX       /var     ext4    defaults    0 0

12. चरण 1-11 के लिए / घर और / tmp को दोहराएं।

13. अंत में मल्टीटास्किंग मोड पर लौटें।

init 5

हाँ, मैं gparted का उपयोग करने के बारे में सोच रहा था। जवाब के लिए धन्यवाद। मैं इन कुछ फ़ोल्डरों के लिए वास्तव में / घर, / tmp, / var /, / opt, / usr /, के लिए ३० जीबी स्थान अलग सेट करने की योजना बना रहा हूं, क्या आपके पास इसके अनुसार कितना सरल गेज होना चाहिए (एक साधारण होस्टिंग सर्वर के लिए) ?
टॉफ़ी.बिन्स

1
मैं lvm का उपयोग कर रहा था, क्या यह gparted की तुलना में बेहतर होगा?
टॉफ़ी.बिन्स

LVM एक पूरी तरह से अलग विषय है। LVM का उपयोग भौतिक हार्डडिस्क के शीर्ष पर तार्किक वॉल्यूम बनाने के लिए एक परत के रूप में किया जाता है। Gparted केवल LVM भौतिक वॉल्यूम बनाने का उपकरण है।
cioby23

1
वास्तव में, cp -ax * /mnt/varयह एक बुरा विचार है , क्योंकि यह छिपी हुई फाइलों / डायरियों को नजरअंदाज कर देगा। पसंद करते हैं cp -ax . /mnt/var। (@ cioby23, मुझे लगता है कि आपको अपना जवाब अपडेट करना चाहिए)
berbt

6
कृपया init 5उत्तर में एक अंतिम जोड़ें ।
रॉबर्ट पोलाक

16

यदि आप उन सभी को एक ही विभाजन पर उपयोग करना चाहते हैं तो आप या तो LVMतीन साधारण बाइंड माउंट का उपयोग कर सकते हैं ।

एक बाइंड आधारित समाधान बनाने के लिए

  1. एक फ़ाइल सिस्टम के साथ एक विभाजन बनाएँ
  2. बचाव मोड पर जाएं (एकल उपयोगकर्ता को अभी भी कुछ फ़ोल्डर्स की आवश्यकता है)
  3. इसे माउंट करें /mnt/data
  4. उन सभी फ़ोल्डरों को स्थानांतरित करें जिन्हें आप स्थानांतरित करना चाहते हैं। का उपयोग करना cpऔर mv dir dir.oldसुरक्षित हो सकता है, लेकिन जब से मैंने इसे स्थापित करने के बाद यह किया मेरे लिए कोई फर्क नहीं पड़ा।

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. उदाहरण के लिए, मेरे पास fstab में उपयुक्त बाइंड माउंट प्रविष्टियां बनाएं

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
  6. रिबूट


इसके mount(8)तहत मैन पेज में nodiratimeकहा गया है: If noatime option is set, this option is not needed.क्या इसमें किसी तरह से अतिरेक का फायदा है?
ब्रान्चाइनीस

5

मैं व्यक्तिगत रूप से या तो @ फेबियन के बाइंड-माउंट समाधान के साथ जाऊंगा या सिमिलिंक का उपयोग करूंगा:

  1. /etc/fstabनए विभाजन के लिए प्रविष्टि बनाएं ( blkidअपने नए विभाजन के लिए सही यूयूआईडी प्राप्त करने के लिए उपयोग करें और भूल न जाएं mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. mount -aनए विभाजन को माउंट करने के लिए समान उपयोग करें या कुछ और

  3. मूल फ़ोल्डर को अपने नए विभाजन में स्थानांतरित करें:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. सिमिलिंक बनाएं

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    

हालांकि बाइंड-माउंट विधि शायद सबसे अच्छा अभ्यास समाधान है, मैं इसे पसंद करता हूं क्योंकि आप अनावश्यक रूप से लंबे dfऔर mountविभाजन सूची के साथ समाप्त नहीं होते हैं ।


1
संबंधित विधियों के साथ क्या होता है यदि कोई चीज माउंट होने से पहले चाहता है / संस्करण? बल्कि मुझे संदेह है कि बाइंड विधि क्लीनर होगी, लेकिन मैं वास्तव में नहीं जानता।
शुभ अंक

@Auspex उस संबंध में दो विधियों के बीच अंतर नहीं होना चाहिए (जैसा /etc/fstabकि बूट के दौरान सभी स्थानीय विभाजन एक ही समय में आरोहित होते हैं)। इससे पहले कि /mnt/dataआपके सभी सिम्बलिंक 'मृत' हो जाएं, इसलिए उन पर (और गैर-मौजूद उपविभागों पर) कोई भी पढ़ने / लिखने का प्रयास विफल हो जाएगा (यदि मुझे सही याद है तो ENOENT के साथ)। बाइंड-माउंट्स के साथ आपको बहुत ही समान परिणाम मिलते हैं, लेकिन कार्यक्रम वास्तव में रूट विभाजन पर लिख सकते हैं (यदि वे गैर-मौजूदा निर्देशिका के बारे में स्मार्ट होने की कोशिश करते हैं)
mreithub

1
खैर, यह कड़ाई से सच नहीं है। रूट पहले माउंट हो जाता है, और मैंने विशेष रूप से पूछा क्योंकि डेबियन की "रीड-ओनली रूट" सलाह में उन प्रक्रियाओं की संभावना का उल्लेख किया गया है जो माउंट होने से पहले एक्सेस / वेरिएंट तक पहुंचने की इच्छा रखते हैं। लेकिन मेरे मामले में, जहां मेरे पास रास्पबेरी पाई है और / पर एक केवल-पढ़ने के लिए फाइल सिस्टम स्थापित किया है (क्योंकि एसडी कार्ड दूषित हो जाता है जब बिजली मशीन से बाहर जाती है), तो आप मुझे प्रोत्साहित कर रहे हैं कि या तो विधि काम करेगी । रूट फाइलसिस्टम पर लिखने के लिए कुछ भी नहीं हो रहा है, क्योंकि यह आरओ है, इसलिए या तो मामले में त्रुटि होगी।
शुभ अंक

0

Cioby23 दी गई प्रक्रिया के अलावा, मुझे यह भी करना था:

  restorecon -R /var

शुरू करने के लिए sshd के लिए।

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