NFS sau VPN: gắn kết khi khởi động hay gắn kết tự động theo yêu cầu?
Gắn kết khi khởi động sẽ bị chặn trên một đường hầm có thể chưa được dựng. Gắn kết tự động chờ lần truy cập đầu tiên, và sự phụ thuộc VPN thuộc về đơn vị gắn kết, không phải bộ kích hoạt.
Hai cấu hình giải quyết cùng một vấn đề và thất bại theo hai hướng ngược nhau. Gắn kết thư mục chia sẻ khi khởi động cho mỗi dịch vụ một hệ thống tệp hoặc là có sẵn hoặc là giải thích vì sao quá trình khởi động bị đình trệ. Gắn kết tự động theo yêu cầu cho máy một lần khởi động nhanh và giao việc chờ đợi cho ai chạm vào đường dẫn trước. Sau VPN, cách thứ hai thường là sự đánh đổi tốt hơn, và lý do là đường hầm áp đặt một thứ tự mà trình tự khởi động không thể thấy.
Gắn kết khi khởi động so với gắn kết tự động
Gắn kết khi khởi động dễ suy luận. Mục tiêu của hệ thống tệp chờ việc gắn kết, các dịch vụ khai báo phụ thuộc vào nó sẽ khởi động sau đó, và nếu máy chủ không thể truy cập thì máy hoặc chờ hoặc thất bại tùy theo tùy chọn. Mọi thứ ở hạ nguồn đều thừa hưởng quyết định duy nhất đó.
Gắn kết tự động đảo ngược điều đó. Đường dẫn tồn tại ngay lập tức, việc gắn kết thật xảy ra khi có thứ gì đó mở nó, và các dịch vụ khởi động sớm không bị chặn trên một đường hầm chưa được dựng.
Việc so sánh quy về ai nên hấp thụ độ trễ. Một máy trạm cần thư mục chia sẻ trước khi người dùng có thể làm việc có lẽ nên chờ. Một máy tính xách tay khởi động trong túi, hoặc một máy chủ có thư mục chia sẻ là tùy chọn, thì không nên.
Không tùy chọn nào sửa được một tuyến bị thiếu. Cả hai chỉ quyết định khi nào lỗi được quan sát.
Dòng fstab, từng tùy chọn một
Giả sử một phiên bản máy khách OpenVPN hiện có là [email protected], máy chủ là files.corp.example và điểm gắn kết là /mnt/work. Thay cả ba bằng các giá trị được cấp phép của trang của bạn. Một dòng khả dụng trông như thế này:
files.corp.example:/export/work /mnt/work nfs _netdev,nofail,x-systemd.automount,[email protected],x-systemd.mount-timeout=30s 0 0
_netdev đánh dấu việc gắn kết là cần mạng, và nó không nêu tên bất kỳ đường hầm nào. nofail giữ thư mục chia sẻ là tùy chọn cho mục tiêu hệ thống tệp thông thường. x-systemd.automount tạo bộ kích hoạt theo yêu cầu thay vì gắn kết ngay.
x-systemd.requires= là phần gắn nỗ lực gắn kết với đơn vị VPN, và nó thuộc về thao tác gắn kết chứ không thuộc bộ kích hoạt. Đặt thứ tự rộng lên chính đơn vị gắn kết tự động là cách người ta tạo ra các vòng lặp mà systemd sau đó phàn nàn bằng một ngôn ngữ không ai đọc hai lần.
x-systemd.mount-timeout=30s giới hạn lệnh gắn kết ban đầu. Nó không giới hạn bất cứ điều gì xảy ra sau đó, và đây là hiểu lầm phổ biến nhất về tùy chọn này.
«Đã khởi động» không có nghĩa là gì
Hãy kiểm tra ý nghĩa của hoạt động đối với đơn vị VPN mà bạn đã nêu tên. Một dịch vụ đường hầm có thể báo cáo rằng nó đã khởi động trước khi tuyến tới máy chủ tệp tồn tại hoặc trước khi tên riêng được phân giải, và sắp xếp sau nó thì không mang lại gì. Gần như mọi nỗ lực thất bại đều sống trong khoảng trống này. Nó cũng vô hình trừ khi bạn nhìn vào tuyến và trình phân giải thay vì trạng thái của đơn vị.
Hãy dùng chính tín hiệu sẵn sàng của chủ sở hữu kết nối làm điều kiện tiên quyết bổ sung ở nơi nó tồn tại. Một giấc ngủ cố định là một phỏng đoán hoạt động trên bàn của bạn và thất bại trên mạng chậm hơn hoặc sau khi kết nối lại.
Hãy kiểm tra các đơn vị được tạo cho đường dẫn trong ví dụ: mnt-work.automount và mnt-work.mount. Sau một thay đổi fstab đã được xem xét, hãy tải lại systemd và quản lý trực tiếp các đơn vị đó thay vì chạy một lệnh gắn kết bao trùm có tác động lên các mục không liên quan.
Có thêm một lưu ý ở đây. Một dịch vụ chạm vào /mnt/work lúc khởi động vẫn kích hoạt việc gắn kết và vẫn chờ nó, nên việc đánh dấu thư mục chia sẻ là tùy chọn không làm mọi ứng dụng kiên nhẫn.
Sau khi gắn kết, đó là một lỗi khác
Khi NFS đã được gắn kết, hành vi thử lại và phục hồi của hệ thống tệp quyết định điều gì xảy ra với một lần đọc hoặc ghi khi có sự cố sau đó. Thời gian chờ gắn kết bạn đặt không ảnh hưởng đến điều đó.
Gắn kết mềm rút ngắn một số lần chờ và thay đổi ngữ nghĩa lỗi, kèm theo hậu quả về tính toàn vẹn dữ liệu dễ bị bỏ qua khi mục tiêu là khởi động nhanh hơn. Chọn nó để giành hai giây khởi động hiếm khi là sự đánh đổi tốt. Nếu yêu cầu thực sự là một thao tác có giới hạn trong lúc sự cố, đó là quyết định ở tầng ứng dụng, không phải cờ fstab.
Hãy quyết định điều gì phải xảy ra với một tiến trình đang ghi dở khi đường hầm sập, và viết nó ra. Câu trả lời đó hữu ích hơn bất kỳ chuỗi tùy chọn nào.
Hãy thử bốn trạng thái, không phải một
Khởi động bình thường khi đường hầm sẵn có là trường hợp dễ và gần như không chứng minh được gì. Nó xác nhận rằng chuỗi được viết đúng và không hơn. Hãy thử lần truy cập đầu tiên khi không có VPN, sau đó là phục hồi khi nó lên, sau đó là sự cố có kiểm soát sau khi gắn kết thành công.
Bốn trạng thái, bốn quan sát, và các ghi chú nằm cạnh mục fstab. Người tiếp theo thừa hưởng hành vi thay vì một cấu hình mà họ phải dịch ngược.