Bölmeyi ayırmak için / var, / home taşınması


59

Bu kılavuzu okuduktan sonra bazı klasörleri ( /varve gibi /home) ayrı bir bölüme taşımayı deniyorum :

3.2.1 Akıllı bir bölüm şeması seçin

Bu kılavuzu izleyerek bir klasörü başarıyla taşıyabildim .

Ancak, birden fazla klasör için işe yaramaz gibi görünüyor ve tüm klasörlerim uygun klasörler olmadan bölümlere atılıyor.

Ben monte etmek istiyorum /var, /homeve /tmpayrı bir bölüm üzerine; Birisi bu konuda bana rehberlik edebilir?


Her bir dizin için ek bir bölüm veya bir bölüm mü yaptınız?
mreithub

@mreithub, ideal olarak hepsinin aynı bölüm içinde saklanmasını istiyorum ve sadece klasöre göre değişir. Bu şekilde, benim için çok daha kolay, mekan için endişelenmenize gerek yok.
toffee.beanns

1
/varAyrı bir bölüme yerleştirmeyi önermiyorum . Bunun bir faydası yok. İşletim sisteminin tamamını tek bir bölüm üzerinde tutun ( /). Kullanıcı verilerine - sadece işletim sistemi olmayan şeyler için ayrı bölümleri kullanın /home(eğer büyük bir tane varsa) posta makara, /var/maileg, veritabanları /var/lib/mysqlveya /srv...
Gilles 'kötü olarak SO dur'

7
@Gilles "Bundan faydası yok " ?????? (Belki daha fazla soru işaretine ihtiyacım var). Tabii ki bunun bir faydası var. / çoğunlukla statiktir. / var neredeyse tamamen dinamiktir. Ayrı bir bölüme takar / değiştirirseniz, kök bölümü salt okunur olarak bağlayabilirsiniz. Bunun Good Thing ™ olduğu bir çok durum var.
Auspex,

Yanıtlar:


73

1. Öncelikle her mountpoint için bölümler oluşturmak için ayrılmamış bir alana ihtiyacınız var (/ var, / home, / tmp). Bunun için Gparted kullanın.

2. Daha sonra bu bölümler için dosya sistemleri oluşturmanız (Gparted ile de yapılabilir) veya kullanmanız gerekir:

mkfs.ext4 /dev/sdaX

örneğin / dev / sdaX cihazında yeni bir ext4 dosya sistemi oluşturmak için (kendi cihazınızla / dev / sdaX değiştirin)

3. Yeni dosya sistemini / mnt altına bağlayın

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

4. Tek kullanıcı moduna geçin, böylece işlem sırasında dizinde bir rw etkinliği olmaz

init 1

5. Kök şifrenizi girin.

6. Veriyi yalnızca var olarak yedekleyin (/ var dizininin kendisi değil)

cd /var
cp -ax * /mnt/var

7. Verileriniz başarıyla aktarıldıktan sonra / var dizinini yeniden adlandırın.

cd /
mv var var.old

8. Yeni var dizinini yapın

mkdir var

9. Yeni bölümü çıkarın.

umount /dev/sdaX

10. / var olarak tekrar monte et

mount /dev/sdaX /var

11. / etc / fstab dosyasını yeni bölümü içerecek şekilde düzenleyin, / var, bağlama noktası olur, böylece açılışta otomatik olarak monte edilir.

/dev/sdaX       /var     ext4    defaults    0 0

12. / home ve / tmp için 1-11 arasındaki adımları tekrarlayın.

13. Sonunda çoklu görev moduna dönün.

init 5

evet gparted kullanmayı düşünüyordum. Cevap için teşekkürler. Bu birkaç klasör için bir kenara 30gb alan ayırmayı planlıyorum aslında / home, / tmp, / var /, / opt, / usr /, buna göre ne kadar vermem gerektiğine dair kaba bir ölçütünüz var mı (basit bir barındırma sunucusu için) ?
toffee.beanns

1
LVM kullanmaya bakıyordum, bu gparted ile karşılaştırıldığında daha iyi olur mu?
toffee.beanns

LVM tamamen farklı bir konudur. LVM, fiziksel sabit disklerin üstüne mantıksal birimler oluşturmak için bir katman olarak kullanılır. Gparted, LVM fiziksel birimlerini oluşturmak için yalnızca bir araçtır.
cioby23

1
Aslında, cp -ax * /mnt/varbir olduğunu kötü bir fikir o gizli dosyaları / dizinleri yok sayarız çünkü. Tercih cp -ax . /mnt/var. (@ cioby23, cevabınızı güncellemeniz gerektiğini düşünüyorum)
berbt 22

6
Lütfen init 5cevaba bir final ekleyin .
Robert Pollak

16

Hepsini aynı bölmede kullanmak istiyorsanız, ya LVMda üç basit bağlama montajı kullanabilirsiniz.

Bağlamaya dayalı bir çözüm oluşturmak için

  1. dosya sistemiyle bir bölüm oluşturmak
  2. kurtarma moduna gidin (tek kullanıcı hala bazı klasörlere ihtiyaç duyar)
  3. tak /mnt/data
  4. Taşımak istediğiniz tüm klasörleri taşıyın. Kullanmak cpve mv dir dir.olddaha güvenli olabilir, ancak kurulumdan sonra bunu yaptığım için benim için önemli değildi.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. fstab içinde uygun bağlama mount girişleri oluşturun, örneğin;

    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. reboot


Gelen mount(8)adam sayfasında nodiratimediyor ki: If noatime option is set, this option is not needed.Bir fazlalık avantajı zaten dahil var mı?
brannerchinese

5

Şahsen ya @ Fabian'ın bağlanma çözümüyle giderdim ya da sembolik bağlantılar kullanırdım:

  1. oluşturmak /etc/fstab(kullanımını yeni bölüm girdisini blkidyeni bölüm için doğru UUID almak ve unutmayın mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. mount -aYeni bölümü monte etmek için veya benzeri bir şey kullanın

  3. orijinal klasörleri yeni bölümünüze taşıyın:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. Sembolik bağlantılar oluştur

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

Her ne kadar bind-mount metodu muhtemelen en iyi pratik çözüm olsa da, ben bunu tercih ediyorum çünkü gereksiz yere uzun dfve mountbölüm listelerine girmiyorsunuz .


1
Bir şey monte edilmeden önce isterse / varsa ilgili yöntemlerde ne olur? Ciltleme yönteminin daha temiz olacağından şüpheleniyorum ama gerçekten bilmiyorum.
Auspex,

@Auspex Bu konuda iki yöntem arasında bir fark olmamalıdır (çünkü tüm yerel bölümler /etc/fstabönyüklenirken aynı anda monte edilir). /mnt/dataTakılmadan önce tüm sembolik bağlantılarınız “ölü” olacaktır, bu yüzden (ve varolmayan alt dizinlerde) herhangi bir okuma / yazma girişimi başarısız olacaktır (doğru hatırlıyorsam ENOENT ile). Bağlama bağları ile hemen hemen aynı sonucu elde edersiniz, ancak programlar aslında kök bölüme yazabilir (eğer varolmayan dizinler hakkında akıllı olmaya çalışırlarsa)
mreithub

1
Bu kesinlikle doğru değil. Kök önce monte edilir ve özellikle sordum, çünkü Debian'ın "Salt okunur kökü" tavsiyesi, monte edilmeden önce erişmek / var olmak isteyen süreçlerin olasılığından bahsediyor. Ancak benim Ahududu Pi'm olduğu ve / cihazına salt okunur bir dosya sistemi kurduğumda (güç makineye gittiğinde SD kartı bozulmaya devam ettiği için), her iki yöntemin de çalışmasını teşvik ediyorsun. . Kök dosya sistemine hiçbir şey yazmayacak, çünkü bu RO, bu nedenle her iki durumda da bir hata oluşacak.
Auspex

0

Cioby23 verilen prosedür ek olarak, ayrıca yapmak zorunda kaldı:

  restorecon -R /var

sshd'nin başlaması için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.