Мы используем autofs для монтирования раздела NFS с локального сервера. У нас есть резервный сервер, и мы переключаемся на него, используя метод, упомянутый на этой странице руководства autofs (5). Все работает нормально. Что мы хотели бы сделать, так это добавить третью отработку отказа к точке монтирования, которая определяется сценарием и обозначается «program: / path / to / script» в auto.master.
Причина в том, что мы храним дублирующие копии некоторых программных инструментов, которые хранятся далеко от нашего сайта на медленных серверах на локальных быстрых серверах. Мы хотим использовать эти локальные серверы преимущественно, но затем, если ни один из них не доступен, переключитесь на медленный сервер. Точки монтирования удаленных серверов управляются с помощью сценария и могут быть изменены без нашего ведома, поэтому мы не можем просто добавить еще один хост в список резервирования.
Кто-нибудь знает, можно ли это сделать и как?
один быстрый и грязный способ, о котором я думаю, выглядит так:
#!/bin/bash
timeout 5 ls /NFS_mountpoint && exit 0 || { service autofs stop ; ln -s /localFS /NFS_mountpoint ; }
if [[ $(timeout 5 ls /NFS_mountpoint >/dev/null 2>&1)$? -eq 0 ]]; then
mail -s "The NFS has failed over to local FS" YourEmail@email.com
else
mail -s "Problem on $(hostname)" YourEmail@email.com
fi
Это может выполняться как задание cron каждую минуту (* * * * *). Вам, вероятно, придется переименовать или удалить точку монтирования NFS, прежде чем вы сможете создать на нее символическую ссылку, поэтому вы можете изменить ее на mv /NFS_mountpoint /NFS_mountpoint.OLD && ln -s /localFS /NFS_mountpoint