LINUX.ORG.RU

Монтирование по возсожности в systemd

 ,


0

1

Система debian 8 arm, systemd. Есть usb-hdd с файлопомойкой и свопом, монтируется при старте, прописано в fstab. Этот диск может быть не подключен, и в этом случае systemd предлагает подождать 90 секунд, а затем сообщает что загрузка неудачна и уходит в single mod.

Этот диск не критически важен для работы системы. Как можно объяснить это systemd, чтобы он пропускал монтирование если устройство не доступно? Есть ли простой способ автоматически монтировать своп и данные если диск был подключен после загрузки?

★★★★★
x-systemd.automount

не подходит к этому случаю? Будет монтироваться автоматически при первом доступе.
В качестве обходного пути - nofail для этого диска, и не надо уходить в single, если он не смонтировался.

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

Насколько я понял x-systemd.automount будет отслеживать обращения к папке и монтировать при первом запросе. я уже как то давно (во времена lenny) видел такую схему в работе, там это первое обращение обычно было неудачным и диск потом отваливался через какое то время. М ещё демон автомонтирования постоянно просыпался и грузил проц, и если это в принципе возможно, то на arm это станет проблемой. Так что я сильно сомневаюсь в systemd.automount. А для свопа это вообще не применимо.

А куда прописывать nofail?

kirill_rrr ★★★★★
() автор топика
Последнее исправление: kirill_rrr (всего исправлений: 1)

Ты спрашиваешь о трёх разных вещах одновременно.

чтобы он пропускал монтирование если устройство не доступно?

Опция nofail в fstab: не ждать устройство (точнее, ждать в фоне), при его наличии — монтировать, при отсутствии — не монтировать.

Есть ли простой способ автоматически монтировать своп и данные если диск был подключен после загрузки?

Опция noauto в fstab и явно прописанная зависимость от .device-юнита к .mount-юниту.

  1. Узнаёшь имя своего device-юнита: $(systemd-escape --path /dev/disk/by-foo/bar).device;
  2. Узнаёшь имя своего mount-юнита: $(systemd-escape --path /path/to/mount/point).mount;
  3. Делаешь systemctl add-wants ИМЯ-DEVICE-ЮНИТА ИМЯ-MOUNT-ЮНИТА (когда диск воткнут), ну или вручную создаёшь нужный симлинк или .conf-сниппет.
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Про nofail понятно, спасибо.

По поводу «в дальнейшем по возможности» - это на перспективу. Опция noauto кажется говорит вообще не монтировать, только по прямой колманде админа. Какой логике будет следовать эта зависимость .mount-юнита от .device-юнита?

kirill_rrr ★★★★★
() автор топика

Добавь опцию монтирования noauto и noatime в /etc/fstab для этой файловой системы.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

Опция noauto кажется говорит вообще не монтировать, только по прямой колманде админа.

Опция noauto говорит о том, что не нужно добавлять зависимость от .mount-юнита к local-fs.target, т. е. не монтировать автоматически при загрузке системы. Больше ни на что она не влияет.

Какой логике будет следовать эта зависимость .mount-юнита от .device-юнита?

Прямой. Когда ты втыкаешь устройство, соответствующий .device-юнит динамически создаётся и переводится в состояние «запущен». Дальше systemd смотрит на его зависимости и запускает их, т. е. монтирует твою файловую систему или что у тебя там.

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

.device-юнит динамически создаётся и переводится в состояние «запущен». Дальше

Наверно это будет адекватным вариантом.

kirill_rrr ★★★★★
() автор топика

nofail работает, хотя ждать 90 сек. при загрузке всё ещё нужно. Зато сбойные юниты продолжают висеть в фоне и почти адекватно монтируют диск при подключении.

kirill_rrr ★★★★★
() автор топика

Тебе - можно.
Собери ядро, арийско верно.

cat /etc/mkinitcpio.conf 
#HOOKS="base udev autodetect modconf block filesystems keyboard consolefont fsck shutdown"
HOOKS="base systemd autodetect modconf block filesystems keyboard sd-vconsole fsck sd-shutdown"

Нужно ввести systemd в HOOKS. В mkinitcpio.conf - не пишут ещё.

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

У меня x-systemd.automount нормально работает с /boot и ещё одной точкой монтирования через fuse.sshfs. Есть ещё

x-systemd.device-timeout=
x-systemd.mount-timeout=
Ждать появления устройства и окончания команды mount соответственно. Это всё тоже в fstab, по умолчанию в секундах.

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