Przeniesienie / var, / home do oddzielnej partycji


59

Po przeczytaniu tego przewodnika próbuję przenieść niektóre foldery (takie jak /vari /home) na osobną partycję:

3.2.1 Wybierz inteligentny schemat partycji

Udało mi się przenieść jeden folder z powodzeniem zgodnie z tym przewodnikiem.

Jednak wydaje się, że to nie działa w przypadku wielu folderów, a wszystkie moje foldery są zrzucane na partycję bez odpowiednich folderów.

Chciałbym zamontować /var, /homei /tmpna osobnej partycji; czy ktoś może mi w tym pomóc?


Czy stworzyłeś dodatkową partycję dla każdego z katalogów czy tylko jedną?
— mreithub

@mreithub Chciałbym, aby wszystkie były idealnie przechowywane na tej samej partycji i różnią się tylko w zależności od folderu. w ten sposób jest mi o wiele łatwiej, nie martwiąc się o przestrzeń.
— toffee.beanns

1
Nie polecam zakładania /varosobnej partycji. Nie ma z tego żadnych korzyści. Zachowaj cały system operacyjny na jednej partycji ( /). Używaj oddzielnych partycji tylko dla rzeczy, które nie są systemem operacyjnym - dane użytkownika /home, bufor poczty (jeśli masz duży) /var/mail, bazy danych np. /var/lib/mysqlLub /srv…
— Gilles

7
@Gilles „ Nie ma z tego korzyści ” ?????? (Może potrzebuję więcej znaków zapytania). Oczywiście jest to korzystne. / jest w większości statyczny. / var jest prawie całkowicie dynamiczny. Jeśli montujesz / var na osobnej partycji, możesz zamontować partycję root tylko do odczytu. Istnieje mnóstwo sytuacji, w których jest to Good Thing ™.
— Auspex

Odpowiedzi:


73

1. Najpierw potrzebujesz trochę nieprzydzielonego miejsca, aby utworzyć partycje dla każdego punktu montowania (/ var, / home, / tmp). Użyj do tego Gparted.

2. Następnie musisz utworzyć systemy plików dla tych partycji (można to zrobić również w Gparted) lub użyć:

mkfs.ext4 /dev/sdaX

na przykład, aby utworzyć nowy system plików ext4 na urządzeniu / dev / sdaX (zamień / dev / sdaX na własne urządzenie)

3. Zamontuj nowy system plików w / mnt

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

4. Przejdź do trybu pojedynczego użytkownika, aby podczas procesu nie było żadnej aktywności rw w katalogu

init 1

5. Wprowadź hasło roota.

6. Utwórz kopię zapasową danych tylko w var (nie w samym katalogu / var)

cd /var
cp -ax * /mnt/var

7. Zmień nazwę katalogu / var po pomyślnym przesłaniu danych.

cd /
mv var var.old

8. Utwórz nowy katalog var

mkdir var

9. Odmontuj nową partycję.

umount /dev/sdaX

10. Zamontuj ponownie jako / var

mount /dev/sdaX /var

11. Edytuj plik / etc / fstab, aby uwzględnić nową partycję, przy czym / var jest punktem montowania, aby był automatycznie montowany podczas rozruchu.

/dev/sdaX       /var     ext4    defaults    0 0

12. Powtórz kroki 1-11 dla / home i / tmp.

13. Wreszcie powróć do trybu wielozadaniowości.

init 5

tak, myślałem o użyciu gparted. Dziękuję za odpowiedź. planuję przeznaczyć 30 GB miejsca dla tych kilku folderów, tak naprawdę / home, / tmp, / var /, / opt, / usr /, czy masz przybliżoną ocenę tego, ile powinienem odpowiednio dać (dla prostego serwera hostingowego) ?
— toffee.beanns

1
szukałem lvm, czy byłoby lepiej w porównaniu do gparted?
— toffee.beanns

