Thứ tự khởi động lại là quan trọng. Khởi động lại máy chủ sau khi máy khách có thể dẫn đến tình huống này. Xử lý NFS cũ chỉ ra rằng máy khách đã mở tệp, nhưng máy chủ không còn nhận ra tệp xử lý. Trong một số trường hợp, NFS sẽ dọn sạch cấu trúc dữ liệu của nó sau khi hết thời gian. Trong các trường hợp khác, bạn sẽ cần tự làm sạch cấu trúc dữ liệu NFS và khởi động lại NFS sau đó. Trường hợp các cấu trúc này được đặt phụ thuộc vào O / S.
Hãy thử khởi động lại NFS trước trên máy chủ và sau đó trên máy khách. Điều này có thể xóa các xử lý tập tin.
Không nên khởi động lại máy chủ NFS với các tệp được mở từ các máy chủ khác. Điều này đặc biệt có vấn đề nếu tệp mở đã bị xóa trên máy chủ. Máy chủ có thể giữ tệp mở cho đến khi được khởi động lại, nhưng khởi động lại sẽ loại bỏ xử lý tệp trong bộ nhớ ở phía máy chủ. Sau đó, khách hàng sẽ không thể mở tệp.
Việc xác định các mount đã được sử dụng từ máy chủ là khó khăn và không đáng tin cậy. Các showmount -a
tùy chọn có thể hiển thị một số gắn kết hoạt động, nhưng có thể không báo cáo tất cả trong số họ. Các tệp bị khóa dễ xác định hơn, nhưng yêu cầu khóa phải được bật và dựa vào phần mềm máy khách để khóa các tệp.
Bạn có thể sử dụng lsof
trên máy khách để xác định các quy trình có tệp được mở trên giá treo.
Tôi sử dụng các tùy chọn hard
và intr
mount trên mount NFS của tôi. Các hard
tùy chọn gây IO để được thử lại vô thời hạn. Các intr
tùy chọn cho phép các tiến trình bị giết nếu họ đang chờ đợi trên NFS IO để hoàn tất.
hard, intr
là lời khuyên tốt. Tuy nhiên, lưu ý rằng NFS nhân đôi thời gian chờ với mỗi lần thử. Vì vậy, bạn thiết lập tốt nhấttimeo=1
vàretrans=5
như vậy. Lưu ý rằng điều này sẽ gây căng thẳng nặng nề cho máy chủ NFS của bạn sau khi khởi động lại NFS. Cố gắng không khởi động lại dịch vụ NFS của bạn thường xuyên;)