Dịch vụ nfs là gì? Dịch vụ tập tin mạng. Các chức năng ảnh hưởng đến bộ nhớ đệm thuộc tính trên các mount NFS

Để phân phối tệp trong mạng cục bộ, có thể phân biệt các công nghệ sau (các hệ thống dựa trên Linux được xem xét):

  • Giao thức Hệ thống tệp mạng (NFS) truy cập mạng tới hệ thống tập tin;
  • Các tập tin được truyền qua giao thức Shell (FISH) là một giao thức mạng sử dụng hoặc RSHđể truyền tập tin giữa các máy tính;
  • Secure SHell FileSystem (SSHFS) - ứng dụng khách hệ thống tệp để gắn kết thiết bị đĩa trên các hệ thống từ xa, được sử dụng để tương tác với hệ thống từ xa SFTP;
  • Samba là gói phần mềm cho phép bạn truy cập ổ đĩa mạng và máy in trên nhiều hệ điều hành khác nhau thông qua giao thức SMB/CIFS;

Trong ghi chú này chúng ta sẽ nói về NFS.

NFS (Mạng Hệ thống tập tin) hữu ích khi bạn cần phân phối tệp/thư mục cho mọi người trên mạng. Truy cập tính minh bạch với NFS cho phép khách hàng gắn hệ thống tệp từ xa dưới dạng thư mục cục bộ và hệ thống tệp có thể thuộc nhiều loại khác nhau. Điều này có nghĩa là bất kỳ ứng dụng khách nào có thể hoạt động với tệp cục bộ cũng có thể dễ dàng hoạt động với tệp được kết nối qua NFS, mà không có bất kỳ sửa đổi nào đối với chính chương trình.

