У меня есть сервер A, на котором хранятся файлы, и сервер B с подключением NFS-v3 к серверу A. Когда сервер A не отвечает по какой-либо причине, любой запрос чтения, сделанный на B, будет зависать в течение длительного времени (несколько минут).
Мне нужно, чтобы эти запросы завершались очень быстро (1-2 секунды).
Я попытался настроить такие параметры, как timeo, retrans, retry, soft / hard, sync / async и т. Д., Но ничего не работает, и, похоже, это известная нерешенная проблема. У меня всегда очень долгий тайм-аут.
Есть ли какое-нибудь исправление для клиента NFS или любого альтернативного клиента пользовательского пространства?
Есть ли какой-либо сетевой протокол для обмена файлами (кроме NFS), который правильно обрабатывает разорванные соединения и недоступные серверы?
Вы пробовали afs или gluster?
(@vmfarms sshfs, это хорошее решение, если вы не возражаете против проблем с производительностью. Это добавляет слишком много накладных расходов вашей сети)
NFS - довольно надежный протокол, особенно при работе с небольшими установками (20 серверов или меньше). Я бы использовал мягкие крепления, чтобы избежать проблем при выходе из строя сервера A. Если вы хотите быстро отключить монтирование, быстрая игра с iptables должна довольно быстро привести к тайм-ауту соединения и позволить вам размонтировать (при условии, что 10.10.0.1 - это IP-адрес вашего NFS-сервера A):
iptables -A OUTPUT -d 10.10.0.1 -j REJECT
Существует несколько других протоколов обмена файлами, но ни один из них не настолько распространен, как NFS, IHMO.