LINUX.ORG.RU

Смонтировать в самом конце загрузки системы

 , ,


0

2

Прошу помощи! Монтирование через fstab не проходит - монтирование происходит раньше, чем появляется раздел. Нужно каким то образом запускать монтирование раздела после того, как стартуют все (!) сервисы, прописанные в системе. Мозгом понимаю, что нужно делать через сервис-файлы systemd, а как реализовать монтирование раздела - не знаю. Прошу помощи!


Нужно создать соответствующий юнит. Пример:

/etc/systemd/system/sample.mount
[Unit]
Description=My Unit

[Mount]
What=/dev/sdb1
Where=/mnt/sample
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target

«What» - что монтировать (можно использовать UUID), «Where» - куда монтировать. И затем:

systemctl enable sample.mount
neocrust ★★★★★
()

Ранее, когда не было systemd, то файловые системы монтировались именно в том порядке как прописаны в /etc/fstab.

В systemd в начале на основе /etc/fstab на лету монтируются Unit`ы для монтирования файловых систем и далее они в случайном порядке монтируются.

Читай:

       x-systemd.requires=
           Configures a Requires= and an After= dependency between the created mount unit and
           another systemd unit, such as a device or mount unit. The argument should be a unit
           name, or an absolute path to a device node or mount point. This option may be
           specified more than once. This option is particularly useful for mount point
           declarations that need an additional device to be around (such as an external journal
           device for journal file systems) or an additional mount to be in place (such as an
           overlay file system that merges multiple mount points). See After= and Requires= in
           systemd.unit(5) for details.

       x-systemd.requires-mounts-for=
           Configures a RequiresMountsFor= dependency between the created mount unit and other
           mount units. The argument must be an absolute path. This option may be specified more
           than once. See RequiresMountsFor= in systemd.unit(5) for details.

А также

man systemd.mount

Тебе нужно прописать правильные параметры в /etc/fstab, что бы монтирование некоторых файловых систем происходило только после того, как будут смонтированы другие.

anonymous
()
Ответ на: комментарий от anonymous

Ему не в определённом порядке надо монтировать, а после того, как какие-то скрипты и приложения отработают.

peregrine ★★★★★
()

А почему мне udisks для этой же самой цели советуют? Зря советуют?

tiinn ★★★★★
()
Ответ на: комментарий от anonymous

Тебе нужно прописать правильные параметры в /etc/fstab, что бы монтирование некоторых файловых систем происходило только после того, как будут смонтированы другие.

Судя по описанной задаче, я понял так, что проблема не в последовательности и не ожидания какого-то сервиса, а скорее всего в том, что устройство тупо по времени долго инициализируется. И тут ни чем systemd не лучше, даже не паллиатив. Если всё остальное на этом тазике зависит от содержимого FS на этом тормозном устройстве, то , скорее всего надо наоборот тупо ждать N sec, монтировать, а уже всё остальное ставить в зависимость от этого «сервиса», ну и разумный таймаут по невозможности.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Нет - не верно. Есть сервис который запускает кучу (три) других сервисов. Они запускаются не долго, а просто по разному. Могут запуститься последними, а могут запуститься и не последними - тут много причин. Тупо запускать по таймеру - не пойдет. В данном случае нужно запускать именно последним.

z3f
() автор топика
Ответ на: комментарий от anonymous

Это понятно - там кроме монтирования в fstab фаловые системы инициализируются-монтируются и после этого в сервисах. fstab как решение отметается как факт.

z3f
() автор топика
Ответ на: комментарий от neocrust

Вопрос в том, чтобы запускать его последним -вообще полсе запуска всех сервисов… Как?

z3f
() автор топика
Ответ на: комментарий от z3f

У systemd-сервисов есть параметр, нужный тебе

Type=idle

В мануале про это есть более подробное описание man systemd.service

Behavior of idle is very similar to simple; however, actual execution of the service program is delayed until all active jobs are dispatched. This may be used to avoid interleaving of output of shell services with the status output on the console. Note that this type is useful only to improve console output, it is not useful as a general unit ordering tool, and the effect of this service type is subject to a 5s timeout, after which the service program is invoked anyway.

brualan
()
Ответ на: комментарий от z3f

Нет - не верно. Есть сервис который запускает кучу (три) других сервисов.

Вы уж определитесь. У вас сервисы или монтирование.

vodz ★★★★★
()
Ответ на: комментарий от z3f

Проще - монтировать нужно после старта всех сервисов. Только так.

Хозяин, конечно, барин. Но логика странная. Вначале нужны файлы, а потом уже программы, которые с ними работают :) Так что завтра логика может у вас выровняться, скажем, будут сервисы, которые таки захотят видеть ту FS. Отсюда, получается, что ничего не надо изобратать, а просто расставить зависимости, а в /etc/fstab убрать default для данной точки монтирования.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.