У меня есть переадресация удаленного порта nfs на локальном компьютере через туннель ssh (пересылка 2 порта), используя autossh для постоянного подключения:
root@remote.machine:~#autossh -v -M 0 -q -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2049:localhost:2049 user@local.machine
root@remote.machine:~#autossh -v -M 0 -q -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2059:localhost:2059 user@local.machine
Теперь у меня в local.machine удаленные порты nfs слушают local.machine:
root@local.machine:~# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2049 0.0.0.0:* LISTEN 27882/sshd: tunnel
tcp 0 0 127.0.0.1:2059 0.0.0.0:* LISTEN 27881/sshd: tunnel
Настройте мою удаленную точку монтирования nfs с помощью этой конфигурации в / etc / fstab:
localhost:/var/pub /mnt/remote.machine nfs tcp,rsize=8192,wsize=8192,rw,bg,intr,noatime,nosuid,noauto,vers=3,port=2049,mountport=2059 0 0
И смонтируйте его в /mnt/remote.machine/:
root@local.machine:~# mount /mnt/remote.machine
root@local.machine:~# mount -lt nfs
localhost:/var/pub on /mnt/remote.machine/ type nfs (rw,nosuid,noatime,tcp,rsize=8192,wsize=8192,bg,intr,vers=3,port=2049,mountport=2059,addr=127.0.0.1)
Что ж, теперь удаленная файловая система nfs доступна как локальный каталог ...
ЭТА ПРОБЛЕМА:
Когда в remote.machine служба nfs остановлена и / или туннель ssh нарушен, как проверить это условие с local.machine ??? Я использую эту систему для автоматизации (с помощью crond) резервного копирования с local.machine на remote.machine
Я подумал о том, чтобы запустить простой тест:
root@local.machine: ~ # [-d /mnt/remote.machine/remote/backups] && ./run-backups.sh
Но когда я запускаю его, команда останавливается, а удаленный компьютер снова в сети !! и автоматика не работает !!
Если у кого-то есть идея получше, например с помощью rsync или другого, предложите, пожалуйста. Условие состоит в том, что резервное копирование должно выполняться с local.machine на remote.machine (у которого есть динамический IP-адрес) из соображений безопасности и проблем с разрешениями.
Редактировать: Монтаж с опциями: retrans = 1, timeo = 1, soft, fg, retry = 1, tcp, vers = 3 или: retrans = 1, timeo = 1, soft, bg, retry = 1, tcp, vers = 3 Проблема сохранить и заморозить любую команду файловой системы (пример: ls, test -d) и через 2 минуты: 50 секунд вывести «Ошибка ввода / вывода»
Вам нужно добавить soft
вариант крепления, иначе клиент NFS будет повторять запросы бесконечно.
Это все равно займет timeo * retrans
для попытки таймаута, который по умолчанию составляет 3 мин.
Вы можете проверить перед процессом резервного копирования, видна ли точка монтирования, например
timeout 10 ls /mountpoint >& /dev/null && /backup/script
вот так он не зависнет, точка монтирования устарела.