1、NFS簡介bash
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件同樣。服務器
NFS最先由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新爲4.1版本NFS數據傳輸基於RPC(Remote Procedure Call)協議。網絡
NFS 的基本原則是「允許不一樣的客戶端及服務端經過一組RPC分享相同的文件系統」,它是獨立於操做系統,允許不一樣硬件及操做系統的系統共同進行文件的分享。app
NFS在文件傳送或信息傳送過程當中依賴於RPC協議。RPC (遠程過程調用) 是能使客戶端執行其餘系統中程序的一種機制。NFS自己是沒有提供信息傳輸的協議和功能的,但NFS卻能讓咱們經過網絡進行資料的分享,這是由於NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。能夠說NFS自己就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。因此只要用到NFS的地方都要啓動RPC服務,不管是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能經過RPC來實現PROGRAM PORT的對應。tcp
簡單來講:NFS能夠透過網絡,讓不一樣的主機、不一樣的操做系統實現共享存儲。能夠這麼理解RPC和NFS的關係:NFS是一個文件系統,而RPC是負責負責信息的傳輸。spa
2、NFS搭建操作系統
2.1 NFS服務端所需的軟件列表
nfs-utils: 這個是NFS服務主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 這個是CentOS6.X的RPC主程序(CentOS5.X的爲portmap)命令行
2.2 檢查軟件是否安裝rest
cat /etc/redhat-release #查看系統版本 uname -r #查看系統內核版本 uname -m #查看系統是否64位
rpm -qa nfs-utils rpcbind #檢查安裝的軟件包
2.3 若是 nfs-utils 和 rpcbind 沒有安裝,可使用 yum 命令進行安裝code
yum install -y nfs-utils rpcbind
2.4 啓動NFS服務端相關服務 (CentOS7.4)
/bin/systemctl start rpcbind.service
/bin/systemctl start nfs.service
若是是CentOS 6.x,執行如下腳本
service rpcbind start
service nfs start
3、 配置NFS服務端
3.1 建立共享目錄,例如是 /data/nfs_share
mkdir -p /data/nfs_share
3.2 給目錄添加權限
chown -R nfsnobody /data/nfs_share
3.2 編輯配置文件
vi /etc/exports
3.3 添加配置 (例如共享網段爲 192.168.1.*)
/data/nfs_share 192.168.1.0/24(rw,sync)
3.4 使配置生效
exportfs -r
3.5 重啓服務
/bin/systemctl restart rpcbind.service
/bin/systemctl restart nfs.service
若是是CentOS 6.x
service rpcbind start
service nfs start
3.6 查詢NFS服務器
showmount -e localhost
若是正確,會打印 /data/nfs_share 192.168.1.0/24
4、 配置NFS客戶端
4.1 客戶端也須要安裝rpcbind和nfs-utils軟件,而且設置開機自啓動。(只須要啓動rpcbind便可)
systemctl enable rpcbind.service
( CentOS 6.x 的命令是 chkconfig rpcbind on )
4.2 查看能夠掛載目錄 (這裏假設NFS服務器IP是 192.168.1.1)
showmount -e 192.168.1.1
會打印出能夠掛載的目錄信息
4.3 建立掛載目錄(目錄路徑根據實際狀況建立)
mkdir /mnt/nfs_share
4.3 掛載目錄
mount -t nfs 192.168.1.1:/data/nfs_share/ /mnt/nfs_share -o proto=tcp -o nolock
4.4 若是須要開機自動掛載目錄,須要將掛載命令放在rc.local裏面
5、 配置Windows NFS客戶端
若是客戶端是Windows,咱們須要在程序和功能裏面啓用 NFS客戶端。
控制面板 -> 程序 -> 程序和功能 --> 勾選 NFS服務,NFS客戶端,肯定。
以後能夠在命令行使用mount命令掛載遠程目錄 (好比掛載到 Z 盤)
mount ip:/192.168.1.1/ /data/nfs_share/ z:
另外也能夠在個人電腦(計算機) 中,建立映射網絡驅動器,來掛載遠程目錄。
若是Windows版本不支持NFS服務,那麼須要安裝 Windows Services for UNIX ,而後在Korn Shell (開始菜單 -> 程序 -> Windows Services for UNIX -> Korn Shell) 中執行 mount命令。
6、 配置防火牆
若是網絡環境中須要開啓防火牆,那麼須要在防火牆上打開以下端口:
1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "隨機(32768-65535)" udp/tcp
防火牆經常使用命令
#啓動防火牆 systemctl start firewalld.service #關閉防火牆 systemctl stop firewalld.service #從新載入 systemctl restart firewalld.service #查看配置結果 firewall-cmd --list-all
#添加規則(指定端口,--permanent永久生效,沒有此參數重啓後失效)
firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加規則(指定IP與端口) firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="8080" accept" #刪除規則 firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="8080" accept" #添加規則(端口段) firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="8000-9000" accept"