Nfs – check nfs over ssh is mounted

nfsssh-tunnel

I have forward remote nfs port in local machine through ssh tunnel(forwarding 2 ports), using autossh for make persistent connection:

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

Now i have in local.machine remote nfs ports listen to 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

Configure my remote nfs mountpoint with this configuration in /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

And mount it in /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)

Well now remote nfs filesystem is accessible as a local directory…

THE PROBLEM:

When in remote.machine nfs service is stopped and/or ssh tunnel is broken, how test this condition from local.machine???
I'm using this system for automatize(with crond) backups from local.machine to remote.machine

I thought of run simple test:
root@local.machine:~# [ -d /mnt/remote.machine/remote/backups ] && ./run-backups.sh

But when I run it, command freeze while remote.machine back online!! and automation fails!!

If anyone has a better idea, for example using rsync or other, propose please.
The condition is that the backup must be execute from local.machine to remote.machine(which has a dynamic ip) for safety reasons and permissions problems.

Edit:
Mounting with options:
retrans=1,timeo=1,soft,fg,retry=1,tcp,vers=3
or:
retrans=1,timeo=1,soft,bg,retry=1,tcp,vers=3
The problem persist and freeze any filesystem command(example: ls, test -d)
and after 2min:50sec print "Input/output error"

Best Answer

You need to add the soft mount option, otherwise the NFS client retries requests forever.

It will still take timeo * retrans for the attempt to timeout, which by default is 3min.