Tùy chọn gắn kết _netdev trong / etc / fstab hoạt động như thế nào?


24

Tôi muốn biết cơ chế chính xác (thực hiện) được sử dụng để trì hoãn việc gắn kết cho đến khi giao diện mạng được bật lên khi một người sử dụng _netdevtùy chọn trong /etc/fstab?
systemdlàm thay đổi hành vi này?
Ngoài ra, delay_connecttùy chọn nào cho sshfs cung cấp những gì _netdevkhông?

Từ mount trang nam :

_netdev
Hệ thống tệp nằm trên thiết bị yêu cầu truy cập mạng (được sử dụng để ngăn hệ thống cố gắn các hệ thống tệp này cho đến khi mạng được bật trên hệ thống).

Từ sshfs trang nam :

-o delay_connect
trì hoãn kết nối với máy chủ

Câu trả lời:


25

SysV Ban đầu

Tập /etc/init.d/mountall.shlệnh init chỉ gắn kết các hệ thống tập tin cục bộ:

mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev

Các hệ thống tập tin khác được gắn kết bởi các tập lệnh init riêng biệt, ví dụ như /etc/init.d/mountnfs.shkhai báo (thông qua các tiêu đề LSB) sự phụ thuộc của chúng vào $network. Do đó, những thứ này được lên lịch sau, sau khi mạng được đưa lên, trong khi mountall.shcó thể chạy sớm hơn nhiều.

hệ thống

Các đơn vị gắn kết địa phương được kéo vào local-fs.target, từ xa bằng remote-fs.target. systemd-fstab-generatorquét /etc/fstab, tạo các đơn vị gắn kết và gán chúng cho các mục tiêu trên dựa trên các điều kiện tương tự như trên.

trì hoãn

Tùy chọn này có nghĩa là sshfs sẽ không khởi tạo kết nối SSH đến máy chủ từ xa tại thời điểm gắn kết, nhưng sẽ chỉ làm như vậy đối với hoạt động hệ thống tệp đầu tiên thực sự yêu cầu nó. Điều này làm chậm báo cáo lỗi, nhưng có thể là một cách giải quyết hữu ích trong một số trường hợp, ví dụ nếu hệ thống init của bạn không có đủ thông tin để đặt hàng hoạt động gắn kết chính xác. "Mạng" đang "lên" là một thuật ngữ khá lỏng lẻo và mặc dù người ta có thể thêm các phụ thuộc bổ sung tùy ý để gắn kết các đơn vị không giúp ích nếu sự kiện kích hoạt không phải là một phần của giao dịch khởi động (theo cách nói của systemd).


Vì vậy, bạn đang nói rằng đó _netdevkhông có nghĩa là một đối số được truyền cho quá trình thực hiện mount (và đặc trưng cho kiểu mount như thế nào ext4/btrfs/cifs/fuse) mà có nghĩa là được đọc bởi các tiến trình / script khác dựa trên cờ này quyết định khi nào trong quá trình khởi động, các mount này sẽ được thực thi. Vâng? Nếu vậy thì tôi nghi ngờ đây là lý do tại sao đối số này bắt đầu bằng dấu gạch dưới để phân biệt nó với các đối số chính thức khác .
Piotr Dobrogost

Vâng. Nếu bạn chuyển _netdevtùy chọn cho mountlệnh, nó sẽ hiển thị trong /proc/mountsnhưng không có tác dụng nào khác.
Ferenc Wágner

Câu hỏi thưởng; tài liệu này ở đâu đó?
Piotr Dobrogost

1
Các gắn chứa nhãn hiệu: "FileSystem-ĐỘC LẬP MOUNT OPTIONS - Một số các tùy chọn này chỉ hữu ích khi chúng xuất hiện trong /etc/fstab. Tập tin" Vâng, _netdev(tài liệu phần nào sau này) là một ví dụ tốt cho việc này.
Ferenc Wágner

2
Tùy chọn _netdev được bỏ qua trong mount (8) theo mặc định. Các tùy chọn chỉ được sử dụng bởi initscripts. - bugzilla.redhat.com/show_orms.cgi?id=607309#c4
Piotr Dobrogost

18

Từ man systemd.mountphiên bản 231 của systemd:

Các đơn vị gắn kết tham chiếu đến các hệ thống tệp cục bộ và mạng được phân biệt bởi đặc tả loại hệ thống tệp của chúng. Trong một số trường hợp, điều này là không đủ (ví dụ: các giá trị gắn kết dựa trên thiết bị khối mạng, chẳng hạn như iSCSI), trong trường hợp đó, _netdev có thể được thêm vào chuỗi tùy chọn gắn kết của thiết bị, buộc systemd phải coi đơn vị gắn kết là một giá treo mạng.


Tuyệt vời! Không biết tại sao câu trả lời này chưa được bình chọn.
Valentin Bajrami

1

Upstart/Udev

Đối với upstartvà / hoặc udevhệ thống dựa trên điều này là hơi khác nhau.

Dường như udevvẫn sẽ cố gắn kết các hệ thống tập tin NFS và netfslà một mạng lưới an toàn khi thất bại.

Hãy sửa lại cho tôi nếu tôi sai. dù bằng cách nào, câu trả lời này chỉ phù hợp với một số hệ thống cũ gần đây (Ubuntu 14.04 LTS, RHEL6).

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.