NFS服務配置.


 NFS:network file system

一、NFS服務介紹

NFS 是 Network FileSystem 的縮寫,顧名思義就是網絡文件存儲系統,它最早是由 Sun 公司發展出來的,也是 FreeBSD 支持的文件系統中的一個,它允許網絡中的計算機之間通過 TCP/IP 網絡共享資源。通過 NFS,我們本地 NFS 的客戶端應用可以透明地讀寫位於服務端 NFS 服務器上的文件,就像訪問本地文件一樣方便。簡單的理解,NFS 就是可以透過網絡,讓不同的主機、不同的操作系統可以共享存儲的服務。

NFS 在文件傳送或信息傳送過程中依賴於 RPC(Remote Procedure Call) 協議,即遠程過程調用, NFS 的各項功能都必須要向 RPC 來注冊,如此一來 RPC 才能了解 NFS 這個服務的各項功能 Port、PID、NFS 在服務器所監聽的 IP 等,而客戶端才能夠透過 RPC 的詢問找到正確對應的端口,所以,NFS 必須要有 RPC 存在時才能成功的提供服務,簡單的理解二者關系:NFS是 一個文件存儲系統,而 RPC 是負責信息的傳輸。


協議:rpc:遠程過程調用

啟用的端口

[root@localhost ~]# netstat -tpln | grep 111
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      54127/rpcbind       
tcp6       0      0 :::111                  :::*                    LISTEN      54127/rpcbind

配置文件:

/etc/exports (空文件,全部手寫)

配置文件分成左右2部分,左邊是共享目錄名(共享資源),右邊為選項(選項很多) 

[root@localhost ~]# cat /etc/exports
/nfs 192.168.22.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

 

二、安裝服務

#服務端

yum install -y nfs-utils rpcbind

#客服端

yum install -y nfs-utils

 

三、配置NFS

我們在服務端創建共享目錄,作為客服端掛載的遠程入口,並設置權限

[root@localhost ~]# mkdir -p /nfs
[root@localhost ~]# chmod 777 /nfs

修改配置文件

[root@localhost ~]# vim /etc/exports
/nfs 192.168.22.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

四、啟動服務

先啟動RPC服務

[root@localhost ~]# systemctl start rpcbind

查看 NFS 服務項 rpc 服務器注冊的端口列表

[root@localhost ~]# rpcinfo -p localhost 
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

 

后啟動NFS服務

[root@localhost ~]# systemctl start nfs

啟動 NFS 服務后 rpc 服務已經啟用了對 NFS 的端口映射列表

[root@localhost ~]# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  33745  status
    100024    1   tcp  36980  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  38960  nlockmgr
    100021    3   udp  38960  nlockmgr
    100021    4   udp  38960  nlockmgr
    100021    1   tcp  38362  nlockmgr
    100021    3   tcp  38362  nlockmgr
    100021    4   tcp  38362  nlockmgr

看下是否正確加載了設置的 /etc/exports 配置。

[root@localhost ~]# showmount -e localhost
Export list for localhost:
/nfs 192.168.22.0/24
[root@localhost ~]# exportfs -v
/nfs 192.168.22.0/24(rw,wdelay,insecure,no_root_squash,no_subtree_check,sec=sys,rw,insecure,no_root_squash,no_all_squash)

 

客戶端NFS測試

[root@localhost ~]# showmount -e 192.168.22.22
Export list for 192.168.22.22:
/nfs 192.168.22.0/24

 五、防火牆設置(三選一)firewall-cmd --reload

1、關閉防火牆

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

2、配置端口防火牆

111/tcp 111/udp 926/tcp 926/udp 2049/tcp 2049/udp 20048/tcp 20048/udp

[root@localhost ~]# firewall-cmd --add-port=111/tcp --permanent
[root@localhost ~]# firewall-cmd --add-port=111/udp --permanent [root@localhost ~]# firewall-cmd --add-port=926/tcp --permanent [root@localhost ~]# firewall-cmd --add-port=926/udp --permanent [root@localhost ~]# firewall-cmd --add-port=2049/tcp --permanent [root@localhost ~]# firewall-cmd --add-port=2049/udp --permanent [root@localhost ~]# firewall-cmd --add-port=20048/tcp --permanent [root@localhost ~]# firewall-cmd --add-port=20048/udp --permanent

3、配置服務防火牆

firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --add-service=rpc-bind --permanent

 

六、掛載

linux:

[root@localhost ~]# mount -t nfs 192.168.22.22:/nfs /mnt/nfs/
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
192.168.22.22:/nfs        25G  4.1G   21G  17% /mnt/nfs

 

Windows:

C:\Users\Administrator>mount 192.168.22.22:/nfs H:
H: 現已成功連接到 192.168.22.22:/nfs

命令已成功完成。

七、附錄

參數 說明
ro 只讀訪問
rw 讀寫訪問
sync 所有數據在請求時寫入共享(同步)
async nfs 在寫入數據前可以響應請求
secure nfs 通過 1024 以下的安全 TCP/IP 端口發送
insecure nfs 通過 1024 以上的端口發送
wdelay 如果多個用戶要寫入 nfs 目錄,則歸組寫入(默認)
no_wdelay 如果多個用戶要寫入 nfs 目錄,則立即寫入,當使用 async 時,無需此設置
hide 在 nfs 共享目錄中不共享其子目錄
no_hide 共享 nfs 目錄的子目錄
subtree_check 如果共享 /usr/bin 之類的子目錄時,強制 nfs 檢查父目錄的權限(默認)
no_subtree_check 不檢查父目錄權限
all_squash 共享文件的 UID 和 GID 映射匿名用戶 anonymous,適合公用目錄
no_all_squash 保留共享文件的 UID 和 GID(默認)
root_squash root 用戶的所有請求映射成如 anonymous 用戶一樣的權限(默認)
no_root_squash root 用戶具有根目錄的完全管理訪問權限
anonuid=xxx 指定 nfs 服務器 /etc/passwd 文件中匿名用戶的 UID
anongid=xxx 指定 nfs 服務器 /etc/passwd 文件中匿名用戶的 GID


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM