Я использую небольшой сервер для нашей квартиры. В основном это файловый сервер с некоторыми дополнительными сервисами. Клиентами являются Linux-машины (в основном Ubuntu, но также и другие дистрибутивы) и некоторые Mac (-Book) между ними (но они не важны для вопроса). На сервере установлена Ubuntu 11.10 (Oneiric Ocelot) «Server Edition», система, с которой я выполняю настройку и тестирование, запускает 11.10 «Desktop Edition». Мы в течение некоторого времени запускали наши общие ресурсы с Samba (с которым мы более знакомы), но затем переходили на NFS (потому что у нас нет пользователей Windows в локальной сети, и мы хотим попробовать это), и пока все работает нормально ,
Теперь я хочу настроить автоматическое монтирование с помощью функции autofs, чтобы сгладить ситуацию (до сих пор каждый монтирует ресурсы вручную, когда это необходимо). Авто-монтаж, кажется, тоже работает. Проблема в том, что наш «сервер» не работает 24 часа в сутки, чтобы сэкономить энергию (если кому-то нужны какие-то данные с сервера, он / она включает и выключает его, поэтому он работает только пару часов каждый день). Но так как настройка autofs, клиенты часто зависают, когда сервер не работает.
Я могу нормально запускать все клиенты, даже если сервер не работает.
Но когда я хочу отобразить каталог (в терминале или наутилусе), который содержит символические ссылки на общий ресурс,
/nfs
когда сервер не работает, он зависает не менее двух минут (поскольку autofs не может подключиться к серверу, но сохраняет пытаюсь, я полагаю).- Есть ли способ избежать этого? Чтобы монтирование было отложено до изменения каталога или до доступа к содержимому этого каталога? Не когда "глядя" на ссылку в разделе под
/nfs
? Я думаю, что нет, но, возможно, можно не пытаться получить к нему доступ так долго? И просто дайте мне пустой каталог или "не могу найти / подключиться к этому каталогу" или что-то в этом роде.
- Есть ли способ избежать этого? Чтобы монтирование было отложено до изменения каталога или до доступа к содержимому этого каталога? Не когда "глядя" на ссылку в разделе под
Когда сервер работает, все работает нормально.
Но когда сервер отключается, до того как общий ресурс отключен , инструменты (например,
df
илиll
) зависают (при условии, что они думают, что общий ресурс все еще включен, но сервер больше не отвечает).- Есть ли способ автоматического размонтирования общих папок при потере соединения?
Также клиенты не будут выключаться или перезагружаться, когда сервер не работает, и у них все еще установлены общие ресурсы. Они висят (как кажется, бесконечно), « убивая оставшиеся процессы », и, похоже, ничего не происходит.
Я думаю, что все сводится к точным значениям таймаута для монтажа и демонтажа. И, возможно, удалить все общие ресурсы, когда соединение с сервером теряется.
Поэтому мой вопрос: как с этим справиться? И в качестве бонуса: есть ли хороший способ для ссылки внутри /nfs
без необходимости монтировать реальные ресурсы (опция autofs или, возможно, использование псевдо-FS, /nfs
который заменяется при монтировании или что-то в этом роде)?
Моя настройка
Настройка NFS довольно проста, но до сих пор хорошо себя зарекомендовала (используя NFSv4 ):
/ И т.д. / по умолчанию / NFS-общие
NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=
/etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
/ и т.д. / экспорта
/srv/ 192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)
Под корнем экспорта /srv
мы получили две директории с bind
:
/ etc / fstab (сервер)
...
/shared/shared/ /srv/shared/ none bind 0 0
/home/Upload/ /srv/upload/ none bind 0 0
Первый один в основном только для чтения (но я в жизни , что через атрибуты файлов и собственности вместо настройки NFS) , а второй является RW для всех. Примечание: у них нет дополнительных записей в / etc / exports , хотя их монтирование работает отдельно.
На стороне клиента они настраиваются /etc/fstab
и монтируются вручную по мере необходимости ( morton
это имя сервера, и оно разрешается нормально).
/ etc / fstab (клиент)
morton:/shared /nfs/shared nfs4 noauto,users,noatime,soft,intr,rsize=8192,wsize=8192 0 0
morton:/upload /nfs/upload nfs4 noauto,users,noatime,soft,intr,rsize=8192,wsize=8192 0 0
Для настройки autofs я удалил записи /etc/fstab
на клиентах и настроил остальные так:
/etc/auto.master
/nfs /etc/auto.nfs
Сначала я связал прилагаемый исполняемый файл /etc/auto.net
(вы можете посмотреть его здесь ), но он автоматически ничего не монтирует для меня. Затем я пишу на /etc/auto.nfs
основе некоторых HowTos, которые я нашел в Интернете:
/etc/auto.nfs
shared -fstype=nfs4 morton:/shared
upload -fstype=nfs4 morton:/upload
И это вроде работает ... Или будет работать, если сервер будет работать 24/7. Таким образом, мы получаем зависания, когда клиент загружается без запущенного сервера или когда сервер выключается, а общие ресурсы все еще подключены.
hard
иbg
поначалу это звучит мне противно. Я хочу, чтобы крепление не повторило попытку и сразу же вернулось, если оно освободится?intr
кажется нормальным, но, похоже, больше не работает: « После монтирования 2.6.25 опция монтирования intr / nointr устарела. Только SIGKILL может прервать ожидающую операцию NFS в этих ядрах, и если указано, эта опция монтирования игнорируется для обеспечения обратной совместимости с более старыми ядрами. "