LVM to zupełnie inny temat. LVM służy jako warstwa do tworzenia woluminów logicznych na fizycznych dyskach twardych. Gparted to tylko narzędzie do tworzenia woluminów fizycznych LVM.
— cioby23

1
Właściwie cp -ax * /mnt/varto zły pomysł , ponieważ zignoruje ukryte pliki / katalogi. Wolą cp -ax . /mnt/var. (@ cioby23, myślę, że powinieneś zaktualizować swoją odpowiedź)
— berbt

6
Dodaj końcowy init 5do odpowiedzi.
— Robert Pollak,

16

Jeśli chcesz używać ich wszystkich na tej samej partycji, możesz użyć jednego LVMlub trzech prostych montowań powiązań.

Aby utworzyć rozwiązanie oparte na wiązaniu

  1. utwórz partycję z systemem plików
  2. przejdź do trybu ratunkowego (pojedynczy użytkownik nadal potrzebuje niektórych folderów)
  3. zamontuj jako /mnt/data
  4. Przenieś wszystkie foldery, które chcesz przenieść. Korzystanie cpi mv dir dir.oldmoże być bezpieczniejsze, ale ponieważ zrobiłem to po instalacji, nie miało to dla mnie znaczenia.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. utwórz odpowiednie wpisy montowania powiązań w fstab, na przykład mam

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


Na mount(8)stronie podręcznika pod nodiratimenim jest napisane: If noatime option is set, this option is not needed.Czy i tak jest korzyść z redundancji?
— brannerchinese

5

Osobiście wybrałbym rozwiązanie montowania binda @ Fabiana lub użyłem dowiązań symbolicznych:

  1. utwórz /etc/fstabwpis dla nowej partycji (użyj, blkidaby uzyskać odpowiedni identyfikator UUID dla nowej partycji i nie zapomnij mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. Użyj mount -alub coś podobnego do zamontowania nowej partycji

  3. przenieś oryginalne foldery na nową partycję:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. Twórz dowiązania symboliczne

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

Chociaż metoda bind-mocowanie jest chyba najlepszym rozwiązaniem praktyka I niby preferują ten jeden, bo nie skończy się niepotrzebnie długich dfi mountdziałowych list.


1
Co dzieje się z odpowiednimi metodami, jeśli coś chce / var przed zamontowaniem? Raczej podejrzewam, że metoda wiązania będzie czystsza, ale tak naprawdę nie wiem.
— Auspex

@Auspex Nie powinno być różnicy między tymi dwiema metodami w tym względzie (ponieważ wszystkie lokalne partycje /etc/fstabsą montowane w tym samym czasie podczas rozruchu). Przed /mnt/datazamontowaniem wszystkie dowiązania symboliczne byłyby „martwe”, więc każda próba odczytu / zapisu na nich (i na nieistniejących katalogach) zakończyła się niepowodzeniem (z ENOENT, jeśli dobrze pamiętam). W przypadku montowania powiązań uzyskuje się prawie taki sam wynik, ale programy mogą faktycznie zapisywać na partycji głównej (jeśli starają się być mądre w kwestii nieistniejących katalogów)
— mreithub

1
To nie do końca prawda. Root jest montowany jako pierwszy, a ja specjalnie zapytałem, ponieważ rada Debiana „root tylko do odczytu” wspomina o możliwości procesów chcących uzyskać dostęp / var przed zamontowaniem. Ale w moim przypadku, w którym mam Raspberry Pi i skonfigurowałem system plików tylko do odczytu na / (ponieważ karta SD ciągle ulega uszkodzeniu, gdy zasilanie zostaje wyłączone na maszynę), zachęcasz mnie, że którakolwiek metoda zadziała . Nic nie zapisze się w głównym systemie plików, ponieważ jest to RO, więc w obu przypadkach wystąpi błąd.
— Auspex

0

Oprócz procedury podanej cioby23 musiałem też zrobić:

  restorecon -R /var

aby sshd się zaczął.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.