Řešení 1:
Použijte -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
Kombinace ServerAliveInterval=15,ServerAliveCountMax=3
způsobí, že I/O chyby vyskočí po jedné minutě výpadku sítě. To je důležité, ale do značné míry nezdokumentované. Pokud ServerAliveInterval
volba je ponechána ve výchozím nastavení (takže bez aktivní kontroly), procesy, u kterých dochází k zablokování I/O, se zdá, že spí na dobu neurčitou, i když sshfs dostane reconnect
'ed. Považuji to za zbytečné chování.
Jinými slovy, co se stane na -o reconnect
bez přiřazení ServerAliveInterval
spočívá v tom, že jakýkoli I/O bude buď úspěšný, nebo zavěsí aplikaci na dobu neurčitou, pokud se ssh znovu připojí. Typická aplikace se v důsledku toho zcela zastaví. Pokud chcete povolit I/O vrátit chybu a obnovit aplikaci, potřebujete ServerAliveInterval=1
nebo vyšší.
ServerAliveCountMax=3
je stejně výchozí, ale rád jej specifikuji kvůli čitelnosti.
Řešení 2:
Díky za tipy autossh a autofs.
Nicméně pro můj přímý účel jsem našel mnohem jednodušší řešení, které nebylo tak dobře zdokumentováno:
sshfs -o reconnect server:/path/to/mount
Řešení 3:
Autossh automaticky znovu připojí relace ssh, když zjistí, že ssh zemřelo nebo přestalo procházet provoz. Vzhledem k tomu, že se jedná pouze o automatizované ssh, bude fungovat z různých IP a z režimu spánku (i když se notebook probudí na jiné LAN).
Řešení 4:
Jedna věc, kterou můžete udělat, je připojit vaše souborové systémy přes autofs. Autofs je nástroj, který připojí souborový systém, když chcete použít něco v adresáři, ke kterému bude souborový systém připojen. Když detekuje aktivitu, souborový systém je připojen. Když se na souborovém systému nic neděje, je odpojen.
Zde je návod, který jsem našel na google, jak toho dosáhnout, a několik dalších.
Řešení 5:
Domnívám se, že ne, protože i když můžete nakonfigurovat svého klienta SSH tak, aby připojení nepřerušoval, server může být nakonfigurován tak, aby tak učinil po určité době nečinnosti, a nebudete to moci přepsat. I kdybyste mohli, pokud připojení nikdy neobnovíte, server by zůstal viset a časem by to mohlo vést ke značnému plýtvání serverovými prostředky.
Myslím, že lepší technikou je odpojit souborový systém před pozastavením počítače a znovu jej připojit, když se počítač znovu probudí. Mechanismus, jak to udělat, může záviset na tom, jak přesně pozastavíte svůj počítač – já používám jádro tuxonice a k tomu mám direktivu jako
Unmount /mnt/sshfs
v /etc/hibernate/common.conf
.