Порядок перезавантаження важливий. Перезавантаження сервера після клієнтів може призвести до цієї ситуації. Затиснута ручка NFS вказує на те, що у клієнта відкритий файл, але сервер більше не розпізнає обробку файлу. У деяких випадках NFS очистить свої структури даних після таймауту. В інших випадках вам доведеться самостійно очистити структури даних NFS і після цього перезапустити NFS. Де розташовані ці структури, дещо залежать O / S.
Спробуйте перезапустити NFS спочатку на сервері, а потім на клієнтах. Це може очистити ручки файлів.
Перезавантаження серверів NFS з файлами, відкритими з інших серверів, не рекомендується. Це особливо проблематично, якщо відкритий файл був видалений на сервері. Сервер може тримати файл відкритим, поки він не перезавантажиться, але перезавантаження видалить ручку файлу в пам'яті на стороні сервера. Тоді клієнт більше не зможе відкрити файл.
Визначити, які кріплення були використані на сервері, важко і ненадійно. showmount -a
Опція може показати деякі активні кріплення, але не може повідомляти про всі з них. Заблоковані файли простіше визначити, але для блокування файлів потрібно ввімкнути блокування та покладатися на клієнтське програмне забезпечення.
Ви можете використовувати lsof
клієнтів для визначення процесів, у яких файли відкриті на кріпленнях.
Я використовую параметри hard
і intr
монтажу на своїх кріпленнях NFS. Цей hard
параметр призводить до повторного повторного введення вводу-виводу. Цей intr
параметр дозволяє вбити процеси, якщо вони чекають завершення IO NFS.
hard, intr
- це хороша порада. Однак зауважте, що NFS подвоює тайм-аути з кожною спробою. Тож вам найкраще встановитиtimeo=1
іretrans=5
так. Зауважте, що це призведе до значного навантаження на ваш сервер NFS після перезавантаження NFS. Намагайтеся не перезапускати службу NFS так часто;)