NFSv4 không thể đặt bất kỳ ổ cắm nào cho nfsd mà không chạy rpcbind


8

Theo tài liệu 'rpcbind' của Red Hat không còn cần thiết nữa:

Vì hỗ trợ giao thức đã được tích hợp vào giao thức v4, NFSv4 không có tương tác với các sơ đồ portmap, rpc.lockd và rpc.statd. NFSv4 lắng nghe trên cổng TCP nổi tiếng 2049, loại bỏ nhu cầu tương tác portmap. Các giao thức gắn và khóa đã được tích hợp vào giao thức V4 giúp loại bỏ nhu cầu tương tác với rpc.lockd và rpc.statd. Trình nền rpc.mountd vẫn được yêu cầu trên máy chủ, nhưng không liên quan đến bất kỳ hoạt động quá hạn nào.

tuy nhiên tôi không thể khởi động quỷ NFS khi dịch vụ 'rpcbind' không chạy:

# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [FAILED]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                           [FAILED]

Tôi đã tắt NFS v2 và v3:

# grep -v "^#" /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

Bạn có thể vui lòng xác nhận những dịch vụ nào được yêu cầu / thiết yếu trên máy chủ và máy khách từ những dịch vụ được liệt kê bên dưới không (về cơ bản tôi muốn tắt các dịch vụ không cần thiết):

# rpm -ql nfs-utils | grep 'init.d'
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

Bạn đã cấu hình tường lửa của bạn để cho phép nfs?
dùng9517

Có, tôi có thể gắn kết xuất NFS trên máy khách nhưng tôi tự hỏi tại sao tôi vẫn cần sử dụng rpcbindvới v4
HTF

3
NFSv4 không yêu cầu rpcbind. Nhưng có những khách hàng và công cụ xung quanh vẫn phụ thuộc vào thông tin đó, ví dụ như 'showmount'. Ngoài ra, Linux nfsd sử dụng tệp / Proc / fs / nfsd / portlist để truyền số cổng tới rpcbind và tệp này bằng cách nào đó phụ thuộc vào quá trình chạy rpcbind.
kofemann

Tôi có thể xác minh vấn đề này trên Debian 7 với kernel 3.3.2 bằng cách thêm -N 2 -N 3vào rpc.nfsdtrong kịch bản bắt đầu và nhận được lỗi tương tự "không thể đặt bất kỳ ổ cắm cho nfsd"
Tankman六四

Câu trả lời:


10

Đây là một lỗi trong mô-đun hạt nhân máy chủ NFS. Nó đã được vào tháng 12 năm 2013.

Bắt đầu với kernel 3.14, rpcbindkhông còn cần thiết để chạy máy chủ NFS trong kernel.

(giả sử rằng máy chủ được cấu hình để chỉ sử dụng NFSv4 trở lên)

http://lxr.free-electrons.com/source/net/sunrpc/svc.c?v=3.14#L966

Bạn có thể tìm thêm thông tin về sự thay đổi trong chủ đề này:

http://www.spinics.net/lists/linux-nfs/msg41053.html

Do đó, cấu hình của bạn:

MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
RPCNFSDARGS="-N 2 -N 3"

Bây giờ nên làm việc mà không có rpcbind.

Khi bạn chỉ sử dụng NFSv4, không có dịch vụ nào trong số này được yêu cầu:

/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd

rpc.idmapdchỉ được yêu cầu cho NFSv4. GSS cũng được yêu cầu cho bảo mật Kerberos. Mặc dù cả hai đều là tùy chọn.
Irfan Latif

0

Tài liệu được trích dẫn từ RedHat đã sai và đã được sửa bởi Bug 521215 : rpc.mountdvẫn phải được sử dụng để thiết lập NFSv4, nhưng nói đúng ra là không bắt buộc phải chạy sau đó.

  • nfs: Máy chủ cho tất cả các phiên bản của NFS: v2, v3, v4, v4.1
  • rpcbind/ portmapper: Máy chủ , hoàn toàn chỉ dành cho NFS <= v3. Nhưng cũng đối với NFS v4 khi máy chủ Linux Kernel NFS cố gắng tự đăng ký và không khởi động được nếu rpcbindkhông chạy.
  • rpc.mountd: Máy chủ , hoàn toàn chỉ dành cho NFS <= 3. Nhưng đối với NFS v4, Linux Kernel sử dụng nó để kiểm tra, nếu máy khách kết nối được phép kết nối.
  • nfslock: Máy chủ chỉ dành cho NFS <= v3
  • rpc.idmapd: Máy chủ tùy chọn (và khách hàng cũ hơn ) cho NFS v4
  • rpc.quotad: Máy chủ sử dụng dung lượng đĩa
  • rpc.statd: Máy chủ chỉ dành cho NFS <= v3

Khi sử dụng Kerberos ( sec=krb/ krb5i/ krb5p), các dịch vụ sau là bắt buộc:

  • rpc.gssd: Khách hàng
  • rpc.svcgssd: Máy chủ

Xin lưu ý rằng ngay cả khi họ mang rpc.tên mình, họ sử dụng cơ chế bên trong nhân Linux rpc_pipefđể liên lạc giữa nhân Linux và trình trợ giúp không gian người dùng; vì vậy rpcbindAKA portmapperlà không cần thiết cho họ.


-3

Kiểm tra dịch vụ rpcbind. Nếu nó ngừng hoạt động bắt đầu và sau đó thử bắt đầu dịch vụ nfs.

service rpcbind start
service nfs start

Câu trả lời này là chất lượng rất thấp. OP đã tuyên bố rpcbind là không cần thiết kể từ nfsv4. Câu hỏi đã được trả lời: đó là lỗi kernel.
bgtvfr
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.