16.04 Проблемы с монтированием nfs во время загрузки

Прежде всего, спасибо за ваше время. Я боролся в течение двух дней с этой проблемой. У меня такая же среда в Ubuntu 14.04 и работает отлично. Итак, начнем:

Я хочу смонтировать NFS во время загрузки. Эта NFS будет иметь / etc / apache2 и другие конфигурационные папки. Итак, мой fstab (работает в 14.04) выглядит следующим образом:

X.X.X.X:/share_NFS         /mnt/nas        nfs   auto,nolock,soft,intr,nfsvers=3,tcp,bg,rw      0       0

Затем я связываю каждую папку, которую хочу смонтировать в NFS, следующим образом:

/mnt/nas/config/apache2         /etc/apache2            none    auto,rbind,defaults     0       0

/mnt/nas/config/php5            /etc/php5               none    auto,rbind,defaults     0       0

/mnt/nas/config/logrotate.d     /etc/logrotate.d        none    auto,rbind,defaults     0       0

/mnt/nas/config/postfix         /etc/postfix            none    auto,rbind,defaults     0       0

/mnt/nas/www                    /var/www                none    auto,rbind,defaults     0       0

Моя проблема : проблема в том, когда я загружаю машину. Иногда он установлен правильно, а иногда нет. Если я перезагружаю машину, у меня есть 25% вероятности, что NFS не смонтирован правильно. Если я сделаю "mount -a", он будет работать нормально.

Я почти уверен, что есть системная проблема. Я обнаружил много проблем и некоторые ошибки с зависимостями NFS и remote-fs.target в systemd. Но у каждого есть четкое решение. Например, я изменил некоторые зависимости remote-fs.target просто для того, чтобы требовать подключения к сети, но у меня это не сработало.

Я думаю, что это вопрос того, как systemd запускает remote-fs.target и NFS.

Я заметил, что для каждой точки монтирования / etc / fstab systemd генерирует модуль, заканчивающийся на .mount. Итак, если я посмотрю на эти единицы:

systemctl show mnt-nas.mount

Я увидел это:

Names=mnt-nas.mount

Requires=system.slice -.mount

Wants=network-online.target

RequiredBy=etc-logrotate.d.mount etc-php5.mount remote-fs.target var-www.mount etc-apache2.mount etc-postfix.mount

Conflicts=umount.target

Before=etc-logrotate.d.mount umount.target etc-php5.mount remote-fs.target var-www.mount etc-apache2.mount etc-postfix.mount

After=systemd-journald.socket remote-fs-pre.target system.slice network.target -.mount network-online.target

RequiresMountsFor=/mnt

Мои вопросы : У кого-нибудь была эта проблема? кто-нибудь получал такое поведение при монтировании NFS во время загрузки? Как вы решили, если у вас есть?

Большое спасибо!

2
задан 22 November 2017 в 12:04

1 ответ

Ну, наконец-то я решил проблему.

В этом случае у меня было две проблемы:

  • По умолчанию remote-fs.target НЕ зависит от network-online.target. Это известная ошибка? сообщается сообществом. Итак, это то, что заставляет это иногда работать, а иногда нет (зависит от того, есть ли у ethernet ссылка или нет, когда монтируется nfs).

  • Вторая проблема, в моем случае, я монтирую rbinds после монтирования NFS. Источником rbinds является папка точки монтирования NFS (поэтому ясно, что она должна быть смонтирована позже). Когда systemd генерирует файлы модулей «.mount» для каждой точки монтирования fstab, все rbinds зависели от local-fs.target. Конечно, это проблема в этом случае, потому что он может смонтировать rbinds (local-fs.target) до точки монтирования nfs (remote-fs.target).

Итак, чтобы разрешить эту ситуацию, я сделал следующее:

  • Сначала я отредактировал файл /lib/systemd/system/remote-fs-pre.target и добавлено:

    Wants = network-online.target

    After = network-online.target

  • Затем в / etc / fstab я указал точка монтирования NFS: bg, rw 0 0

И, наконец, мы указываем systemd, что rbinds являются сетевым устройством (поэтому systemd поместит их в remote-fs.target), а также я указал, что / mnt / nas должен быть установлен строго.

/ mnt / nas / config / php / etc / php none noauto, _netdev, x-systemd.automount, x-systemd.requires = / mnt / nas , rbind, значения по умолчанию 0 0

С этим изменением я исправляю порядок правильного запуска монтировок в systemd

2
ответ дан 22 November 2017 в 12:04

Другие вопросы по тегам:

Похожие вопросы: