Как я могу указать порядок, в котором файловые системы монтируются автоматически?

14

Мне нужно, чтобы определенный ряд /etc/fstabвсегда монтировался после двух других рядов:

# 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

Текущее поведение заключается в том, чтобы часто менять порядок последних двух строк непредсказуемым образом. Как я могу указать необходимый заказ?

ændrük
источник
4
Возможный обходной путь (не проверенный): настроить последний как noautoи подключить rc.local?
jg-faustus
@ jg-faustus Спасибо, обходной путь кажется успешным.
ændrük
@ jg-faustus Эта награда скоро заканчивается, и ваш обходной путь - самое близкое к ответу. Если вы разместите это ниже, я дам вам +50.
rndrük

Ответы:

17

Один из вариантов - отложить монтаж до /etc/fstabзавершения, это дает вам полный контроль над порядком монтирования.

Просто добавьте noautoпараметры монтирования в fstab и подключите их rc.local.

Согласно man-странице , mount -aмонтирует записи fstabпоследовательно, а при добавлении -Fопции ('fork') монтирует их параллельно. Похоже, что стандартная загрузка использует 'fork', предположительно, для сокращения времени загрузки, поэтому я предполагаю, что последующее монтирование (полу) вручную - это самый простой способ восстановить контроль над порядком монтирования.

JG-Фауст
источник
4

Я мог бы подумать о настройке скрипта, который монтирует вторые диски после вызова скрипта монтирования. В Ubuntu initd - это служба, которая запускает все компоненты вашей операционной системы, и она называется upstart .

Он основан на событиях, то есть он просматривает / ожидает и генерирует события во время процесса загрузки. Как указал этот пост в этом посте, служба initd пытается делать что-то параллельно, что, вероятно, является причиной ваших проблем. Таким образом, вы можете настроить запуск скрипта сразу после того, как монтирование завершится и завершит его обработку.

Сценарии монтирования хранятся в каталоге / etc / init /. Я бы также добавил ваш дополнительный скрипт монтирования. Посмотрите на это описание процесса запуска. Этот сайт, вероятно, поможет вам быстрее увидеть ваш собственный скрипт.

Вы должны иметь начало раздела в своем собственном сценарии. См. Этот раздел для начала работы после того, как другой закончил.

Я все еще смотрю на то, как создавать свои собственные сценарии запуска, так что я не могу быть более полезным. Если вы нашли рабочее решение, пожалуйста, опубликуйте его здесь.

nelaaro
источник
4

Ubuntu использует mountallво время загрузки, а не mount -a. Mountall ожидает появления соответствующих устройств, а затем немедленно монтирует на них fs, если только fs, под которым он монтируется, еще не был смонтирован, то он ждет этого fs.

Вы должны иметь возможность получить нужный порядок, установив точки монтирования 3-х файловых систем так, чтобы они располагались друг над другом. Вместо того, чтобы монтировать все три в /home/.something, поместите первый в /home/.x, а второй в /home/.x/.y, а третий в /home/.x/.y/ .z.

psusi
источник
3

Systemd теперь включает опцию зависимости, которая обеспечивает порядок монтирования. В вашем случае добавьте аргументы fstab:

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

Опция noauto не будет работать, если вам нужно смонтировать поверх других смонтированных файловых систем. В моем случае вышеприведенное сработало, см. Коммит https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823 для получения более подробной информации.

techimperial
источник
1

Согласно man fstab, тоshowthrough варианту может быть то, что вы ищете. Попробуйте установить его на / home / ak и посмотреть, работает ли он.

Возможно, что mountвилки при монтировании файловых систем во время загрузки; в этом случае порядок монтирования разделов будет неопределенным.

Скотт Северанс
источник
1
showthroughне решил проблему.
rndrük