Đến lợi ích NFS có thể được quy:

  • giảm tải cho bộ xử lý;
  • hiển thị các tài nguyên được chia sẻ dưới dạng các thư mục thông thường trong hệ thống;
  • Hiện đang có sẵn NFS v4.1, đã giới thiệu một tính năng mới pNFS cho phép bạn song song hóa việc thực hiện chia sẻ tập tin. Ngoài ra còn có phần mở rộng cho NFS 2 và 3 - WebNFS, cho phép tích hợp dễ dàng hơn vào trình duyệt web và khả năng hoạt động thông qua tường lửa.

    Kế hoạch làm việc NFS giao thức.

    Cài đặt và cấu hình máy chủ NFS trên Linux

    Hãy kiểm tra xem nó có hỗ trợ không Hệ thống NFS

    Cat /proc/filesystems | grep nfs

    Dưới Arch Linux máy chủ và máy khách nằm trong cùng một gói

    Yaourt -S nfs-utils

    Để cài đặt máy chủ ( nfs-kernel-server) và khách hàng ( nfs-chung) dưới Ubuntu gói cần thiết

    Sudo apt-get cài đặt nfs-kernel-server nfs-common portmap

    Hơn nữa trong lưu ý này, IP sẽ được sử dụng cho máy chủ 192.168.1.100 . Để luôn gán cùng một IP cho máy chủ, cần phải chỉ định trong máy chủ DHCP (thường là bộ định tuyến) việc phân phối một IP cụ thể đến một địa chỉ MAC cụ thể. Hoặc nâng cao máy chủ DNS cục bộ của bạn. Ví dụ hoặc.

    Địa chỉ MAC có thể được tìm thấy bằng cách sử dụng ifconfig (field ether V. Arch Linux).

    NFSv4 giả định rằng có một thư mục gốc, bên trong đã chứa các tệp để phân phối. Ví dụ, /srv/nfs- nguồn gốc, /srv/nfs/âm thanh- thư mục để phân phối âm nhạc. Nếu bạn không làm theo hướng dẫn mới này trong phiên bản 4 , thì bạn có thể gặp lỗi khi kết nối bằng máy khách:

    Mount.nfs: quyền truy cập bị máy chủ từ chối khi cài đặt 192.168.1.100:/home/proft/torrents

    Nếu bạn vẫn muốn sử dụng phương pháp trên máy chủ mà không có thư mục gốc cho NFS, thì khi gắn bởi máy khách, bạn phải chỉ định rõ ràng phiên bản 3

    # cho lệnh mount mount -o "vers=3" 192.168.1.100:/home/proft/torrents /home/proft/nfs/torrents # for fstab 192.168.1.100:/home/proft/torrents /home/proft/nfs / torrent nfs soft,nfsvers=3 0 0

    tôi sẽ sử dụng NFSv4 với thư mục gốc trong /srv/nfs/ và gắn các thư mục con bằng cách sử dụng mount --bind .

    Giả sử chúng ta muốn

    • phân phối thư mục ~/torrent Với rw truy cập cho mọi người trong mạng cục bộ;
    • phân phối thư mục ~/ảnh Với ro quyền truy cập cho máy chủ có IP 192.168.1.101 ;

    Đầu tiên, hãy tạo một thư mục gốc và các thư mục con cần thiết.

    Sudo mkdir -p /srv/nfs/(torrent,photos)

    Gắn kết các thư mục hiện có torrent, hình ảnh V. /srv/nfs.

    # sudo vim /etc/fstab /home/proft/torrents /srv/nfs/torrents không liên kết 0 0 /home/proft/photos /srv/nfs/photos không liên kết 0 0

    Hãy chỉnh sửa /etc/xuất khẩu, mô tả tất cả các thư mục được chia sẻ

    # sudo vim /etc/exports # định dạng tệp: thư mục allow-hosts(options) /srv/nfs/torrents 192.168.1.1/24(rw,async) /srv/nfs/photos 192.168.1.101(ro,async)

    Lưu ý rằng không có khoảng cách giữa máy chủ được phép(tùy chọn). Sự hiện diện của một không gian đưa ra một cách giải thích khác về các quy tắc.

    Tùy chọn có sẵn:

    • ro (rw) - cho phép truy cập chỉ đọc (đọc/ghi);
    • subtree_check (no_subtree_check) - trong một số trường hợp, không cần phải xuất toàn bộ phần mà chỉ một phần của phần đó. Trong trường hợp này, máy chủ NFS phải thực hiện kiểm tra bổ sung đối với các yêu cầu của máy khách để đảm bảo rằng chúng chỉ đang cố gắng truy cập các tệp nằm trong thư mục con thích hợp. Điều khiển cây con này ( kiểm tra cây con) phần nào làm chậm quá trình tương tác với khách hàng, nhưng nếu bạn từ bỏ nó, các vấn đề về bảo mật hệ thống có thể phát sinh. Bạn có thể hủy bỏ quyền kiểm soát cây con bằng cách sử dụng tùy chọn no_subtree_check. Lựa chọn cây con_check, bao gồm quyền kiểm soát như vậy, được giả định theo mặc định. Việc kiểm tra cây con có thể được bỏ qua nếu thư mục được xuất giống với phân vùng đĩa;
    • đồng bộ hóa (async) - chỉ định rằng máy chủ chỉ phản hồi các yêu cầu sau khi những thay đổi do các yêu cầu đó thực hiện đã được ghi vào đĩa. Lựa chọn không đồng bộ yêu cầu máy chủ không đợi thông tin được ghi vào đĩa, điều này cải thiện hiệu suất nhưng làm giảm độ tin cậy, bởi vì trong trường hợp có lỗi kết nối hoặc lỗi thiết bị, có thể xảy ra mất dữ liệu;
    • noaccess - từ chối quyền truy cập vào thư mục được chỉ định. Nó có thể hữu ích nếu trước đây bạn đặt quyền truy cập cho tất cả người dùng mạng vào một thư mục nhất định và bây giờ bạn muốn hạn chế quyền truy cập vào thư mục con chỉ cho một số người dùng;
    • no_root_squash – người dùng mặc định nguồn gốc trên máy khách sẽ không có quyền tương tự đối với thư mục trên máy chủ. Tùy chọn này loại bỏ hạn chế này;
    • không ẩn- NFS không tự động hiển thị các tài nguyên không cục bộ (ví dụ: được gắn bằng mount --bind), tùy chọn này cho phép hiển thị các tài nguyên đó;
    • không an toàn - sử dụng các cổng không có đặc quyền (> 1024);

    Khởi động máy chủ NFS

    # trong Archlinux sudo systemctl start rpc-idmapd.service rpc-mountd.service # trong ubuntu sudo /etc/init.d/nfs-kernel-server start

    Trong tương lai, khi thay đổi tệp cấu hình, chỉ cần đọc lại bằng lệnh:

    Xuất Sudo -rav

    Lệnh rpcinfo -p | grep nfs cho phép bạn kiểm tra xem máy chủ có khởi động thành công hay không.

    Máy khách Linux

    Cài đặt

    # trong Archlinux yaourt -S nfs-utils # trong ubuntu sudo apt-get install portmap nfs-common

    Hãy tạo thư mục để gắn kết tài nguyên mạng torrentnhững bức ảnh

    Mkdir -p ~/nfs/(torrent,ảnh)

    Để gắn thủ công, chúng tôi sẽ làm

    Sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/torrents /home/proft/nfs/torrents sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/photos /home /proft/nfs/ảnh

    Lựa chọn mềm mại chỉ định âm thầm hủy bỏ các nỗ lực kết nối chia sẻ sau một khoảng thời gian nhất định (thời gian được chỉ định bởi tùy chọn truyền lại). Thêm chi tiết trong người đàn ông nfs.

    Phương pháp này không thuận tiện lắm vì mỗi lần khởi động lại, bạn sẽ phải thực hiện các lệnh này. Hãy thực hiện cài đặt tự động.

    Để gắn kết tự động, hãy chỉnh sửa tập tin /etc/fstab

    # sudo vim /etc/fstab 192.168.1.100:/srv/nfs/torrents /home/proft/net/torrents nfs rw,soft 0 0 192.168.1.100:/srv/nfs/photos /home/proft/net/photos nfs ro,mềm 0 0

    Nhưng phương pháp này cũng có nhược điểm, chẳng hạn như nếu máy chủ không khả dụng, quá trình tải của máy khách có thể bị treo do cố gắng kết nối với máy chủ NFS. Để khắc phục điều này, hãy xem bên dưới về AutoFS.

    AutoFS - tự động kết nối tài nguyên mạng

    Có thể gắn tài nguyên từ xa bằng cách sử dụng AutoFS khi truy cập lần đầu và tự động ngắt kết nối khi không có hoạt động.

    AutoFS sử dụng các mẫu nằm trong /etc/autofs. Mẫu chính được gọi là auto.master, nó có thể trỏ đến một hoặc nhiều mẫu khác cho các loại phương tiện cụ thể.

    Cài đặt

    # trong Archlinux yaourt -S autofs # trong ubuntu sudo apt-get install autofs

    Có một số cách để chỉ định các phương thức automount. Tôi sử dụng cái này: trong /home/proft/nfs Một thư mục được tạo tự động với tên của máy chủ NFS, trong đó các thư mục có thể truy cập trên máy chủ sẽ được tạo tự động.

    # sudo vim /etc/autofs/auto.master /home/proft/nfs /etc/autofs/auto.nfs --timeout=60

    Tham số bổ sung hết giờđặt số giây sau đó thiết bị sẽ được ngắt kết nối. Tham số bóng ma chỉ định rằng các tài nguyên được định cấu hình sẽ luôn được hiển thị và không chỉ khi chúng có sẵn (tùy chọn này được bật theo mặc định trong Tự động 5)

    Chúng tôi sẽ mô tả ở /etc/autofs/auto.nfs Máy chủ NFS và thư mục gốc.

    # sudo vim /etc/autofs/auto.nfs nfsserver 192.168.1.100:/srv/nfs

    Bây giờ trong cuộc gọi đầu tiên /home/proft/nfs/torrents Tài nguyên NFS sẽ được tự động gắn kết.

    Hãy khởi động lại dịch vụ autofs:

    # trong Archlinux sudo systemctl khởi động lại autofs # trong Ubuntu sudo /etc/init.d/autofs khởi động lại

    Bạn cũng có thể chỉ định thời gian chờ đợi để tài nguyên NFS có sẵn. Để làm điều này bạn cần thay đổi các giá trị MOUNT_WAIT.

    # trong Archlinux # sudo vim /etc/conf.d/autofs MOUNT_WAIT=5 # trong ubuntu sudo /etc/default/autofs MOUNT_WAIT=5

    Buộc sử dụng NFS v3

    Trong vài trường hợp NFSv4 có thể hoạt động chậm. Để khắc phục điều này, bạn có thể buộc nó sử dụng phiên bản thứ ba.

    Xin chào quý độc giả và quý khách. Có một thời gian nghỉ rất dài giữa các bài đăng, nhưng tôi đã hoạt động trở lại). Trong bài viết hôm nay tôi sẽ xem xét Hoạt động giao thức NFS, Và thiết lập máy chủ NFS và máy khách NFS trên Linux.

    Giới thiệu về NFS

    NFS (Hệ thống tệp mạng - hệ thống tập tin mạng) theo ý kiến ​​​​của tôi - một giải pháp lý tưởng trên mạng cục bộ, nơi cần trao đổi dữ liệu nhanh (nhanh hơn so với SAMBA và ít tốn tài nguyên hơn so với các hệ thống tệp từ xa có mã hóa - sshfs, SFTP, v.v.) tính bảo mật hàng đầu của thông tin được truyền đi. Giao thức NFS cho phép gắn hệ thống tập tin từ xa qua mạng vào cây thư mục cục bộ, như thể nó là một hệ thống tập tin đĩa được gắn. Điều này cho phép các ứng dụng cục bộ hoạt động với hệ thống tệp từ xa như thể chúng là hệ thống cục bộ. Nhưng bạn cần phải cẩn thận (!) với thiết lập NFS, bởi vì với một cấu hình nhất định, có thể đóng băng hệ điều hành của máy khách để chờ I/O vô tận. Giao thức NFS dựa trên công việc Giao thức RPC, điều này vẫn nằm ngoài tầm hiểu biết của tôi)) nên nội dung trong bài viết sẽ hơi mơ hồ... Trước khi có thể sử dụng NFS, dù là máy chủ hay máy khách, bạn phải đảm bảo rằng kernel của bạn có hỗ trợ cho tệp NFS hệ thống. Bạn có thể kiểm tra xem kernel có hỗ trợ hệ thống tệp NFS hay không bằng cách xem sự hiện diện của các dòng tương ứng trong tệp /proc/hệ thống tập tin:

    ARCHIV ~ # grep nfs /proc/filesystems nodev nfs nodev nfs4 nodev nfsd

    Nếu các dòng được chỉ định trong tệp /proc/hệ thống tập tin không xuất hiện thì bạn cần cài đặt các gói được mô tả bên dưới. Điều này rất có thể sẽ cho phép bạn cài đặt các mô-đun hạt nhân phụ thuộc để hỗ trợ các hệ thống tệp được yêu cầu. Nếu sau khi cài đặt các gói, hỗ trợ NFS không được hiển thị trong tệp đã chỉ định thì bạn sẽ cần phải kích hoạt chức năng này.

    Câu chuyện Hệ thống tệp mạng

    Giao thức NFSđược phát triển bởi Sun Microsystems và có 4 phiên bản trong lịch sử. NFSv1được phát triển vào năm 1989 và được thử nghiệm, chạy trên giao thức UDP. Phiên bản 1 được mô tả trong . NFSv2được phát hành vào cùng năm 1989, được mô tả bởi cùng RFC1094 và cũng dựa trên giao thức UDP, đồng thời cho phép đọc không quá 2GB từ một tệp. NFSv3được hoàn thiện vào năm 1995 và được mô tả trong . Những cải tiến chính của phiên bản thứ ba là hỗ trợ các tệp lớn, hỗ trợ thêm cho giao thức TCP và các gói TCP lớn, giúp tăng tốc đáng kể hiệu suất của công nghệ. NFSv4được hoàn thiện vào năm 2000 và được mô tả trong RFC 3010, được sửa đổi vào năm 2003 và được mô tả trong . Phiên bản thứ tư bao gồm các cải tiến về hiệu suất, hỗ trợ các phương tiện xác thực khác nhau (đặc biệt là Kerberos và LIPKEY sử dụng giao thức RPCSEC GSS) và danh sách kiểm soát truy cập (cả loại POSIX và Windows). Phiên bản NFS v4.1đã được IESG phê duyệt vào năm 2010 và nhận được số . Một cải tiến quan trọng trong phiên bản 4.1 là đặc điểm kỹ thuật của pNFS - Parallel NFS, một cơ chế cho phép máy khách NFS truy cập song song vào dữ liệu từ nhiều máy chủ NFS phân tán. Sự hiện diện của cơ chế như vậy trong tiêu chuẩn hệ thống tệp mạng sẽ giúp xây dựng các hệ thống thông tin và lưu trữ “đám mây” phân tán.

    máy chủ NFS

    Vì chúng tôi có NFS- Cái này mạng hệ thống tập tin, sau đó cần thiết. (Bạn cũng có thể đọc bài viết). Tiếp theo là cần thiết. Trên Debian đây là một gói nfs-kernel-servernfs-chung, trong RedHat đây là một gói nfs-utils. Ngoài ra, bạn cần cho phép daemon chạy ở các mức thực thi hệ điều hành được yêu cầu (lệnh trong RedHat - /sbin/chkconfig nfs bật, trong Debian - /usr/sbin/update-rc.d mặc định nfs-kernel-server).

    Các gói đã cài đặt trong Debian được khởi chạy theo thứ tự sau:

    ARCHIV ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx 1 root root 20/10/18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 27/10/22 01:23 S16nfs-kernel-server -> ../init.d /nfs-kernel-server

    Tức là nó bắt đầu trước nfs-chung, thì chính máy chủ nfs-kernel-server. Trong RedHat, tình huống tương tự, ngoại trừ duy nhất là tập lệnh đầu tiên được gọi nfslock và máy chủ được gọi đơn giản nfs. Về nfs-chung Trang web debian cho chúng ta biết nguyên văn điều này: những tệp đã chia sẻđối với máy khách và máy chủ NFS, gói này phải được cài đặt trên máy sẽ hoạt động như máy khách hoặc máy chủ NFS. Gói này bao gồm các chương trình: lockd, statd, showmount, nfsstat, gssd và idmapd. Xem nội dung của tập lệnh khởi chạy /etc/init.d/nfs-common bạn có thể theo dõi trình tự công việc sau: tập lệnh kiểm tra sự hiện diện của tệp nhị phân thực thi /sbin/rpc.statd, kiểm tra sự hiện diện trong tập tin /etc/default/nfs-common, /etc/fstab/etc/xuất khẩu các tham số yêu cầu chạy daemon idmapd gssd , khởi động daemon /sbin/rpc.statd , sau đó trước khi ra mắt /usr/sbin/rpc.idmapd/usr/sbin/rpc.gssd kiểm tra sự hiện diện của các tệp thực thi này tập tin nhị phân, hơn nữa cho daemon /usr/sbin/rpc.idmapd kiểm tra phòng trống sunrpc, nfsnfsd, cũng như hỗ trợ hệ thống tập tin rpc_pipefs trong kernel (nghĩa là có nó trong tệp /proc/hệ thống tập tin), nếu mọi thứ thành công, nó sẽ bắt đầu /usr/sbin/rpc.idmapd . Ngoài ra, đối với con quỷ /usr/sbin/rpc.gssd Séc mô-đun hạt nhân rpcsec_gss_krb5 và khởi động daemon.

    Nếu bạn xem nội dung Kịch bản khởi động máy chủ NFS trên Debian ( /etc/init.d/nfs-kernel-server), thì bạn có thể làm theo trình tự sau: khi khởi động, tập lệnh sẽ kiểm tra sự tồn tại của tệp /etc/xuất khẩu, Khả dụng nfsd, sự sẵn có của sự hỗ trợ Hệ thống tập tin NFS trong (nghĩa là trong tập tin /proc/hệ thống tập tin), nếu mọi thứ đều ổn thì daemon sẽ bắt đầu /usr/sbin/rpc.nfsd , sau đó kiểm tra xem tham số có được chỉ định không NEED_SVCGSD(được đặt trong tệp cài đặt máy chủ /etc/default/nfs-kernel-server) và, nếu được, sẽ khởi động daemon /usr/sbin/rpc.svcgssd , khởi chạy daemon lần cuối /usr/sbin/rpc.mountd . Từ kịch bản này rõ ràng là Hoạt động của máy chủ NFS bao gồm daemon rpc.nfsd, rpc.mountd và nếu xác thực Kerberos được sử dụng thì daemon rcp.svcgssd. Trong chiếc mũ đỏ, daemon rpc.rquotad và nfslogd vẫn đang chạy (Vì lý do nào đó trong Debian, tôi không tìm thấy thông tin về daemon này và lý do vắng mặt, có vẻ như nó đã bị xóa...).

    Từ đó trở nên rõ ràng rằng Máy chủ Hệ thống tệp mạng bao gồm các quy trình sau (đọc: daemon), nằm trong thư mục /sbin và /usr/sbin:

    Trong NFSv4, khi sử dụng Kerberos, các daemon bổ sung sẽ được khởi động:

    • rpc.gssd- Daemon NFSv4 cung cấp các phương thức xác thực thông qua GSS-API (xác thực Kerberos). Hoạt động trên máy khách và máy chủ.
    • rpc.svcgssd- Trình nền máy chủ NFSv4 cung cấp xác thực ứng dụng khách phía máy chủ.

    portmap và giao thức RPC (Sun RPC)

    Ngoài các gói trên, NFSv2 và v3 yêu cầu gói bổ sung sơ đồ cổng(được thay thế trong các bản phân phối mới hơn bằng cách đổi tên thành rpcbind). Gói hiện tại nó thường được cài đặt tự động với NFS với tư cách là phần phụ thuộc và thực hiện hoạt động của máy chủ RPC, nghĩa là nó chịu trách nhiệm gán động các cổng cho một số dịch vụ được đăng ký trong máy chủ RPC. Theo nghĩa đen, theo tài liệu, đây là một máy chủ chuyển đổi số chương trình RPC (Cuộc gọi thủ tục từ xa) thành số cổng TCP/UDP. portmap hoạt động trên một số thực thể: Cuộc gọi hoặc yêu cầu RPC, Cổng TCP/UDP,phiên bản giao thức(tcp hoặc udp), số chương trìnhphiên bản phần mềm. Daemon portmap được khởi chạy bởi tập lệnh /etc/init.d/portmap trước khi dịch vụ NFS khởi động.

    Nói tóm lại, công việc của máy chủ RPC (Cuộc gọi thủ tục từ xa) là xử lý các cuộc gọi RPC (còn gọi là thủ tục RPC) từ các quy trình cục bộ và từ xa. Bằng cách sử dụng các cuộc gọi RPC, các dịch vụ sẽ tự đăng ký hoặc tự xóa khỏi/từ trình ánh xạ cổng (còn gọi là trình ánh xạ cổng, hay còn gọi là portmap, hay còn gọi là portmapper, hay còn gọi là trong các phiên bản mới, rpcbind) và khách hàng sử dụng các lệnh gọi RPC để gửi yêu cầu đến trình ánh xạ cổng để nhận thông tin cần thiết . Tên thân thiện với người dùng của các dịch vụ chương trình và số tương ứng của chúng được xác định trong tệp /etc/rpc. Ngay sau khi bất kỳ dịch vụ nào gửi yêu cầu tương ứng và tự đăng ký trên máy chủ RPC trong trình ánh xạ cổng, máy chủ RPC sẽ chỉ định, ánh xạ tới dịch vụ các cổng TCP và UDP mà dịch vụ bắt đầu và lưu trữ trong kernel thông tin tương ứng về dịch vụ đang chạy (tên), dịch vụ số duy nhất (theo /etc/rpc), về giao thức và cổng mà dịch vụ chạy trên đó cũng như về phiên bản của dịch vụ và cung cấp thông tin được chỉ định khách hàng theo yêu cầu. Bản thân bộ chuyển đổi cổng có số chương trình (100000), số phiên bản - 2, cổng TCP 111 và cổng UDP 111. Ở trên, khi chỉ định thành phần của daemon máy chủ NFS, tôi đã chỉ ra các số chương trình RPC chính. Có lẽ tôi đã làm bạn bối rối một chút với đoạn này, vì vậy tôi sẽ nói một cụm từ cơ bản để làm rõ mọi thứ: chức năng chính của trình ánh xạ cổng là trả về, theo yêu cầu của khách hàng đã cung cấp số chương trình RPC ( hoặc số chương trình RPC) và phiên bản cho anh ta (máy khách) cổng mà chương trình được yêu cầu đang chạy. Theo đó, nếu một client cần truy cập RPC bằng con số cụ thể chương trình, trước tiên nó phải liên hệ với quy trình portmap trên máy chủ và xác định số cổng giao tiếp với dịch vụ RPC mà nó cần.

    Hoạt động của máy chủ RPC có thể được biểu diễn bằng các bước sau:

    1. Bộ chuyển đổi cổng sẽ khởi động trước, thường là khi hệ thống khởi động. Điều này tạo ra một điểm cuối TCP và mở cổng TCP 111. Nó cũng tạo ra một điểm cuối UDP chờ gói dữ liệu UDP đến trên cổng UDP 111.
    2. Khi khởi động, một chương trình chạy qua máy chủ RPC sẽ tạo điểm cuối TCP và điểm cuối UDP cho mỗi phiên bản chương trình được hỗ trợ. (Máy chủ RPC có thể hỗ trợ nhiều phiên bản. Máy khách chỉ định phiên bản được yêu cầu khi thực hiện cuộc gọi RPC.) Số cổng được gán động được gán cho mỗi phiên bản của dịch vụ. Máy chủ ghi lại từng chương trình, phiên bản, giao thức và số cổng bằng cách thực hiện lệnh gọi RPC thích hợp.
    3. Khi chương trình máy khách RPC cần lấy thông tin cần thiết, nó sẽ gọi quy trình phân giải cổng để lấy số cổng được gán động cho chương trình, phiên bản và giao thức đã chỉ định.
    4. Để đáp ứng yêu cầu này, phía bắc trả về số cổng.
    5. Máy khách gửi thông báo yêu cầu RPC tới số cổng thu được ở bước 4. Nếu sử dụng UDP, máy khách chỉ cần gửi một gói dữ liệu UDP chứa thông báo thách thức RPC tới số cổng UDP mà dịch vụ được yêu cầu đang chạy trên đó. Để phản hồi, dịch vụ sẽ gửi một gói dữ liệu UDP chứa thông báo phản hồi RPC. Nếu TCP được sử dụng, máy khách sẽ chủ động mở số cổng TCP của dịch vụ mong muốn và sau đó gửi thông báo thách thức RPC qua kết nối đã thiết lập. Máy chủ phản hồi bằng thông báo phản hồi RPC trên kết nối.

    Để lấy thông tin từ máy chủ RPC, hãy sử dụng tiện ích rpcinfo. Khi xác định tham số -p máy chủ chương trình hiển thị danh sách tất cả các chương trình RPC đã đăng ký trên máy chủ lưu trữ. Không chỉ định máy chủ, chương trình sẽ hiển thị các dịch vụ trên localhost. Ví dụ:

    ARCHIV ~ # rpcinfo -p prog-ma vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 59451 trạng thái 100024 1 tcp 60872 trạng thái 100021 1 udp 44310 nlockmgr 10002 1 3 udp 44310 nlockmgr 100021 4 udp 44310 nlockmgr 100021 1 tcp 44851 nlockmgr 100021 3 tcp 44851 nlockmgr 100021 4 tcp 44851 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 51306 mountd 100005 1 tcp 41405 mountd 100005 2 udp 51306 mountd 100005 2 tcp 41405 mountd 100005 3 udp 51306 mountd 100005 3 tcp 41405 mountd

    Như bạn có thể thấy, rpcinfo hiển thị (theo cột từ trái sang phải) số chương trình, phiên bản, giao thức, cổng và tên đã đăng ký. Sử dụng rpcinfo, bạn có thể xóa đăng ký chương trình hoặc nhận thông tin về một dịch vụ RPC cụ thể (nhiều tùy chọn hơn trong man rpcinfo). Như bạn có thể thấy, portmapper daemon phiên bản 2 được đăng ký trên cổng udp và tcp, rpc.statd phiên bản 1 trên cổng udp và tcp, trình quản lý khóa NFS phiên bản 1,3,4, nfs server daemon phiên bản 2,3,4. như phiên bản mount daemon 1,2,3.

    Máy chủ NFS (chính xác hơn là daemon rpc.nfsd) nhận yêu cầu từ máy khách dưới dạng gói dữ liệu UDP trên cổng 2049. Mặc dù NFS hoạt động với trình phân giải cổng, cho phép máy chủ sử dụng các cổng được gán động, cổng UDP 2049 là được mã hóa cứng thành NFS trong hầu hết các triển khai.

    Hoạt động giao thức hệ thống tệp mạng

    Gắn NFS từ xa

    Quá trình gắn hệ thống tệp NFS từ xa có thể được biểu diễn bằng sơ đồ sau:

    Mô tả giao thức NFS khi gắn thư mục từ xa:

    1. Một máy chủ RPC được khởi chạy trên máy chủ và máy khách (thường là lúc khởi động), được phục vụ bởi quy trình portmapper và được đăng ký trên cổng tcp/111 và udp/111.
    2. Các dịch vụ được khởi chạy (rpc.nfsd, rpc.statd, v.v.), được đăng ký trên máy chủ RPC và được đăng ký trên các cổng mạng tùy ý (nếu cổng tĩnh không được chỉ định trong cài đặt dịch vụ).
    3. lệnh mount trên máy khách gửi yêu cầu tới kernel để gắn thư mục mạng, cho biết loại hệ thống tệp, máy chủ và thư mục; kernel gửi và tạo yêu cầu RPC tới quy trình portmap trên máy chủ NFS trên cổng udp /111 (nếu tùy chọn hoạt động qua tcp không được đặt trên máy khách)
    4. Nhân máy chủ NFS truy vấn RPC về sự hiện diện của daemon rpc.mountd và trả về kernel máy khách cổng mạng mà daemon đang chạy trên đó.
    5. mount gửi yêu cầu RPC tới cổng mà rpc.mountd đang chạy. Máy chủ NFS hiện có thể xác thực máy khách dựa trên địa chỉ IP và số cổng của nó để xem liệu máy khách có thể gắn hệ thống tệp được chỉ định hay không.
    6. Trình nền gắn kết trả về mô tả về hệ thống tệp được yêu cầu.
    7. Lệnh mount của máy khách thực hiện lệnh gọi hệ thống mount để liên kết phần xử lý tệp thu được ở bước 5 với điểm gắn kết cục bộ trên máy chủ của máy khách. Trình xử lý tệp được lưu trữ trong mã NFS của máy khách và từ giờ trở đi, mọi quyền truy cập của quy trình người dùng vào các tệp trên hệ thống tệp của máy chủ sẽ sử dụng trình xử lý tệp làm điểm bắt đầu.

    Giao tiếp giữa máy khách và máy chủ NFS

    Một quyền truy cập điển hình vào hệ thống tập tin từ xa có thể được mô tả như sau:

    Mô tả quá trình truy cập tệp nằm trên máy chủ NFS:

    1. Máy khách (quy trình người dùng) không quan tâm liệu nó đang truy cập tệp cục bộ hay tệp NFS. Hạt nhân tương tác với phần cứng thông qua các mô-đun hạt nhân hoặc các lệnh gọi hệ thống tích hợp.
    2. mô-đun hạt nhân hạt nhân/fs/nfs/nfs.ko, thực hiện các chức năng của máy khách NFS, gửi các yêu cầu RPC đến máy chủ NFS thông qua mô-đun TCP/IP. NFS thường sử dụng UDP, tuy nhiên các triển khai mới hơn có thể sử dụng TCP.
    3. Máy chủ NFS nhận yêu cầu từ máy khách dưới dạng gói dữ liệu UDP trên cổng 2049. Mặc dù NFS có thể hoạt động với trình phân giải cổng, cho phép máy chủ sử dụng các cổng được gán động, cổng UDP 2049 được mã hóa cứng thành NFS trong hầu hết các triển khai.
    4. Khi máy chủ NFS nhận được yêu cầu từ máy khách, nó sẽ được chuyển đến quy trình truy cập tệp cục bộ, quy trình này cung cấp quyền truy cập vào đĩa cục bộ trên máy chủ.
    5. Kết quả truy cập đĩa được trả về cho máy khách.

    Thiết lập máy chủ NFS

    Điều chỉnh máy chủ nói chung bao gồm việc chỉ định các thư mục cục bộ được phép gắn kết bởi các hệ thống từ xa trong một tệp /etc/xuất khẩu. Hành động này được gọi là phân cấp thư mục xuất khẩu. Nguồn thông tin chính về danh mục được xuất là các tệp sau:

    • /etc/xuất khẩu- tệp cấu hình chính lưu trữ cấu hình của các thư mục đã xuất. Được sử dụng khi khởi động NFS và bởi tiện ích importfs.
    • /var/lib/nfs/xtab- chứa danh sách các thư mục được gắn bởi các máy khách từ xa. Được sử dụng bởi trình nền rpc.mountd khi máy khách cố gắng gắn kết một hệ thống phân cấp (một mục gắn kết được tạo).
    • /var/lib/nfs/etab- danh sách các thư mục có thể được gắn kết bởi các hệ thống từ xa, cho biết tất cả các tham số của các thư mục đã xuất.
    • /var/lib/nfs/rmtab- danh sách các thư mục hiện chưa được xuất.
    • /proc/fs/nfsd- một hệ thống tệp đặc biệt (kernel 2.6) để quản lý máy chủ NFS.
      • xuất khẩu- danh sách các hệ thống phân cấp được xuất đang hoạt động và khách hàng mà chúng được xuất, cũng như các tham số. Hạt nhân lấy thông tin này từ /var/lib/nfs/xtab.
      • chủ đề- chứa số lượng chủ đề (cũng có thể thay đổi)
      • bằng cách sử dụng filehandle bạn có thể lấy một con trỏ tới một tập tin
      • và vân vân...
    • /proc/net/rpc- chứa số liệu thống kê "thô", có thể lấy được bằng nfsstat, cũng như các bộ nhớ đệm khác nhau.
    • /var/run/portmap_mapping- thông tin về các dịch vụ được đăng ký trong RPC

    Ghi chú: Nói chung trên Internet có rất nhiều cách giải thích và công thức về mục đích của các file xtab, etab, rmtab, không biết nên tin ai, kể cả trên http://nfs.sourceforge.net/ cách giải thích là không rõ ràng.

    Thiết lập tệp /etc/exports

    Trong trường hợp đơn giản nhất, tệp /etc/exports là tệp duy nhất yêu cầu chỉnh sửa để định cấu hình máy chủ NFS. Tệp này kiểm soát các khía cạnh sau:

    • Những loại khách hàng nào có thể truy cập các tập tin trên máy chủ
    • Những thứ bậc nào? các thư mục trên máy chủ có thể được truy cập bởi mỗi khách hàng
    • Tên khách hàng tùy chỉnh sẽ như thế nào được hiển thị tới tên người dùng cục bộ

    Mỗi dòng của tệp xuất có định dạng sau:

    import_point client1 (tùy chọn) [client2(tùy chọn) ...]

    Ở đâu điểm xuất khẩu đường dẫn tuyệt đối của hệ thống phân cấp thư mục đã xuất, khách hàng1 - n tên của một hoặc nhiều máy khách hoặc địa chỉ IP, cách nhau bằng dấu cách, được phép gắn kết điểm xuất khẩu . Tùy chọn mô tả các quy tắc gắn kết cho khách hàng, được chỉ định trước tùy chọn .

    Đây là một điển hình ví dụ về cấu hình tệp xuất khẩu:

    ARCHIV ~ # cat /etc/exports /archiv1 files(rw,sync) 10.0.0.1(ro,sync) 10.0.230.1/24(ro,sync)

    TRONG trong ví dụ này các tệp máy tính và 10.0.0.1 được phép truy cập vào điểm xuất /archiv1, trong khi máy chủ lưu trữ tệp có quyền truy cập đọc/ghi và máy chủ 10.0.0.1 và mạng con 10.0.230.1/24 có quyền truy cập chỉ đọc.

    Mô tả máy chủ trong /etc/exports được phép ở định dạng sau:

    • Tên của các nút riêng lẻ được mô tả dưới dạng tệp hoặc tệp.DOMAIN.local.
    • Mô tả của mặt nạ miền được thực hiện trong định dạng sau: *DOMAIN.local bao gồm tất cả các nút trong miền DOMAIN.local.
    • Mạng con được chỉ định dưới dạng cặp địa chỉ/mặt nạ IP. Ví dụ: 10.0.0.0/255.255.255.0 bao gồm tất cả các nút có địa chỉ bắt đầu bằng 10.0.0.
    • Chỉ định tên của nhóm mạng @myclients có quyền truy cập vào tài nguyên (khi sử dụng máy chủ NIS)

    Các tùy chọn chung để xuất phân cấp thư mục

    Tệp xuất sử dụng các tùy chọn chung sau(các tùy chọn được sử dụng theo mặc định trong hầu hết các hệ thống được liệt kê đầu tiên, các tùy chọn không mặc định trong ngoặc):

    • auth_nlm (no_auth_nlm) hoặc safe_locks (không an toàn_locks)- chỉ định rằng máy chủ phải yêu cầu xác thực các yêu cầu khóa (sử dụng giao thức Trình quản lý khóa NFS).
    • không ẩn (ẩn)- nếu máy chủ xuất hai hệ thống phân cấp thư mục, với một hệ thống được lồng (được gắn) bên trong hệ thống kia. Máy khách cần gắn kết rõ ràng hệ thống phân cấp thứ hai (con), nếu không điểm gắn kết của hệ thống phân cấp con sẽ xuất hiện dưới dạng một thư mục trống. Tùy chọn nohide dẫn đến hệ thống phân cấp thư mục thứ hai mà không có sự gắn kết rõ ràng. ( ghi chú: Tôi không thể làm cho tùy chọn này hoạt động...)
    • ro(rw)- Chỉ cho phép đọc (ghi) các yêu cầu. (Cuối cùng, việc có thể đọc/ghi hay không được xác định dựa trên quyền của hệ thống tệp và máy chủ không thể phân biệt yêu cầu đọc tệp với yêu cầu thực thi nên cho phép đọc nếu người dùng đã đọc hoặc thực thi quyền.)
    • an toàn (không an toàn)- yêu cầu các yêu cầu NFS đến từ các cổng an toàn (< 1024), чтобы программа без quyền gốc không thể gắn kết hệ thống phân cấp thư mục.
    • cây con_check (no_subtree_check)- Nếu một thư mục con của hệ thống tệp được xuất chứ không phải toàn bộ hệ thống tệp thì máy chủ sẽ kiểm tra xem tệp được yêu cầu có nằm trong thư mục con được xuất hay không. Việc tắt xác minh làm giảm tính bảo mật nhưng lại tăng tốc độ truyền dữ liệu.
    • đồng bộ hóa (không đồng bộ)- chỉ định rằng máy chủ chỉ phản hồi các yêu cầu sau khi những thay đổi do các yêu cầu đó thực hiện đã được ghi vào đĩa. Tùy chọn không đồng bộ yêu cầu máy chủ không đợi thông tin được ghi vào đĩa, điều này cải thiện hiệu suất nhưng làm giảm độ tin cậy vì Trong trường hợp ngắt kết nối hoặc lỗi thiết bị, thông tin có thể bị mất.
    • wdelay (no_wdelay)- hướng dẫn máy chủ trì hoãn việc thực hiện các yêu cầu ghi nếu yêu cầu ghi tiếp theo đang chờ xử lý, ghi dữ liệu theo khối lớn hơn. Điều này cải thiện hiệu suất khi gửi hàng đợi lệnh ghi lớn. no_wdelay chỉ định không trì hoãn việc thực thi lệnh ghi, điều này có thể hữu ích nếu máy chủ nhận được một số lượng lớn các lệnh không liên quan.

    Xuất các liên kết tượng trưng và tập tin thiết bị. Khi xuất hệ thống phân cấp thư mục chứa các liên kết tượng trưng, ​​​​đối tượng liên kết phải có thể truy cập được đối với hệ thống máy khách (từ xa), nghĩa là một trong các quy tắc sau phải đúng:

    Tệp thiết bị thuộc về giao diện. Khi bạn xuất file thiết bị, giao diện này sẽ được xuất. Nếu hệ thống máy khách không có thiết bị cùng loại thì thiết bị được xuất sẽ không hoạt động. Trên hệ thống máy khách, khi gắn các đối tượng NFS, bạn có thể sử dụng tùy chọn gật đầu để các tệp thiết bị trong thư mục được gắn không được sử dụng.

    Tùy chọn mặc định trong hệ thống khác nhau có thể khác nhau, chúng có thể được xem trong tệp /var/lib/nfs/etab. Sau khi mô tả thư mục đã xuất trong /etc/exports và khởi động lại máy chủ NFS, tất cả các tùy chọn bị thiếu (đọc: tùy chọn mặc định) sẽ được phản ánh trong tệp /var/lib/nfs/etab.

    Tùy chọn hiển thị ID người dùng (khớp)

    Để hiểu rõ hơn về những điều sau đây, tôi khuyên bạn nên đọc bài viết. Mỗi người dùng Linux có UID và GID chính riêng, được mô tả trong các tệp /etc/passwd/etc/nhóm. Máy chủ NFS giả định rằng hệ điều hành của máy chủ từ xa đã xác thực người dùng và gán cho họ UID và GID chính xác. Việc xuất tệp cung cấp cho người dùng hệ thống máy khách quyền truy cập tương tự vào các tệp đó như thể chúng được ghi trực tiếp trên máy chủ. Theo đó, khi một máy khách NFS gửi yêu cầu đến máy chủ, máy chủ sẽ sử dụng UID và GID để nhận dạng người dùng trên hệ thống cục bộ, điều này có thể dẫn đến một số vấn đề:

    • một người dùng có thể không có cùng số nhận dạng trên cả hai hệ thống và do đó có thể truy cập vào tệp của người dùng khác.
    • bởi vì ID của người dùng root luôn là 0, khi đó người dùng này sẽ được hiển thị trên người dùng cục bộ tùy thuộc vào các tùy chọn được chỉ định.

    Các tùy chọn sau chỉ định quy tắc hiển thị người dùng từ xaở địa phương:

    • root_squash (no_root_squash)- Với tùy chọn được chỉ định root_squash, các yêu cầu từ người dùng root sẽ được ánh xạ tới uid/gid ẩn danh hoặc tới người dùng được chỉ định trong tham số anonuid/anongid.
    • no_all_squash (all_squash)- Không thay đổi UID/GID của người dùng kết nối. Lựa chọn all_squashđặt hiển thị TẤT CẢ người dùng (không chỉ root) là ẩn danh hoặc được chỉ định trong tham số anonuid/anongid.
    • anonuid= UID anongid= GID - Đặt rõ ràng UID/GID cho người dùng ẩn danh.
    • bản đồ_static= /etc/file_maps_users - Chỉ định một tệp trong đó bạn có thể đặt ánh xạ UID/GID từ xa thành UID/GID cục bộ.

    Ví dụ về việc sử dụng tệp ánh xạ người dùng:

    ARCHIV ~ # cat /etc/file_maps_users # Ánh xạ người dùng # nhận xét cục bộ từ xa uid 0-50 1002 # ánh xạ người dùng với UID từ xa 0-50 sang UID cục bộ 1002 gid 0-50 1002 # ánh xạ người dùng với/trải dài GID từ xa 0-50 tới GID địa phương 1002

    Quản lý máy chủ NFS

    Máy chủ NFS được quản lý bằng các tiện ích sau:

    • nfsstat
    • gắn kết showmsecure (không an toàn)

    nfsstat: Thống kê NFS và RPC

    Tiện ích nfsstat cho phép bạn xem số liệu thống kê của máy chủ RPC và NFS. Các tùy chọn lệnh có thể được tìm thấy trong man nfsstat.

    showmount: Hiển thị thông tin trạng thái NFS

    tiện ích showmount truy vấn daemon rpc.mountd trên máy chủ từ xa về hệ thống tệp được gắn. Theo mặc định, một danh sách khách hàng đã được sắp xếp sẽ được trả về. Phím:

    • --tất cả- một danh sách các máy khách và các điểm gắn kết được hiển thị cho biết nơi máy khách gắn kết thư mục. Thông tin này có thể không đáng tin cậy.
    • --thư mục- một danh sách các điểm gắn kết được hiển thị
    • --xuất khẩu- danh sách các hệ thống tệp đã xuất được hiển thị theo quan điểm của nfsd

    Khi bạn chạy showmount không có đối số, thông tin về hệ thống được phép mount sẽ được in ra console địa phương danh mục. Ví dụ: máy chủ ARCHIV cung cấp cho chúng tôi danh sách các thư mục được xuất với địa chỉ IP của máy chủ được phép gắn kết các thư mục được chỉ định:

    FILES ~ # showmount --exports archive Xuất danh sách để lưu trữ: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

    Nếu bạn chỉ định tên máy chủ/IP trong đối số, thông tin về máy chủ này sẽ được hiển thị:

    ARCHIV ~ # showmount file clnt_create: RPC: Chương trình chưa được đăng ký # tin nhăn nay cho chúng tôi biết rằng daemon NFSd không chạy trên máy chủ FILES

    importfs: quản lý các thư mục đã xuất

    Lệnh này phục vụ các thư mục đã xuất được chỉ định trong tệp /etc/xuất khẩu, sẽ chính xác hơn nếu viết rằng nó không phục vụ mà đồng bộ hóa với tệp /var/lib/nfs/xtab và xóa những cái không tồn tại khỏi xtab. importfs được thực thi khi daemon nfsd được khởi động với đối số -r. Tiện ích importfs ở chế độ kernel 2.6 giao tiếp với daemon rpc.mountd thông qua các tệp trong thư mục /var/lib/nfs/ và không giao tiếp trực tiếp với kernel. Không có tham số, hiển thị danh sách các hệ thống tệp hiện được xuất.

    thông số xuất khẩu:

    • [client:directory-name] - thêm hoặc xóa hệ thống tệp được chỉ định cho ứng dụng khách được chỉ định)
    • -v - hiển thị thêm thông tin
    • -r - tái xuất tất cả các thư mục (đồng bộ hóa /etc/exports và /var/lib/nfs/xtab)
    • -u - xóa khỏi danh sách đã xuất
    • -a - thêm hoặc xóa tất cả các hệ thống tập tin
    • -o - các tùy chọn được phân tách bằng dấu phẩy (tương tự như các tùy chọn được sử dụng trong /etc/exports; tức là bạn có thể thay đổi các tùy chọn của hệ thống tệp đã được gắn)
    • -i - không sử dụng /etc/exports khi thêm, chỉ sử dụng các tùy chọn dòng lệnh hiện tại
    • -f - đặt lại danh sách các hệ thống đã xuất trong kernel 2.6;

    Máy khách NFS

    Trước khi truy cập một tệp trên hệ thống tệp từ xa, máy khách (hệ điều hành máy khách) phải gắn kết nó và nhận từ máy chủ con trỏ tới nó. Gắn kết NFS có thể được thực hiện bằng hoặc sử dụng một trong các công cụ gắn kết tự động đang phát triển nhanh chóng (amd, autofs, automount, supermount, superpupermount). Quá trình cài đặt được thể hiện rõ trong hình minh họa ở trên.

    TRÊN Khách hàng NFS không cần chạy bất kỳ daemon nào, chức năng khách hàng thực thi một mô-đun hạt nhân kernel/fs/nfs/nfs.ko, được sử dụng khi gắn hệ thống tệp từ xa. Các thư mục đã xuất từ ​​máy chủ có thể được gắn trên máy khách theo các cách sau:

    • thủ công bằng lệnh mount
    • tự động khi khởi động, khi gắn hệ thống tệp được mô tả trong /etc/fstab
    • tự động sử dụng daemon autofs

    Tôi sẽ không xem xét phương pháp thứ ba với autofs trong bài viết này do lượng thông tin khổng lồ của nó. Có lẽ sẽ có mô tả riêng trong các bài viết sau.

    Gắn hệ thống tệp mạng bằng lệnh mount

    Một ví dụ về việc sử dụng lệnh mount được trình bày trong bài viết. Ở đây tôi sẽ xem một ví dụ về lệnh mount để gắn hệ thống tệp NFS:

    FILES ~ # mount -t nfs archive:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archive:/archiv-big /archivs/archiv-big FILES ~ # mount..... .. archive:/archiv-small trên /archivs/archiv-small loại nfs (rw,addr=10.0.0.6) archivev:/archiv-big trên /archivs/archiv-big loại nfs (ro,addr=10.0.0.6)

    Lệnh đầu tiên gắn kết thư mục đã xuất /archiv-nhỏ trên máy chủ lưu trữ V. điểm địa phương gắn /archivs/archiv-nhỏ với các tùy chọn mặc định (tức là đọc và viết). Mặc dù lệnh gắn kết trong các bản phân phối mới nhất, nó có thể hiểu loại hệ thống tệp nào được sử dụng ngay cả khi không chỉ định loại nhưng vẫn chỉ ra tham số -t nfs mong muốn. Lệnh thứ hai gắn kết thư mục đã xuất /archiv-big trên máy chủ lưu trữ vào thư mục cục bộ /archivs/archiv-big với tùy chọn chỉ đọc ( ro). lệnh gắn kết không có thông số, nó hiển thị rõ ràng cho chúng ta kết quả lắp đặt. Ngoài tùy chọn chỉ đọc (ro), có thể chỉ định khác Các tùy chọn cơ bản khi mount NFS:

    • nosuid- Tùy chọn này cấm thực thi các chương trình từ thư mục được gắn.
    • gật đầu(không có thiết bị - không phải thiết bị) - Tùy chọn này cấm sử dụng ký tự và chặn các tệp đặc biệt làm thiết bị.
    • khóa (nolock)- Cho phép khóa NFS (mặc định). nolock vô hiệu hóa khóa NFS (không khởi động daemon lockd) và rất hữu ích khi làm việc với các máy chủ cũ không hỗ trợ khóa NFS.
    • mounthost=tên- Tên của máy chủ nơi trình nền gắn kết NFS đang chạy - mountd.
    • mountport=n - Cổng được sử dụng bởi daemon gắn kết.
    • cổng=n- cổng được sử dụng để kết nối với máy chủ NFS (mặc định là 2049 nếu daemon rpc.nfsd chưa được đăng ký trên máy chủ RPC). Nếu n=0 (mặc định), thì NFS sẽ truy vấn sơ đồ cổng trên máy chủ để xác định cổng.
    • rsize=n(đọc kích thước khối - đọc kích thước khối) - Số byte được đọc tại một thời điểm từ máy chủ NFS. Tiêu chuẩn - 4096.
    • wsize=n(write block size - write block size) - Số byte được ghi một lần vào máy chủ NFS. Tiêu chuẩn - 4096.
    • tcp hoặc udp- Để mount NFS, sử dụng giao thức TCP hoặc UDP tương ứng.
    • bg- Nếu bạn mất quyền truy cập vào máy chủ, hãy thử lại ở chế độ nền để không chặn quá trình khởi động hệ thống.
    • fg- Nếu bạn mất quyền truy cập vào máy chủ, hãy thử lại ở chế độ ưu tiên. Thông số này có thể chặn quá trình khởi động hệ thống bằng cách lặp lại các lần thử gắn kết. Vì lý do này, tham số fg được sử dụng chủ yếu để gỡ lỗi.

    Các tùy chọn ảnh hưởng đến bộ nhớ đệm thuộc tính trên các mount NFS

    Thuộc tính tệp, được lưu trữ trong ( inode), chẳng hạn như thời gian sửa đổi, kích thước, liên kết cứng, chủ sở hữu, thường thay đổi không thường xuyên đối với các tệp thông thường và thậm chí ít thay đổi hơn đối với các thư mục. Nhiều chương trình, chẳng hạn như ls, truy cập các tệp chỉ đọc và không thay đổi thuộc tính hoặc nội dung tệp nhưng gây lãng phí tài nguyên hệ thống cho các hoạt động mạng tốn kém. Để tránh lãng phí tài nguyên, bạn có thể lưu trữ các thuộc tính này. Kernel sử dụng thời gian sửa đổi của tệp để xác định xem bộ đệm có bị lỗi thời hay không bằng cách so sánh thời gian sửa đổi trong bộ đệm và thời gian sửa đổi của chính tệp đó. Bộ đệm thuộc tính được cập nhật định kỳ theo các tham số đã chỉ định:

    • ac (noac) (bộ đệm thuộc tính- bộ nhớ đệm thuộc tính) - Cho phép bộ nhớ đệm thuộc tính (mặc định). Mặc dù tùy chọn noac làm chậm máy chủ nhưng nó tránh được tình trạng cũ kỹ của thuộc tính khi nhiều máy khách đang tích cực ghi thông tin vào một hệ thống phân cấp chung.
    • acdirmax=n (tập tin thư mục bộ đệm thuộc tính tối đa- bộ nhớ đệm thuộc tính tối đa cho một tệp thư mục) - Số giây tối đa mà NFS đợi trước khi cập nhật thuộc tính thư mục (mặc định là 60 giây)
    • acdirmin=n (tập tin thư mục bộ đệm thuộc tính tối thiểu- bộ nhớ đệm thuộc tính tối thiểu cho một tệp thư mục) - Số giây tối thiểu mà NFS đợi trước khi cập nhật thuộc tính thư mục (mặc định là 30 giây)
    • acregmax=n (bộ đệm thuộc tính tập tin thông thường tối đa- bộ nhớ đệm thuộc tính tối đa cho một tệp thông thường) - Số giây tối đa mà NFS đợi trước khi cập nhật các thuộc tính của một tệp thông thường (mặc định là 60 giây)
    • acregmin=n (bộ đệm thuộc tính tập tin thông thường tối thiểu- bộ nhớ đệm thuộc tính tối thiểu cho một tệp thông thường) - Số giây tối thiểu mà NFS đợi trước khi cập nhật các thuộc tính của tệp thông thường (mặc định là 3 giây)
    • hoạt động=n (hết thời gian chờ bộ đệm thuộc tính- hết thời gian lưu bộ nhớ đệm thuộc tính) - Thay thế các giá trị cho tất cả các tùy chọn trên. Nếu atimeo không được chỉ định thì các giá trị trên sẽ lấy giá trị mặc định.

    Tùy chọn xử lý lỗi NFS

    Các tùy chọn sau đây kiểm soát những gì NFS thực hiện khi không có phản hồi từ máy chủ hoặc khi xảy ra lỗi I/O:

    • fg(bg) (vấn đề xung quanh- vấn đề xung quanh, lý lịch- nền) - Cố gắng gắn NFS bị lỗi ở nền trước/nền sau.
    • cứng (mềm)- hiển thị thông báo "máy chủ không phản hồi" trên bảng điều khiển khi hết thời gian chờ và tiếp tục cố gắng gắn kết. Với tùy chọn được đưa ra mềm mại- trong thời gian chờ, thông báo cho chương trình đã gọi thao tác đó về lỗi I/O. (không nên sử dụng tùy chọn mềm)
    • nointr (intr) (không bị gián đoạn- không làm gián đoạn) - Không cho phép tín hiệu làm gián đoạn hoạt động của tệp trong hệ thống phân cấp thư mục được gắn cứng khi đạt đến thời gian chờ lớn. nội tâm- cho phép gián đoạn.
    • truyền lại=n (giá trị truyền lại- giá trị truyền lại) - Sau n thời gian chờ nhỏ, NFS tạo ra thời gian chờ lớn (mặc định 3). Thời gian chờ lớn sẽ ngừng hoạt động hoặc in thông báo "máy chủ không phản hồi" tới bảng điều khiển, tùy thuộc vào việc tùy chọn cứng/mềm có được chỉ định hay không.
    • thử lại=n (giá trị thử lại- giá trị thử lại) - Số phút dịch vụ NFS sẽ lặp lại các thao tác gắn kết trước khi từ bỏ (mặc định là 10000).
    • thời gian=n (giá trị thời gian chờ- giá trị thời gian chờ) - Số phần mười giây mà dịch vụ NFS đợi trước khi truyền lại trong trường hợp RPC hoặc thời gian chờ nhỏ (mặc định là 7). Giá trị này tăng theo mỗi lần hết thời gian chờ lên tới tối đa 60 giây hoặc cho đến khi xảy ra thời gian chờ lớn. Khi mạng bận, máy chủ chậm hoặc khi yêu cầu đi qua nhiều bộ định tuyến hoặc cổng, việc tăng giá trị này có thể cải thiện hiệu suất.

    Tự động gắn NFS khi khởi động (mô tả hệ thống tệp trong /etc/fstab)

    Bạn có thể chọn thời gian tối ưu cho một giá trị cụ thể của gói được truyền (giá trị rsize/wsize) bằng lệnh ping:

    FILES ~ # ping -s 32768 archive PING archive.DOMAIN.local (10.0.0.6) 32768(32796) byte dữ liệu. 32776 byte từ archive.domain.local (10.0.0.6): icmp_req=1 ttl=64 time=0,931 ms 32776 byte từ Archiv.domain.local (10.0.0.6): icmp_req=2 ttl=64 time=0,958 ms 32776 byte từ archive.domain.local (10.0.0.6): icmp_req=3 ttl=64 time=1,03 ms 32776 byte từ archive.domain.local (10.0.0.6): icmp_req=4 ttl=64 time=1,00 ms 32776 byte từ kho lưu trữ .domain.local (10.0.0.6): icmp_req=5 ttl=64 time=1,08 ms ^C --- archive.DOMAIN.local ping thống kê --- 5 gói được truyền, 5 gói đã nhận, mất gói 0%, thời gian 4006 ms rtt tối thiểu/trung bình/tối đa/mdev = 0,931/1,002/1,083/0,061 mili giây

    Như bạn có thể thấy, khi gửi một gói có kích thước 32768 (32Kb), thời gian di chuyển của nó từ máy khách đến máy chủ và quay lại khoảng 1 mili giây. Nếu thời gian này vượt quá 200 mili giây thì bạn nên nghĩ đến việc tăng giá trị thời gian để nó vượt quá giá trị trao đổi từ ba đến bốn lần. Theo đó, nên thực hiện kiểm tra này khi tải mạng nặng.

    Khởi chạy NFS và thiết lập Tường lửa

    Ghi chú được sao chép từ blog http://bog.pp.ru/work/NFS.html, cảm ơn rất nhiều!!!

    Chạy máy chủ NFS, gắn kết, chặn, hạn ngạch và trạng thái với các cổng "chính xác" (đối với tường lửa)

    • Trước tiên nên ngắt kết nối tất cả tài nguyên trên máy khách
    • dừng và vô hiệu hóa rpcidmapd khi bắt đầu nếu bạn không định sử dụng NFSv4: chkconfig --level 345 rpcidmapd off service rpcidmapd stop
    • nếu cần, hãy cho phép các dịch vụ portmap, nfs và nfslock khởi động: chkconfig --levels 345 portmap/rpcbind on chkconfig --levels 345 nfs on chkconfig --levels 345 nfslock on
    • nếu cần, hãy dừng các dịch vụ nfslock và nfs, khởi động portmap/rpcbind, dỡ bỏ các mô-đun dịch vụ nfslock dừng dịch vụ nfs dừng dịch vụ portmap start # dịch vụ rpcbind bắt đầu umount /proc/fs/nfsd dịch vụ rpcidmapd dừng rmmod nfsd dịch vụ autofs dừng # ở đâu đó sau đó phải được khởi chạy rmmod nfs rmmod nfs_acl rmmod lockd
    • mở cổng trong
      • cho RPC: UDP/111, TCP/111
      • cho NFS: UDP/2049, TCP/2049
      • cho rpc.statd: UDP/4000, TCP/4000
      • cho khóa: UDP/4001, TCP/4001
      • cho mountd: UDP/4002, TCP/4002
      • cho rpc.rquota: UDP/4003, TCP/4003
    • đối với máy chủ rpc.nfsd, hãy thêm dòng RPCNFSDARGS="--port 2049" vào /etc/sysconfig/nfs
    • đối với máy chủ gắn kết, hãy thêm dòng MOUNTD_PORT=4002 vào /etc/sysconfig/nfs
    • để định cấu hình rpc.rquota cho các phiên bản mới, bạn cần thêm dòng RQUOTAD_PORT=4003 vào /etc/sysconfig/nfs
    • để định cấu hình rpc.rquota, cần có các phiên bản cũ hơn (tuy nhiên, bạn phải có gói hạn ngạch 3.08 hoặc mới hơn) thêm vào /etc/services rquotad 4003/tcp rquotad 4003/udp
    • sẽ kiểm tra tính đầy đủ của /etc/exports
    • chạy các dịch vụ rpc.nfsd, mountd và rpc.rquota (rpcsvcgssd và rpc.idmapd được khởi chạy cùng lúc, nếu bạn nhớ xóa chúng) service nfsd start hoặc trong các phiên bản mới service nfs start
    • đối với máy chủ chặn cho các hệ thống mới, hãy thêm dòng LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 vào /etc/sysconfig/nfs
    • đối với máy chủ khóa dành cho các hệ thống cũ hơn, hãy thêm trực tiếp vào /etc/modprobe[.conf]: options lockd nlm_udpport=4001 nlm_tcpport=4001
    • liên kết máy chủ trạng thái rpc.statd với cổng 4000 (đối với các hệ thống cũ hơn, hãy chạy rpc.statd bằng khóa chuyển -p 4000 trong /etc/init.d/nfslock) STATD_PORT=4000
    • bắt đầu dịch vụ lockd và rpc.statd dịch vụ nfslock bắt đầu
    • đảm bảo rằng tất cả các cổng được liên kết bình thường bằng cách sử dụng "lsof -i -n -P" và "netstat -a -n" (một số cổng được sử dụng bởi các mô-đun hạt nhân mà lsof không nhìn thấy)
    • nếu trước khi "xây dựng lại" máy chủ đã được khách hàng sử dụng và chúng không thể được kết nối, thì bạn sẽ phải khởi động lại dịch vụ gắn kết tự động trên máy khách (am-utils, autofs)

    Ví dụ về cấu hình máy chủ và máy khách NFS

    Cấu hình máy chủ

    Nếu bạn muốn đặt thư mục chia sẻ NFS của mình ở chế độ công khai và có thể ghi, bạn có thể sử dụng tùy chọn all_squash kết hợp với các lựa chọn vô cảmanongid. Ví dụ: để đặt quyền cho người dùng "không ai" trong nhóm "không ai", bạn có thể làm như sau:

    ARCHIV ~ # cat /etc/exports # Quyền truy cập đọc và ghi cho máy khách trên 192.168.0.100, với quyền truy cập rw cho người dùng 99 với gid 99 /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99) ) # Quyền truy cập đọc và ghi cho máy khách trên 192.168.0.100, với quyền truy cập rw cho người dùng 99 với gid 99 /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))

    Điều này cũng có nghĩa là nếu bạn muốn cho phép truy cập vào thư mục được chỉ định thì không ai.nobody phải là chủ sở hữu của thư mục dùng chung:

    người đàn ông gắn kết
    xuất khẩu đàn ông
    http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm - Hiệu suất NFS từ IBM.

    Trân trọng, McSim!

    Tôi đang cung cấp hướng dẫn cài đặt và định cấu hình NFS (Hệ thống tệp mạng). NFS là một hệ thống tệp mạng cho phép bạn truy cập các tệp và thư mục trên máy tính (máy chủ) từ xa như thể các tệp và thư mục này là cục bộ. Ưu điểm chính của hệ thống như vậy là các máy trạm riêng lẻ có thể sử dụng ít dung lượng đĩa riêng hơn vì dữ liệu dùng chung được lưu trữ trên một máy riêng biệt (kho dữ liệu) và có sẵn cho các máy khác trên mạng. NFS là một ứng dụng máy khách-máy chủ trong đó vai trò lưu trữ được gán cho máy chủ. Mỗi người tham gia mạng là một máy khách NFS gắn ổ đĩa mạng của máy chủ vào hệ thống tệp của nó.

    Hãy lấy Ubuntu 12.04 làm máy chủ.
    Chúng tôi sẽ sử dụng và thử nghiệm Centos và Winows 7 với tư cách là khách hàng.

    Máy chủ chính: 192.168.2.213 (Ubuntu)

    Khách hàng: 192.168.2.72 (Centos), 192.168.2.180 (Windows)

    Điều chỉnh máy chủ

    Đầu tiên bạn cần cấu hình máy chủ. Vì chúng ta sẽ sử dụng Ubuntu làm máy chủ nên chúng ta cần cài đặt gói thích hợp

    Root@ubuntu:~# apt-get cài đặt nfs-kernel-server

    Sau khi cài đặt các gói cần thiết, chúng tôi đã tạo hai tệp cấu hình. Từ nhật ký cài đặt:

    ... Tạo tập tin cấu hình /etc/idmapd.conf với phiên bản mới Tạo tập tin cấu hình /etc/default/nfs-common với phiên bản mới ...

    Tệp đầu tiên mô tả người dùng (được tạo khi cài đặt gói) và nhóm tham gia ánh xạ (nhận dạng người dùng).

    Root@ubuntu:~# cat /etc/idmapd.conf Độ chi tiết = 0 Pipefs-Directory = /run/rpc_pipefs # đặt tên miền của riêng bạn ở đây, nếu id khác với FQDN trừ tên máy chủ # Tên miền = localdomain Không ai-Người dùng = không ai-Nhóm = không có nhóm

    Như chúng ta biết, trong Linux, mỗi tệp thuộc về một người dùng cụ thể, người này có (UID, GID) của riêng mình, nhưng trên hệ thống Windows, sơ đồ hơi khác một chút. Và liên quan đến điều này, một cơ chế ánh xạ đã được phát minh, giúp chuyển những người dùng khác nhau từ các hệ điều hành khác nhau thành một cơ chế thân thiện với tệp. Hệ thống Linux xem.
    Cần có tệp thứ hai để định cấu hình và xác thực Kerberos cổng không chuẩn, mà con quỷ sẽ tuân theo. Chúng tôi chưa cần anh ấy. Việc thiết lập Kerberos sẽ được thảo luận trong bài viết tiếp theo.

    Root@ubuntu:~# cat /etc/default/nfs-common # Nếu bạn không đặt giá trị cho các tùy chọn NEED_, chúng sẽ được thử # tự động phát hiện; điều này là đủ cho hầu hết mọi người. Các lựa chọn thay thế hợp lệ # cho tùy chọn NEED_ là "có" và "không". # Bạn có muốn khởi động daemon statd không? Nó không cần thiết cho NFSv4. NEED_STATD= # Tùy chọn cho rpc.statd. # rpc.statd có nên lắng nghe trên một cổng cụ thể không? Điều này đặc biệt hữu ích # khi bạn có tường lửa dựa trên cổng. Để sử dụng cổng cố định, hãy đặt biến # this này thành đối số statd như: "--port 4000 --outending-port 4001". # Để biết thêm thông tin, xem rpc.statd(8) hoặc http://wiki.debian.org/SecuringNFS STATDOPTS= # Bạn có muốn khởi động daemon gssd không? Nó cần thiết cho việc gắn Kerberos. NEED_GSSD=

    Bây giờ hãy tiếp tục với việc thiết lập.
    Tất cả các thư mục chia sẻ phải được đăng ký trong tệp /etc/exports. Đầu tiên chúng ta tạo 2 thư mục trong thư mục chính và thả file vào đó. Cây thư mục và tập tin để xuất:

    Root@ubuntu:~# tree /home/alex/ /home/alex/ ├── nfs_dir1 │ ├── file1_dir1 │ ├── file2_dir1 │ └── file3_dir1 ├── nfs_dir2 ├─ ─ file1_dir2 ├── tập tin2_dir2 └─ ─ tập tin3_dir2

    Bây giờ bạn cần chỉ định người dùng và nhóm cho các thư mục này (lấy từ tệp /etc/idmapd.conf).

    Root@ubuntu:~# chown –R không ai:nogroup nfs_dir1/ root@ubuntu:~# chown –R không ai:nogroup nfs_dir2/

    Đầu tiên, hãy xuất thư mục nfs_dir1 cho một IP cụ thể. Chỉnh sửa tệp /etc/exprots.

    Root@ubuntu:~# vim /etc/exports # Dành cho một máy chủ cụ thể (Windows) /home/alex/nfs_dir1 192.168.2.180(rw,sync,all_squash,no_subtree_check,insecure) # Dành cho mọi máy chủ trên mạng con /home/alex /nfs_dir2 192.168 .2.0/24(rw,no_root_squash,sync,no_subtree_check)

    Đây là bộ tùy chọn tối thiểu để bộ lưu trữ hoạt động chính xác với hệ điều hành Windows.

    • /nhà/alex/nfs_dir1– đường dẫn đến thư mục được cấp quyền truy cập;
    • 192.168.2.180 – Địa chỉ IP được cấp quyền truy cập vào thư mục (bạn có thể chỉ định toàn bộ mạng, khi đó mục nhập sẽ có dạng 192.168.2.0/24)
    • (rw,đồng bộ,all_squash,no_subtree_check)- một tập hợp các tùy chọn.

    Tùy chọn phổ biến:

    • rw–đọc/ghi (có thể lấy giá trị ro - chỉ đọc);
    • no_root_squash– theo mặc định, người dùng root trên máy khách sẽ không có quyền truy cập vào thư mục dùng chung của máy chủ. Với tùy chọn này, chúng tôi loại bỏ giới hạn này. Vì lý do an toàn, tốt hơn hết là không nên làm điều này;
    • đồng bộ hóa– chế độ truy cập đồng bộ (có thể lấy giá trị ngược lại - không đồng bộ);
    • không truy cập– từ chối quyền truy cập vào thư mục được chỉ định. Nó có thể hữu ích nếu trước đây bạn đặt quyền truy cập cho tất cả người dùng mạng vào một thư mục nhất định và bây giờ bạn muốn hạn chế quyền truy cập vào thư mục con chỉ cho một số người dùng.
    • all_squash– ngụ ý rằng tất cả các kết nối sẽ được thực hiện từ một người dùng ẩn danh (cần thiết cho máy khách Windows)
    • anonuid= 1000 – liên kết người dùng ẩn danh với người dùng “cục bộ”;
    • anongid= 1000 – liên kết người dùng ẩn danh với nhóm người dùng “cục bộ”.
    • no_subtree_check(cây con_check)–Nếu thư mục con của hệ thống tệp được xuất chứ không phải toàn bộ hệ thống tệp, máy chủ sẽ kiểm tra xem tệp được yêu cầu có nằm trong thư mục con được xuất hay không. Việc tắt xác minh làm giảm tính bảo mật nhưng lại tăng tốc độ truyền dữ liệu.
    • Thông thường, Linux (và các hệ điều hành tương tự Unix khác) dành riêng các cổng TCP và UDP từ 1-1023 (được gọi là cổng bảo mật) để sử dụng cho các quy trình người dùng root. Để đảm bảo rằng root đã khởi tạo kết nối từ xa NFS, máy chủ NFS thường yêu cầu các máy khách từ xa sử dụng các cổng an toàn. Tuy nhiên, quy ước này không được một số hệ điều hành (ví dụ: Windows) tôn trọng. Trong những trường hợp như vậy, tùy chọn không an toàn Cho phép máy khách NFS sử dụng bất kỳ cổng TCP/UDP nào. Điều này thường được yêu cầu khi phục vụ máy khách Windows.

    Tất cả Tùy chọn có sẵn và cú pháp viết máy chủ, nhóm máy chủ, v.v. bạn có thể đọc nó trong hướng dẫn

    Root@ubuntu:~#exportfs –a

    Bây giờ hãy kiểm tra những gì chúng tôi đã xuất.

    Root@ubuntu:~# importfs -v /home/alex/nfs_dir1 192.168.2.180(rw,wdelay,all_squash,no_subtree_check,insecure) /home/alex/nfs_dir2 192.168.2.0/24(rw,wdelay,no_root_squash,no_subtree_check)

    Máy chủ được cấu hình.

    Thiết lập khách hàng

    Thiết lập máy khách Windows

    Nếu không có thông báo lỗi. Bạn có thể bắt đầu gắn kết ở phía máy khách.
    Trước tiên, bạn cần thêm dịch vụ NFS (dịch vụ khách hàng). Để thực hiện việc này, hãy truy cập Bắt đầu -> Bảng điều khiển -> Chương trình và tính năng và nhấp vào mục menu bên trái Bật hoặc tắt Các thành phần Windows . Trong cửa sổ hiện ra, chọn Khách hàng cho NFS và nhấp vào ĐƯỢC RỒI(Hình 1).


    Bức tranh 1

    Tiếp theo bạn cần gắn đĩa. Để thực hiện việc này, bạn có thể sử dụng dòng lệnh hoặc chỉ cần nhấp vào nhấp chuột phải vào My Computer và chọn Map Network Drive. VÀ nhập dòng \\192.168.2.213\home\alex\nfs_dir1. Đây là IP máy chủ và đường dẫn đến thư mục (Hình 2).


    Hình 2

    Nếu mọi thứ đều ổn, chúng ta sẽ thấy đĩa (Hình 3).


    Hình 3

    Điều tương tự có thể được thực hiện bằng cách sử dụng dòng lệnh (Hình 4).


    hinh 4

    Những sai sót có thể xảy ra:

    Bạn sẽ không thể kết nối ổ đĩa mạng NFS với HĐH Windows (Hình 5) nếu
    1. Máy khách NFS chưa được cài đặt
    2. Đã bật tường lửa (chưa được định cấu hình)
    3. Không có quyền truy cập mạng vào máy chủ
    4. Nhập thông số gắn kết không chính xác
    5. Xuất không được định cấu hình (cài đặt không được áp dụng) trên máy chủ.
    6. Thêm tùy chọn không an toàn trong cài đặt xuất


    Hình 5 – Lỗi kết nối ổ đĩa NFS mạng

    Bạn sẽ không thể thêm file vào hệ thống file được mount (Hình 6) nếu:
    1. Quyền của thư mục không được đặt trên máy chủ (nobody:nogroup)
    2. Tùy chọn all_squash không được đặt trong cài đặt xuất
    3. Tùy chọn rw không được đặt trong cài đặt xuất


    Hình 6 - Lỗi khi thêm tệp vào đĩa NFS

    Thiết lập máy khách Centos

    Thiết lập hệ thống Linux khá đơn giản và dễ dàng. Bạn chỉ cần cài đặt gói cần thiết và gắn đĩa. Centos yêu cầu các gói sau

    # yum cài đặt nfs-utils nfs-utils-lib

    # mkdir -p /mnt/nfs # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/nfs # mount /dev/mapper/vg_slave-lv_root on / gõ ext4 (rw) proc on /proc type proc (rw) sysfs trên /sys gõ sysfs (rw) devpts trên /dev/pts gõ devpts (rw,gid=5,mode=620) tmpfs trên /dev/shm gõ tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0" ) /dev/sda1 bật /boot gõ ext4 (rw) không bật /proc/sys/fs/binfmt_misc gõ binfmt_misc (rw) sunrpc bật /var/lib/nfs/rpc_pipefs gõ rpc_pipefs (rw) 192.168.2.213:/home/ alex/nfs_dir1 trên /mnt/nfs gõ nfs (rw,vers=4,addr=192.168.2.213,clientaddr=192.168.2.72)

    TRONG trong trường hợp này chúng tôi có thể thêm bất kỳ tệp và thư mục nào vào thư mục nfs_dir1 được gắn thay mặt cho bất kỳ người dùng nào trên hệ thống ( all_squash). Nhưng nếu chúng ta gắn thư mục thứ hai nfs_dir2 thì CHỈ root mới có thể ghi vào nó, vì có một tùy chọn ở đó no_root_squash. Hãy kiểm tra.

    # mkdir /mnt/dir1 # mkdir /mnt/dir2 # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/dir1 # mount 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 hoặc # mount -t nfs4 -o rw,hard,intr,bg 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 # echo "Xin chào" > /mnt/dir1/file1 # echo "Xin chào" > /mnt/dir2/file1 # su alex $ echo "Xin chào" > /mnt/dir1/file1 $ echo "Xin chào" > /mnt/dir2/file1 bash: /mnt/dir2/file1: Quyền bị từ chối

    Có thể gắn cờ.

    Lá cờ Sự miêu tả
    rw Gắn hệ thống tệp để đọc/ghi (nó phải được máy chủ xuất ở chế độ đọc/ghi)
    quần què Gắn hệ thống tệp chỉ đọc
    bg Nếu bạn không thể mount hệ thống tập tin (máy chủ không phản hồi), bạn nên chuyển thao tác sang chế độ nền và tiếp tục xử lý các yêu cầu gắn kết khác
    cứng Nếu máy chủ ngừng hoạt động, các hoạt động cố gắng truy cập vào nó sẽ bị chặn cho đến khi máy chủ trực tuyến trở lại
    mềm mại Nếu máy chủ ngừng hoạt động, các thao tác cố gắng truy cập vào máy chủ sẽ không thành công kèm theo thông báo lỗi. Cờ này rất hữu ích để thiết lập nhằm ngăn chặn quá trình treo trong trường hợp gắn kết không thành công các hệ thống tệp không quan trọng
    nội tâm Cho phép bạn làm gián đoạn các thao tác bị chặn từ bàn phím (thông báo lỗi sẽ được hiển thị)
    nointr Không cho phép bạn làm gián đoạn các thao tác bị chặn từ bàn phím
    truyền lại=n Chỉ định số lần yêu cầu phải được lặp lại trước khi trả về thông báo lỗi (đối với hệ thống tệp được gắn cờ mềm)
    thời gian=n Đặt khoảng thời gian chờ cho các yêu cầu (tính bằng phần mười giây)
    rsize=n Đặt kích thước bộ đệm đọc thành n byte
    wsize=fl Đặt kích thước bộ đệm ghi thành n byte
    giây=chế độ Đặt chế độ bảo mật
    vers=n Đặt phiên bản giao thức NFS
    nguyên mẫu = giao thức Chọn giao thức vận chuyển; nó phải là giao thức tcp cho NVS phiên bản 4

    Bạn cũng có thể kiểm tra từ bảng điều khiển xem máy chủ có xuất hệ thống tệp chính xác hay không.

    Root@centos ~# showmount -e 192.168.2.213 Xuất danh sách cho 192.168.2.213: /home/alex/nfs_dir2 192.168.2.0/24 /home/alex/nfs_dir1 192.168.2.180

    Thêm thú cưỡi để khởi động

    # cat /etc/fstab ... 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 nfs4 rw,bg,intr,hard,nodev,nosuid 0 0

    Root@centos ~# mount -a -t nfs4

    Những sai lầm có thể xảy ra.

    Root@centos ~# mount -a -t nfs4 mount.nfs4: điểm gắn kết /mnt/dir2 không tồn tại root@centos ~# mount -a -t nfs4 mount.nfs4: chia sẻ từ xa không ở định dạng "host:dir"

    Trong trường hợp đầu tiên, bạn cần tạo một thư mục. Cái thứ hai chứa lỗi cú pháp trong fstab.
    Nếu bạn gặp lỗi khi gắn phân vùng NFS, hãy xem qua danh sách Những sai lầm có thể xảy ra từ phần trước.
    Bạn cũng có thể sử dụng autofs để mount các phân vùng NFS. Điều gì sẽ được thảo luận trong .

    NFS: một hệ thống tệp mạng tiện lợi và đầy hứa hẹn

    Hệ thống tập tin mạng là một bản tóm tắt mạng trên hệ thống tệp thông thường, cho phép máy khách từ xa truy cập nó qua mạng giống như khi truy cập hệ thống tệp cục bộ. Mặc dù NFS không phải là hệ thống tệp mạng đầu tiên nhưng nó đã phát triển để trở thành hệ thống tệp mạng phổ biến và có khả năng nhất trong UNIX® ngày nay. NFS cho phép nhiều người dùng chia sẻ một hệ thống tệp chung và tập trung dữ liệu để giảm thiểu dung lượng ổ đĩa cần thiết để lưu trữ.

    Bài viết này bắt đầu với tổng quan ngắn gọn lịch sử của NFS, sau đó chuyển sang khám phá kiến ​​trúc của NFS và sự phát triển trong tương lai của nó.

    Tóm tắt lịch sử của NFS

    Hệ thống tệp mạng đầu tiên được gọi là FAL (Trình nghe truy cập tệp) và được phát triển vào năm 1976 bởi DEC (Tập đoàn thiết bị kỹ thuật số). Đó là một triển khai giao thức DAP (Giao thức truy cập dữ liệu) và là một phần của bộ giao thức DECnet. Giống như TCP/IP, DEC đã công bố thông số kỹ thuật cho các giao thức mạng của mình, bao gồm cả giao thức DAP.

    NFS là hệ thống tệp mạng hiện đại đầu tiên được xây dựng dựa trên giao thức IP. Nguyên mẫu của nó có thể được coi là một hệ thống tệp thử nghiệm được phát triển tại Sun Microsystems vào đầu những năm 80. Do tính phổ biến của giải pháp này, giao thức NFS đã được giới thiệu dưới dạng đặc tả RFC và sau đó được phát triển thành NFSv2. NFS nhanh chóng trở thành một tiêu chuẩn nhờ khả năng tương tác với các máy khách và máy chủ khác.

    Tiêu chuẩn này sau đó đã được cập nhật lên NFSv3, được xác định trong RFC 1813. Phiên bản giao thức này có khả năng mở rộng cao hơn các phiên bản trước và hỗ trợ kích thước tệp lớn hơn (lớn hơn 2 GB), ghi không đồng bộ và TCP như giao thức vận chuyển. NFSv3 đặt ra định hướng phát triển hệ thống tập tin cho mạng diện rộng (WAN). Năm 2000, RFC 3010 (được sửa đổi thành RFC 3530) đã đưa NFS vào môi trường doanh nghiệp. Sun đã giới thiệu NFSv4 an toàn hơn với sự hỗ trợ có trạng thái (các phiên bản trước của NFS không hỗ trợ lưu trữ có trạng thái, tức là chúng được phân loại là không trạng thái). Hiện tại, phiên bản mới nhất của NFS là phiên bản 4.1, được xác định trong RFC 5661, bổ sung thêm giao thức bằng cách mở rộng pNFS hỗ trợ truy cập song song cho các máy chủ phân tán đã được thêm vào.

    Lịch sử của NFS, bao gồm các RFC cụ thể mô tả các phiên bản của nó, được hiển thị trong Hình 1.


    Điều đáng ngạc nhiên là NFS đã được phát triển gần 30 năm. Nó là một hệ thống tệp mạng di động và ổn định đặc biệt với khả năng mở rộng, hiệu suất và chất lượng dịch vụ vượt trội. Khi tốc độ tăng và độ trễ giảm khi giao tiếp trong mạng, NFS tiếp tục là một cách phổ biến để triển khai hệ thống tệp trong mạng. Ngay cả trong trường hợp mạng cục bộ, ảo hóa khuyến khích lưu trữ dữ liệu trên mạng để cung cấp thêm tính di động cho các máy ảo. NFS cũng hỗ trợ các mô hình môi trường điện toán mới nhất nhằm tối ưu hóa cơ sở hạ tầng ảo.

    Kiến trúc NFS

    NFS sử dụng mô hình kiến ​​trúc client-server tiêu chuẩn (như trong Hình 2). Máy chủ chịu trách nhiệm triển khai hệ thống tệp chia sẻ và lưu trữ mà máy khách kết nối. Máy khách triển khai giao diện người dùng cho hệ thống tệp dùng chung được gắn trong không gian tệp cục bộ của máy khách.

    Hình 2. Triển khai mô hình client-server trong kiến ​​trúc NFS

    Trong hệ điều hành Linux®, bộ chuyển đổi hệ thống tệp ảo (VFS) cung cấp phương tiện để hỗ trợ đồng thời nhiều hệ thống tệp (ví dụ: hệ thống tệp) trên một máy chủ. Hệ thống ISO 9660 trên CD-ROM và hệ thống tệp ext3fs trên ổ cứng cục bộ). Công tắc ảo xác định ổ đĩa nào yêu cầu được thực hiện và do đó hệ thống tệp nào sẽ được sử dụng để xử lý yêu cầu. Do đó, NFS có khả năng tương thích tương tự như các hệ thống tệp khác được sử dụng trong Linux. Sự khác biệt duy nhất với NFS là thay vì được xử lý cục bộ trên máy chủ, các yêu cầu I/O có thể được gửi tới mạng để thực thi.

    VFS xác định rằng yêu cầu nhận được là NFS và chuyển nó đến trình xử lý NFS nằm trong kernel. Trình xử lý NFS xử lý yêu cầu I/O và chuyển nó thành thủ tục NFS (MỞ, TRUY CẬP, TẠO, ĐỌC, ĐÓNG, XÓA, v.v.). Các quy trình này, được mô tả trong đặc tả RFC riêng, xác định hoạt động của giao thức NFS. Quy trình cần thiết được chọn tùy theo yêu cầu và được thực thi bằng công nghệ RPC (gọi thủ tục từ xa). Đúng như tên gọi của nó, RPC cho phép thực hiện các cuộc gọi thủ tục giữa các hệ thống khác nhau. Dịch vụ RPC nối một yêu cầu NFS với các đối số của nó và gửi kết quả đến máy chủ từ xa thích hợp, sau đó giám sát việc nhận và xử lý phản hồi để trả lại cho người yêu cầu.

    RPC cũng bao gồm một lớp XDR quan trọng ( biểu diễn dữ liệu ngoài- biểu diễn dữ liệu độc lập), đảm bảo rằng tất cả người dùng NFS sử dụng cùng một định dạng cho cùng loại dữ liệu. Khi một nền tảng gửi yêu cầu, loại dữ liệu mà nó sử dụng có thể khác với loại dữ liệu được sử dụng trên máy chủ xử lý yêu cầu. Công nghệ XDR đảm nhiệm công việc chuyển đổi các loại thành dạng biểu diễn tiêu chuẩn (XDR) để các nền tảng sử dụng các kiến ​​trúc khác nhau có thể tương tác và chia sẻ các hệ thống tệp. XDR xác định định dạng bit cho các loại như float và thứ tự byte cho các loại như mảng có độ dài không đổi và thay đổi. Mặc dù XDR chủ yếu được biết đến nhờ sử dụng trong NFS, nhưng thông số kỹ thuật này có thể hữu ích trong mọi trường hợp bạn phải làm việc trong cùng một môi trường với các kiến ​​trúc khác nhau.

    Sau khi XDR dịch dữ liệu thành biểu diễn tiêu chuẩn, yêu cầu sẽ được gửi qua mạng bằng giao thức truyền tải cụ thể. Việc triển khai NFS ban đầu sử dụng UDP, nhưng ngày nay TCP được sử dụng để có độ tin cậy cao hơn.

    Một thuật toán tương tự được sử dụng ở phía máy chủ NFS. Yêu cầu di chuyển lên ngăn xếp mạng thông qua lớp RPC/XDR (để chuyển đổi các loại dữ liệu theo kiến ​​trúc máy chủ) và đến máy chủ NFS, chịu trách nhiệm xử lý yêu cầu. Ở đó, yêu cầu được chuyển đến daemon NFS để xác định hệ thống tệp đích mà nó được xử lý, sau đó lại chuyển đến VFS để truy cập hệ thống tệp đó trên đĩa cục bộ. Sơ đồ hoàn chỉnh của quá trình này được hiển thị trong Hình 3. Trong trường hợp này, hệ thống tệp cục bộ của máy chủ là hệ thống tệp Linux tiêu chuẩn, ví dụ: ext4fs. Về bản chất, NFS không phải là một hệ thống tệp theo nghĩa truyền thống của thuật ngữ này mà là một giao thức để truy cập từ xa vào các hệ thống tệp.


    Đối với các mạng có độ trễ dài, NFSv4 cung cấp quy trình kết hợp đặc biệt ( thủ tục ghép). Quy trình này cho phép bạn thực hiện nhiều cuộc gọi RPC trong một yêu cầu duy nhất để giảm thiểu chi phí gửi yêu cầu qua mạng. Quy trình này cũng thực hiện cơ chế chức năng gọi lại để nhận phản hồi.

    Giao thức NFS

    Khi máy khách bắt đầu sử dụng NFS, hành động đầu tiên là thực hiện thao tác gắn kết, tức là gắn hệ thống tệp từ xa vào không gian hệ thống tệp cục bộ. Quá trình này bắt đầu bằng lệnh gọi thủ tục mount (một trong các thủ tục của hệ thống Chức năng Linux), được chuyển hướng qua VFS tới thành phần NFS. Sau đó, lệnh gọi RPC tới hàm get_port trên máy chủ từ xa sẽ xác định số cổng sẽ được sử dụng để gắn kết và máy khách sẽ gửi yêu cầu gắn kết qua RPC. Yêu cầu này ở phía máy chủ được xử lý bởi một daemon rpc.mountd đặc biệt, chịu trách nhiệm về giao thức gắn kết ( giao thức gắn kết). Trình nền kiểm tra xem hệ thống tệp được khách hàng yêu cầu có nằm trong danh sách các hệ thống có sẵn trên máy chủ này. Nếu hệ thống được yêu cầu tồn tại và máy khách có quyền truy cập vào nó, phản hồi RPC gắn kết sẽ chỉ định một bộ mô tả hệ thống tệp. Máy khách lưu giữ thông tin về các điểm gắn kết cục bộ và từ xa và có thể thực hiện các yêu cầu I/O. Giao thức gắn kết không an toàn từ quan điểm bảo mật, do đó, NFSv4 sử dụng các lệnh gọi RPC nội bộ để thay thế, điều này cũng có thể quản lý các điểm gắn kết.

    Để đọc một tập tin, trước tiên bạn phải mở nó. Không có thủ tục MỞ trong RPC; thay vào đó, máy khách chỉ cần kiểm tra xem tệp và thư mục được chỉ định có tồn tại trên hệ thống tệp được gắn hay không. Máy khách bắt đầu bằng cách thực hiện yêu cầu GETATTR RPC tới thư mục, yêu cầu này trả về các thuộc tính của thư mục hoặc chỉ báo rằng thư mục không tồn tại. Tiếp theo, để kiểm tra sự hiện diện của tệp, máy khách đưa ra yêu cầu LOOKUP RPC. Nếu tệp tồn tại, yêu cầu GETATTR RPC sẽ được thực hiện trên đó để tìm ra các thuộc tính của tệp. Bằng cách sử dụng thông tin thu được từ các lệnh gọi LOOKUP và GETATTR thành công, máy khách sẽ tạo một trình xử lý tệp được cung cấp cho người dùng cho các yêu cầu trong tương lai.

    Khi tệp đã được xác định trên hệ thống tệp từ xa, máy khách có thể đưa ra yêu cầu RPC READ. Yêu cầu này bao gồm một bộ mô tả tệp, trạng thái, phần bù và số byte cần đọc. Khách hàng sử dụng trạng thái ( tình trạng) để xác định xem thao tác có thể được thực hiện vào lúc này hay không, tức là. Tập tin có bị khóa không? Bù lại ( bù lại) cho biết vị trí bắt đầu đọc và bộ đếm byte ( đếm) xác định số byte cần đọc. Do lệnh gọi RPC READ, máy chủ không phải lúc nào cũng trả về số byte như được yêu cầu, nhưng cùng với dữ liệu trả về, nó luôn báo cáo số byte đã được gửi đến máy khách.

    Đổi mới trong NFS

    Hai phiên bản mới nhất của NFS được quan tâm nhiều nhất - 4 và 4.1, là ví dụ mà bạn có thể nghiên cứu các khía cạnh quan trọng nhất trong quá trình phát triển của công nghệ NFS.

    Trước khi có NFSv4 để thực hiện các tác vụ quản lý tệp như gắn, khóa, v.v. có những giao thức bổ sung đặc biệt. Trong NFSv4, quy trình quản lý tệp được đơn giản hóa thành một giao thức duy nhất; Ngoài ra, bắt đầu từ phiên bản này, UDP không còn được sử dụng làm giao thức truyền tải nữa. NFSv4 bao gồm hỗ trợ ngữ nghĩa truy cập tệp UNIX và Windows®, cho phép NFS tích hợp một cách tự nhiên vào các hệ điều hành khác.

    NFSv4.1 đã giới thiệu khái niệm về NFS song song(NFS song song - pNFS). Để cung cấp mức độ mở rộng cao hơn, NFSv4.1 triển khai kiến ​​trúc trong đó dữ liệu và siêu dữ liệu ( đánh dấu) được phân phối trên các thiết bị theo cách tương tự như cách nó được thực hiện trong các hệ thống tệp được phân cụm. Như được hiển thị trong , pNFS chia hệ sinh thái thành ba thành phần: máy khách, máy chủ và bộ lưu trữ. Trong trường hợp này, hai kênh xuất hiện: một kênh để truyền dữ liệu và kênh kia để truyền lệnh điều khiển. pNFS tách dữ liệu khỏi siêu dữ liệu mô tả nó, cung cấp kiến ​​trúc hai kênh. Khi khách hàng muốn truy cập một tệp, máy chủ sẽ gửi siêu dữ liệu đó cùng với "đánh dấu". Siêu dữ liệu chứa thông tin về vị trí của tệp trên thiết bị lưu trữ. Khi khách hàng có thông tin này, nó có thể truy cập trực tiếp vào bộ lưu trữ mà không cần phải tương tác với máy chủ, cải thiện khả năng mở rộng và hiệu suất. Khi máy khách làm việc xong với tệp, nó sẽ xác nhận những thay đổi được thực hiện đối với tệp và "đánh dấu" của nó. Nếu cần, máy chủ có thể yêu cầu siêu dữ liệu có đánh dấu từ máy khách.

    Với sự ra đời của pNFS, một số hoạt động mới đã được thêm vào giao thức NFS để hỗ trợ cơ chế như vậy. Phương thức LayoutGet được sử dụng để truy xuất siêu dữ liệu từ máy chủ, phương thức LayoutReturn "giải phóng" siêu dữ liệu được máy khách "bắt" và phương thức LayoutCommit tải "bố cục" nhận được từ máy khách vào bộ lưu trữ để nó có sẵn cho những người dùng khác. Máy chủ có thể gọi lại siêu dữ liệu từ máy khách bằng phương thức LayoutRecall. Siêu dữ liệu "được gắn thẻ" được phân phối trên nhiều thiết bị lưu trữ để cung cấp quyền truy cập song song và hiệu suất cao.


    Dữ liệu và siêu dữ liệu được lưu trữ trên các thiết bị lưu trữ. Khách hàng có thể thực hiện các yêu cầu I/O trực tiếp dựa trên đánh dấu nhận được và máy chủ NFSv4.1 lưu trữ và quản lý siêu dữ liệu. Bản thân chức năng này không phải là mới, nhưng pNFS đã bổ sung hỗ trợ cho nhiều phương pháp truy cập thiết bị lưu trữ khác nhau. Ngày nay, pNFS hỗ trợ sử dụng các giao thức khối (Kênh sợi quang), giao thức đối tượng và chính NFS (thậm chí không ở dạng pNFS).

    Sự phát triển của NFS vẫn tiếp tục và vào tháng 9 năm 2010, các yêu cầu đối với NFSv4.2 đã được công bố. Một số đổi mới có liên quan đến sự chuyển dịch liên tục của công nghệ lưu trữ dữ liệu sang ảo hóa. Ví dụ, trong môi trường ảo Với một trình ảo hóa, rất có thể xảy ra hiện tượng trùng lặp dữ liệu (nhiều hệ điều hành đọc/ghi và lưu vào bộ đệm cùng một dữ liệu). Vì điều này, điều mong muốn là toàn bộ hệ thống lưu trữ phải hiểu được nơi xảy ra sự trùng lặp. Cách tiếp cận này sẽ giúp tiết kiệm dung lượng bộ đệm của máy khách và dung lượng lưu trữ tổng thể. NFSv4.2 đề xuất sử dụng "bản đồ khối của các khối chia sẻ" để giải quyết vấn đề này. Khi các hệ thống lưu trữ hiện đại ngày càng được trang bị sức mạnh tính toán nội bộ của riêng chúng, việc sao chép phía máy chủ đang được giới thiệu để giảm bớt gánh nặng sao chép dữ liệu qua mạng nội bộ khi việc này có thể được thực hiện một cách hiệu quả trên chính thiết bị lưu trữ. Những cải tiến khác bao gồm bộ nhớ đệm tệp phụ cho bộ nhớ flash và các đề xuất điều chỉnh I/O phía máy khách (chẳng hạn như sử dụng bản đồ).

    Các lựa chọn thay thế NFS

    Mặc dù NFS là hệ thống tệp mạng phổ biến nhất trong UNIX và Linux, nhưng vẫn có các hệ thống tệp mạng khác. TRÊN Nền tảng Windows® SMB được sử dụng phổ biến nhất, còn được gọi là CIFS; tuy nhiên, HĐH Windows cũng hỗ trợ NFS và Linux hỗ trợ SMB.

    Một trong những hệ thống tệp phân tán mới nhất được hỗ trợ trên Linux, Ceph, được thiết kế ngay từ đầu để trở thành một hệ thống tệp tuân thủ POSIX có khả năng chịu lỗi. Thông tin thêm về Ceph có thể được tìm thấy trong phần này.

    Cũng phải kể đến các hệ thống tệp OpenAFS (Phiên bản mã nguồn mở của hệ thống tệp phân tán Andrew, được phát triển tại Đại học Carnegie Mellon và Tập đoàn IBM), GlusterFS (hệ thống tệp phân tán). mục đích chungđể tổ chức lưu trữ dữ liệu có thể mở rộng) và Lustre (một hệ thống tệp mạng có khả năng song song lớn cho các giải pháp cụm). Tất cả các hệ thống nguồn mở này có thể được sử dụng để xây dựng kho lưu trữ phân tán.

    Phần kết luận

    Sự phát triển của hệ thống tập tin NFS vẫn tiếp tục. Tương tự như hệ điều hành Linux, phù hợp để hỗ trợ cả giải pháp cấp thấp, nhúng và cao cấp, NFS cung cấp kiến ​​trúc cho các giải pháp lưu trữ có thể mở rộng phù hợp cho cả hai. người dùng cá nhân, và các tổ chức. Khi bạn nhìn vào hành trình mà NFS đã thực hiện và triển vọng phát triển trong tương lai của nó, bạn có thể thấy rõ rằng hệ thống tệp này sẽ tiếp tục thay đổi cách chúng ta nghĩ về cách triển khai và sử dụng các công nghệ lưu trữ tệp.

    NFS, hay Hệ thống tệp mạng, là một giao thức hệ thống tệp mạng phổ biến cho phép người dùng gắn các thư mục mạng từ xa trên máy của họ và truyền tệp giữa các máy chủ. Bạn có thể sử dụng dung lượng ổ đĩa trên một máy khác cho các tệp của mình và làm việc với các tệp nằm trên các máy chủ khác. Về cơ bản, nó là một sự thay thế cho cái chung Truy cập Windowsđối với Linux, không giống như Samba, nó được triển khai ở cấp kernel và hoạt động ổn định hơn.

    Bài viết này sẽ đề cập đến việc cài đặt nfs trên Ubuntu 16.04. Chúng tôi sẽ phân tích việc cài đặt tất cả thành phần cần thiết, thiết lập thư mục dùng chung cũng như kết nối các thư mục mạng.

    Như đã đề cập, NFS là một hệ thống tệp mạng. Để hoạt động, bạn cần một máy chủ sẽ lưu trữ thư mục dùng chung và các máy khách có thể gắn thư mục mạng dưới dạng đĩa thông thường trong hệ thống. Không giống như các giao thức khác, NFS cung cấp quyền truy cập minh bạch vào tập tin đã xóa. Các chương trình sẽ xem các tập tin như trong một hệ thống tập tin thông thường và làm việc với chúng như với Tập tin có sẵn, nfs chỉ trả về phần được yêu cầu của tệp, thay vì toàn bộ tệp, vì vậy hệ thống tệp này sẽ hoạt động tốt trên các hệ thống có Internet nhanh hoặc trên mạng cục bộ.

    Cài đặt các thành phần NFS

    Trước khi có thể làm việc với NFS, chúng ta sẽ phải cài đặt một số chương trình. Trên máy sẽ là máy chủ, bạn cần cài đặt gói nfs-kernel-server, gói này sẽ được sử dụng để mở các chia sẻ nfs trong Ubuntu 16.04. Để làm điều này, hãy chạy:

    sudo apt cài đặt nfs-kernel-server

    Bây giờ hãy kiểm tra xem máy chủ đã được cài đặt đúng chưa. Dịch vụ NFS lắng nghe các kết nối cho cả TCP và UDP trên cổng 2049. Bạn có thể xem liệu các cổng này có thực sự được sử dụng hay không bằng lệnh:

    rpcinfo -p | grep nfs

    Điều quan trọng nữa là kiểm tra xem NFS có được hỗ trợ ở cấp kernel hay không:

    cat /proc/filesystems | grep nfs

    Chúng tôi thấy rằng nó hoạt động, nhưng nếu không, bạn cần tải mô-đun hạt nhân nfs theo cách thủ công:

    Hãy thêm nfs vào quá trình khởi động:

    sudo systemctl kích hoạt nfs

    Bạn cần cài đặt gói nfs-common trên máy khách để có thể làm việc với hệ thống tệp này. Bạn không cần phải cài đặt các thành phần máy chủ, chỉ cần gói này là đủ:

    sudo apt cài đặt nfs-common

    Thiết lập máy chủ NFS trên Ubuntu

    Chúng ta có thể mở quyền truy cập NFS vào bất kỳ thư mục nào, nhưng hãy tạo một thư mục mới cho mục đích này:

    thư mục khách hàng_address (tùy chọn)

    Địa chỉ thư mục là thư mục cần được truy cập qua mạng. Máy khách - Địa chỉ IP hoặc địa chỉ mạng mà thư mục này có thể được truy cập. Nhưng với các tùy chọn, nó phức tạp hơn một chút. Hãy xem xét một số trong số họ:

    • rw- cho phép đọc và ghi trong thư mục này
    • ro- cho phép chỉ đọc
    • đồng bộ hóa- chỉ đáp ứng các yêu cầu tiếp theo khi dữ liệu được lưu vào đĩa (mặc định)
    • không đồng bộ- không chặn kết nối trong khi dữ liệu đang được ghi vào đĩa
    • chắc chắn- chỉ sử dụng các cổng dưới 1024 để kết nối
    • không an toàn- sử dụng bất kỳ cổng nào
    • không ẩn- không ẩn thư mục con khi mở quyền truy cập vào một số thư mục
    • root_squash- thay thế các yêu cầu từ root bằng những yêu cầu ẩn danh
    • all_squash- biến tất cả các yêu cầu ẩn danh
    • vô cảmanongid- chỉ định uid và gid cho người dùng ẩn danh.

    Ví dụ: đối với thư mục của chúng tôi, dòng này có thể trông như thế này:

    /var/nfs 127.0.0.1(rw,sync,no_subtree_check)

    Khi mọi thứ đã được định cấu hình, tất cả những gì còn lại là cập nhật bảng xuất NFS:

    xuất sudo -a

    Vậy là xong, việc mở nfs share trong ubuntu 16.04 đã hoàn tất. Bây giờ hãy thử cấu hình máy khách và thử gắn kết nó.

    Kết nối NFS

    Chúng tôi sẽ không đề cập chi tiết đến vấn đề này trong bài viết hôm nay. Đây là một chủ đề khá lớn và xứng đáng có bài viết riêng. Nhưng tôi vẫn sẽ nói vài lời.

    Để kết nối một thư mục mạng, bạn không cần bất kỳ khách hàng nfs Ubuntu, chỉ cần sử dụng lệnh mount:

    sudo mount 127.0.0.1:/var/nfs/ /mnt/

    Bây giờ bạn có thể thử tạo một tệp trong thư mục được kết nối:

    Chúng ta cũng sẽ xem xét các hệ thống tệp được gắn bằng df:

    127.0.0.1:/var/nfs 30G 6.7G 22G 24% /mnt

    Để vô hiệu hóa hệ thống tập tin này, chỉ cần sử dụng umount tiêu chuẩn:

    sudo umount /mnt/

    kết luận

    Bài viết này thảo luận về việc thiết lập nfs Ubuntu 16.04, như bạn có thể thấy, mọi thứ được thực hiện rất đơn giản và minh bạch. Việc kết nối chia sẻ NFS được thực hiện chỉ bằng vài cú nhấp chuột bằng các lệnh tiêu chuẩn và việc mở chia sẻ nfs trong Ubuntu 16.04 không phức tạp hơn nhiều so với việc kết nối. Nếu bạn có bất kỳ câu hỏi nào, hãy viết trong phần bình luận!

    Bài viết liên quan: