Làm thế nào để ngăn việc viết thư cho CIFS bị đình trệ trong vài phút khi kết thúc?


7

Khi gắn hệ thống tệp CIFS từ trình ghi NetApp và sao chép các tệp có dung lượng vài gigabyte vào nó, quá trình sao chép sẽ thường xuyên bị treo trong vài phút khi kết thúc. Nhân viết tin nhắn vào syslog, chẳng hạn như:

Nov 15 14:03:15 myclient kernel: [173570.048387] CIFS VFS: sends on sock ffff88003a2d4000 stuck for 15 seconds
Nov 15 14:03:15 myclient kernel: [173570.049115] CIFS VFS: Error -11 sending data on socket to server
Nov 15 19:01:22 myclient kernel: [191466.594088] CIFS VFS: Server myfileserver has not responded in 120 seconds. Reconnecting...

Thông điệp cuối cùng trong thực tế có thể lặp lại trước khi viết lại. Trong khi quá trình đang treo, nó không thể bị giết; thậm chí cố gắng để khởi động lại máy sẽ bị treo.

Máy chủ là NetApp, tôi chưa biết thông số kỹ thuật của nó. Máy khách là hai máy Ubuntu 14.04 LTS, một trong số chúng là ảo (nó xảy ra trên cả hai). Hạt nhân của họ là phiên bản 3.5.0-54-generic3.13.0-68-generic, tương ứng.

Tôi có ba câu hỏi.

  1. Nếu bạn đã từng thấy vấn đề này, trên phiên bản Linux nào?
  2. Làm thế nào vấn đề này có thể xảy ra ở nơi đầu tiên? Không nên hỗ trợ hệ thống tập tin CIFS thông minh hơn là treo liên tục?
  3. Những tùy chọn gắn kết được đảm bảo để loại bỏ vấn đề này?

Mục nhập fstab của tôi trông như thế này (ẩn danh):

//myfileserver/path/to/mydirectory /mnt/mydirectory cifs credentials=mycredentialsfile,rw,sec=ntlmv2,forceuid,forcegid,file_mode=0644,dir_mode=0755,noserverino,nounix,user,noauto 0 0

Thêm cache=nonekhông khắc phục vấn đề. Thêm directiokhông phải: man mount.cifstuyên bố đó là một tùy chọn được hỗ trợ, nhưng nó không. Có gì không xuất hiện để khắc phục vấn đề được thêm wsize=4096hoặc wsize=8192: vậy, đến nay, kiểm tra của tôi đã cho thấy không trì hoãn với những tùy chọn. (Với wsize=16384, sự đình trệ vẫn xảy ra.)

Thay vì chỉ dùng thử và sai, tôi muốn hiểu điều gì đang xảy ra và loại bỏ vấn đề một cách chắc chắn 100%. Bạn có thể cho tôi biết tại sao điều này đang xảy ra hoặc phải làm gì?

(Một số câu hỏi về Hãy hỏi Ubuntu, Unix và Linux, và ServerFault đã được đăng lên mà nhìn như vấn đề này, nhưng hầu hết trong số họ không phải là: họ phàn nàn về trì hoãn vào đọc các tập tin hoặc trên hệ thống tập tin là nhàn rỗi , trong khi ở trường hợp của tôi, điều này không bao giờ xảy ra, việc đình trệ chỉ xảy ra khi ghi tập tin)

Câu trả lời:


6

Theo mặc định, các cifs mount sử dụng giao thức 1.0, ngoài lỗi thời, phần lớn không hiệu quả và không phục hồi tốt khi ngủ vì nhiều lý do.

Tùy thuộc vào công nghệ máy chủ của bạn là gì, bạn có thể sử dụng vers=2.1ít nhất hoặc vers=3.0.

Tôi sẽ khuyên bạn nên kiểm tra với tài liệu hoặc nhà cung cấp phiên bản nào của giao thức SMB mà nó hỗ trợ, hoặc ít nhất là sử dụng 3.0và tư vấn đầu ra của mountlệnh để xem phiên bản đã thương lượng.

Thay đổi giao thức phiên bản CIFS gần đây sẽ giải quyết một số hoặc tất cả các vấn đề đình trệ của bạn và cung cấp cho bạn tốc độ truyền hiệu quả hơn.

Vui lòng xem câu hỏi liên quan CIFS ngẫu nhiên mất kết nối với chia sẻ Windows để biết thêm chi tiết.

Xin lưu ý rằng việc đình trệ sẽ được cải thiện , nhưng sẽ không biến mất khi sao chép các tệp lớn. Hành vi đó là một tính năng, ví dụ: các tệp đi đến bộ đệm và hệ thống tệp chờ máy chủ thông báo bản sao đã được hoàn thành thành công.


1
Cảm ơn, điều này đã rất hữu ích. Tôi đã thử cài đặt versthành nhiều phiên bản khác nhau, nhưng vấn đề chỉ biến mất khi chúng tôi chuyển sang một máy chủ tệp mới. Tôi nghĩ rằng nó là dành riêng cho NetApp cũ mà chúng tôi đang sử dụng và nó có thể đã được sửa ở cuối máy chủ nếu chúng tôi làm phiền.
Revierpost
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.