[Comm] network filesystems and systemd

Mikhail Efremov sem на altlinux.ru
Пн Авг 19 21:36:59 MSK 2013


On Mon, 19 Aug 2013 21:00:40 +0400 Michael A. Kangin wrote:
> 19.08.2013 17:30, Mikhail Efremov пишет:
> 
> > Они должны монтироваться не "как можно позже", а после network.target и
> > network-online.target. 
> ...
> > Надо разбираться почему это не работает, network.target достигается
> > только после того, как отработает network.service. Т.е. при
> > использовании etcnet все должно работать правильно.
> > Если же используется NM, то нужно включить
> > NetworkManager-wait-online.service.
> > 
> 
> У меня с моим сочетанием сетевуха-свитч-бриджики есть такая особенность
> - может очень долго инициализироваться сеть. Если я пытаюсь получить
> адрес по DHCP, то эти network.service, или
> NetworkManager-wait-online.service, могут просто тупо отваливаться по
> таймауту.

В etcnet можно увеличить таймаут для dhcp-клиента. А
NetworkManager-wait-online.service можно написать свой, тоже с
увеличенным таймаутом, взяв за основу системный.

> Aug 19 10:00:25  systemd[1]: Starting Network is Online.
> Aug 19 10:00:25  systemd[1]: Reached target Network is Online.
> ...
> сеть сделала вид что сразу готова, и сразу же кидаемся монтировать
> сетевые системы

Можно написать свой my-wait-online.service, в котором будет вызываться
скрипт, ожидающий появления сети по каким-то критериям. За основу можно
взять тот же NetworkManager-wait-online.service.
Тогда загрузка затормозится до реального появления сети и дальше все
отработает правильно.

> Aug 19 10:00:25  systemd[1]: Mounting /mnt/admins...
> Aug 19 10:00:25  systemd[1]: Mounting /mnt/server...
> Aug 19 10:00:25  systemd[1]: Mounting /mnt/public...
> Aug 19 10:00:25  systemd[1]: Mounting /mnt/backups...
> ...
> и обламываемся потому что ДНС недоступно (используется локальный)

В смысле свой кэширующий на 127.0.0.1?
Тогда лучше написать в fstab ip-адрес. Иначе придется обеспечивать,
чтобы DNS-сервер был поднят к моменту достижения network.target (или
network-online.target. В принципе, можно написать и такой свой
service-файл. Или писать свой mount-файл, в котором уже написать нужные
зависимости.

> Aug 19 10:00:25  mount[818]: mount error: could not resolve address for
> server: Unknown error
> Aug 19 10:00:25  mount[822]: mount error: could not resolve address for
> server: Unknown error
> Aug 19 10:00:25  mount[826]: mount.nfs: Failed to resolve server
> storage: Name or service not known
> Aug 19 10:00:25  mount[829]: mount.nfs: Failed to resolve server
> storage: Name or service not known
> ...
> Aug 19 10:00:25  systemd[1]: mnt-admins.mount mount process exited,
> code=exited status=1
> Aug 19 10:00:25  systemd[1]: Failed to mount /mnt/admins.
> Aug 19 10:00:25  systemd[1]: Dependency failed for Remote File Systems.
> Aug 19 10:00:25  systemd[1]: Unit mnt-admins.mount entered failed state
> ...
> Aug 19 10:00:27  named[1272]: starting BIND 9.9.2-P2
> Aug 19 10:00:27  named[1272]: using 1 UDP listener per interface
> Aug 19 10:00:27  named[1272]: using up to 4096 sockets
> ....
> А вот etcnet добрался до интерфейсов
> Aug 19 10:00:29  network[3497]: 4 interfaces found

Вот это странно, монтирование сетевых fs должно быть уже после
network.target, который не должен быть достигнут пока не закончит
работу network.service. Попробую воспроизвести.

-- 
WBR, Mikhail Efremov


Подробная информация о списке рассылки community