網絡文件系統(Network File System,NFS),一種使用於分散式文件系統的協議,由升陽公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在Unix系統間實現磁盤文件共享的一種方法。
NFS的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。
演示環境介紹
系統:CentOS 6.5
nfs服務器ip:192.168.1.65
nfs客戶端ip:192.168.1.66
開始安裝配置
- #安裝
- yum install nfs-utils rpcbind
安裝完以后先不急着啟動,先來了解一下nfs服務運行在哪些端口上,它默認需要使用5個端口,其中有4個端口是動態的,所以如果服務器和客戶端之間有iptables,就要先把這4個動態端口設置成靜態的,然后加入進防火牆規則里,需要修改的端口有如下四個(端口可以根據需求改,不一定就和我這一樣):
- #編輯nfs配置文件
- vi /etc/sysconfig/nfs
- LOCKD_TCPPORT=30001 #TCP鎖使用端口
- LOCKD_UDPPORT=30002 #UDP鎖使用端口
- MOUNTD_PORT=30003 #掛載使用端口
- STATD_PORT=30004 #狀態使用端口
改好以后保存退出,除了以上四個端口要通過iptables,還有nfs協議端口2049以及rpc的111端口,這樣才能順利的使用nfs服務。
- #往iptables里寫入規則,讓需要的端口通過
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 30001 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 30002 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 30003 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 30004 -j ACCEPT
- #我在/mnt下新建一個目錄,並touch一個測試文件test
- mkdir /mnt/aiplaypc1
- touch /mnt/aiplaypc1/tset
- #編輯配置文件,默認是空的
- vi /etc/exports
- #把/mnt/aiplaypc1目錄共享給192.168.1.0的所有主機,可以寫主機名、域名等,使用默認參數(ro,sync,wdelay,root_squash)
- /mnt/aiplaypc1 192.168.1.0/24(ro,sync,wdelay,root_squash)
- #參數詳解
- ro #只讀共享
- rw #讀寫共享
- sync #同步寫操作
- async #異步寫操作
- wdelay #延遲寫操作
- root_squash #屏蔽遠程root權限
- no_root_squash #不屏蔽遠程root權限
- all_squash #屏蔽所有遠程用戶的權限
- #准備工作做好了,現在就可以啟動服務了。
- service nfs start
- chkconfig nfs on
- service rpcbind start
- chkconfig rpcbind on
接下來是客戶端的操作
- #安裝
- yum install nfs-utils
- #掛載nfs服務器的共享目錄到/mnt/aiplaypc2
- mount -t nfs 192.168.1.65:/mnt/aiplaypc1 /mnt/aiplaypc2
- #檢查是否讀取到了服務器的共享文件,不出意外就可以看到有個test文件
- ls /mnt/aiplaypc2
- #開機自動掛載
- echo "192.168.1.65:/mnt/aiplaypc1 /mnt/aiplaypc2 nfs defaults 0 0" >> /etc/fstab
到此一個nfs服務器和客戶端的共享就完成了,如果有哪里寫的不好,請各位留言指正。