SSHFS mount that survives disconnect
I'm using SSHFS mounts from my laptop to a central server.
Obviously, the SSHFS mount is broken after a longer disconnect (eg. during suspend), cause the underlying SSH connection timed out.
Is there a way to get SSHFS mounts surviving long lasting disconnections (> 5 min) or even a re-dialin with a different IP?
Use -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
The combination ServerAliveInterval=15,ServerAliveCountMax=3
causes the I/O errors to pop out after one minute of network outage. This is important but largely undocumented. If ServerAliveInterval
option is left at default (so without the alive check), processes which experience I/O hang seem to sleep indefinitely, even after the sshfs gets reconnect
'ed. I regard this a useless behavior.
In other words what happens on -o reconnect
without assigning ServerAliveInterval
is that any I/O will either succeed, or hang the application indefinitely if the ssh reconnects underneath. A typical application becomes entirely hung as a result. If you'd wish to allow I/O to return an error and resume the application, you need ServerAliveInterval=1
or greater.
The ServerAliveCountMax=3
is the default anyway, but I like to specify it for readability.
Thanks for the tips of autossh and autofs.
However, for my direct purpose I found a much simpler solution which wasn't documented so well:
sshfs -o reconnect server:/path/to/mount
Autossh automatically reconnects ssh sessions when it notices ssh has died or stopped passing traffic. Since it is just automated ssh, it will work from different IP's and from suspend (even if the laptop wakes up on a different lan).
One thing you could do is mount your filesystems via autofs. Autofs is a tool that will mount a filesystem when you to use something in the directory that the filesystem will be mounted to. When it detects activity the filesystem is mounted. When nothing is happening on the filesystem is it unmounted.
Here is a howto I found on google to accomplish this, there where several others.