Jak mogę określić kolejność, w jakiej systemy plików są automatycznie montowane?

15

Potrzebuję konkretnego rzędu /etc/fstabdo zamontowania zawsze po dwóch innych rzędach:

# Always mount these first
UUID=fdf38dd4-9e9d-479d-b830-2a6989958503 / ext4 noatime,discard,errors=remount-ro 0 1
UUID=2b548eb8-fa67-46ce-a998-91d587dba62f /home/.hdd ext4 errors=remount-ro 0 2

# Always mount this second
none /home/ak aufs br:/home/.ssd/ak=rw:/home/.hdd/ak=rw 0 0

Obecne zachowanie polega na często odwracaniu kolejności dwóch ostatnich wierszy w nieprzewidywalny sposób. Jak mogę określić niezbędne zamówienie?

ændrük
źródło
4
Możliwe obejście (nieprzetestowane): Skonfigurować ostatni jako noautoi zamontować rc.local?
jg-faustus
@ jg-faustus Dziękujemy, obejście wydaje się skuteczne.
ændrük
@ jg-faustus Ta nagroda wkrótce się kończy, a twoje obejście jest najbliżej odpowiedzi. Jeśli opublikujesz to poniżej, dam ci +50.
ændrük

Odpowiedzi:

18

Jedną z opcji jest odłożenie montażu do momentu /etc/fstabzakończenia, co daje pełną kontrolę nad kolejnością montażu.

Po prostu dodaj noautodo opcji montowania w fstab i podłącz rc.local.

Według strony man , mount -amontuje wpisy w fstabsekwencyjnie, podczas dodawania -F( „widelec”) opcję będzie je zamontować w parallell. Wygląda na to, że standardowy boot używa „widelca”, prawdopodobnie w celu skrócenia czasu uruchamiania, więc myślę, że późniejszy montaż (pół-) ręcznie jest najprostszym sposobem na odzyskanie kontroli nad kolejnością montowania.

jg-faustus
źródło
4

Mogę rozważyć skonfigurowanie skryptu, który montuje drugie dyski po wywołaniu skryptu montowania. W Ubuntu initd jest usługą, która uruchamia wszystkie komponenty twojego systemu operacyjnego i nazywa się upstart .

Jest oparty na zdarzeniach, co oznacza, że ​​wygląda / czeka i emituje zdarzenia podczas procesu uruchamiania. Jak wskazano w tym poście , inicjowana usługa próbuje robić rzeczy równolegle, co prawdopodobnie jest przyczyną twoich problemów. Możesz więc ustawić skrypt, aby działał bezpośrednio po zakończeniu montowania i zakończeniu procesów.

Skrypty montowania są przechowywane w katalogu / etc / init /. Dodałbym tam również twój dodatkowy skrypt montowania. Spójrz na ten opis procesu uruchamiania. Ta strona prawdopodobnie pomoże ci najszybciej zacząć pisać własnym skryptem.

Musisz zacząć od sekcji w swoim własnym skrypcie. Zobacz tę sekcję, aby rozpocząć pracę po zakończeniu innej.

Nadal szukam sposobu, aby samodzielnie stworzyć własne skrypty startowe, więc nie mogę być bardziej pomocny. Jeśli znajdziesz działające rozwiązanie, prześlij je tutaj.

nelaaro
źródło
4

Ubuntu używa mountallpodczas uruchamiania, a nie mount -a. Mountall czeka na pojawienie się bazowych urządzeń, a następnie natychmiast montuje na nich fs, chyba że fs, pod którym jest montowany, nie został jeszcze zamontowany, to czeka na ten fs.

Powinieneś być w stanie uzyskać pożądaną kolejność, ustawiając punkty montowania 3 systemów plików, aby były ułożone jeden pod drugim. Zamiast montować wszystkie trzy w /home/.something, umieść pierwszy w /home/.x, a drugi w /home/.x/.y, a trzeci w /home/.x/.y/ .z.

psusi
źródło
4

Systemd ma teraz opcję zależności, która wymusza kolejność montowania. W twoim przypadku dodaj argumenty fstab:

x-systemd.requires-mounts-for=/,x-systemd.requires-mounts-for=/home/.hdd

Opcja noauto nie będzie działać, jeśli chcesz zamontować na innych zamontowanych systemach plików. W moim przypadku powyższe działało - patrz https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823, aby uzyskać więcej informacji.

techimperial
źródło
Niezły cytat. Czy możesz powiedzieć, jaka jest różnica między requires-mounts-fori requires?
Anwar
Wygląda na to, żeby x-systemd.requireszrobić to samo! Nie wiem, dlaczego są dwie opcje
Anwar
1

Zgodnie z man fstab, showthroughopcja może być tym, czego szukasz. Spróbuj ustawić go na / home / ak i sprawdzić, czy działa.

Możliwe, że mountrozwidla się podczas montowania systemów plików podczas rozruchu; jeśli tak, kolejność montowania partycji byłaby niezdefiniowana.

Scott Severance
źródło
1
showthroughnie rozwiązał problemu.
ændrük