一、什麼是nfs
主要功能是通過網路讓不同的機器系統之間可以彼此共享檔案,使nfs客戶端將nfs
伺服器的共享目錄掛在到nfs客戶端。在nfs客戶端看來,nfs服務端的共享目錄就如同自己的磁碟分割槽。換句話說就是將nfs服務端的某個目錄對映到客戶端。(服務端共享,客戶端掛載)
注意:(1)nfs客戶端掛載到的目錄最好是空的,否則會造成短暫性檔案查不到的問題。
(2)nfs客戶端如果可以操作該共享目錄,服務端需要給到寫的許可權。
二、nfs原理
比如nfs服務端將/var/www/html目錄進行共享,那麼有訪問許可權的nfs服務端就可以將該目錄掛載到本地,並且可以看到和服務端html下面相同的檔案內容,服務端給客戶端相應的許可權(讀、寫、讀寫),客戶端也就會擁有相應的許可權(讀、寫、讀寫)。掛載後nfs客戶端檢視磁碟資訊命令:#df -h
nfs是通過網路進行服務端與客戶端直接 資料傳輸(需要相應的網路埠支援)的,且nfs服務端是通過隨機選擇埠(<1024)進行資料傳輸的。然後nfs服務端通過rpc(遠端過程呼叫協議)使nfs客戶端知道服務端目前正在使用的埠。
注意:rpc協議/服務會統一管理nfs的埠,統一對外的埠是111,客戶端和服務端通過rpc先溝通nfs使用了哪些埠。
rpc和nfs之間的通訊:
nfs服務端要先開啟rpc服務(portmap或rpcbind服務),再開啟nfs,這樣才能使nfs去rpc中註冊埠資訊,當nfs啟動後,會隨機選擇一些埠向rpc註冊這些埠,rpc就會記錄下這些埠,並開啟對外111埠,等待客戶端的請求。當客戶端有請求時,客戶端的rpc向服務端的rpc請求獲取服務端的nfs埠資訊,服務端的rpc就會將服務端的nfs資訊返回給客戶端的rpc。
注:若rpc服務重啟了,原來註冊好的nfs埠資料就會丟失,所以nfs也要重新啟動,重新向rpc註冊埠,若只是修改nfs配置檔案,不需要重啟nfs,直接執行/etc/init.d/nfs reload 或者 exportfs -rv即可使修改的/etc/exports生效。
總結為:
1)首先伺服器端啟動rpc服務,並開啟111埠
2)啟動nfs服務,並向rpc註冊埠資訊
3)客戶端啟動rpc(portmap服務),向服務端的rpc(portmap)服務請求服務端的nfs埠
4)服務端的rpc(portmap)服務反饋nfs埠資訊給客戶端。
5)客戶端通過獲取的nfs埠來建立和服務端的nfs連線並進行資料的傳輸。
三
、服務端nfs部署
部署nfs服務端和客戶端都必須安裝的兩個包:nfs-utils(nfs主程式,包含rpc.nfsd、rpc.mount)、portmap:(rpc主程式)
客戶端和服務端都要開啟rpcbind伺服器,但nfs只需要服務端開啟即可
(1)檢視系統版本:
cat /etc/redhat-release
(2) 檢視是否安裝nfs和portmap (nfs的rpc服務,在centos5下名為portmap,centos6下名稱為rpcbind。)
>centos6版本: rpm -qa | egrep "nfs|rpcbind" (注意centos5的話。換成 rpm -qa | grep portmap )
如果顯示如下內容表示已經安裝成功或已經安裝
libnfsidmap-0.25-17.el7.x86_64
rpcbind-0.2.0-42.el7.x86_64
nfs-utils-1.3.0-0.48.el7_4.x86_64
如果沒有上述資訊,則進行安裝yum intall nfs-utils rpcbind centos5: yum intall nfs-util portmap
(3)啟動rpc(必須先啟動)
service rpcbind start
啟動rpcbind後,使用netstat -nltp檢視是否有111埠,如有,則表示啟動成功。tcp6 0 0 :::111 :::* listen 10681/rpcbind
檢視在rpc註冊的埠資訊
rpcinfo -p
(4)啟動nfs(先啟動rpc)
service nfs start
檢視nfs狀態service nfs status
設定開啟自啟
chkconfig nfs on
chkconfig rpcbind on
(5)配置nfs
配置檔案路徑/etc/exports,預設該配置檔案是空的
格式: nfs共享目錄(絕對路徑) 客戶端位址1(引數1,引數2) 客戶端位址2(引數1,引數2)
客戶端位址可寫為單個主機也可以為某個網段,引數:讀寫許可權(rw) 同步更新(sync) 壓縮來訪問賬號(all_squash) 壓縮後的匿名賬號(anonuid=uid,anongid=gid)等
/var/www/html 192.168.1.124(rw,sync)
配置完後,將nfs重啟
service nfs restart
注意:(1)nfs配置好之後,通過cat /var/lib/nfs/etab來檢視nfs配置的引數。/var/lib/nfs/rmtab從這個檔案中可以看到有哪些客戶端掛載了nfs共享目錄。
(2)配置檔案已經設定了共享且是讀寫許可權,但目錄檔案還沒有開放許可權,所以也要開啟本地安全許可權 chmod -r 777 /var/www/html
四、客戶端部署
啟動rpc
service rpcbind start
檢視服務端給提供的共享檔案
showmount -e 192.168.1.131
掛載服務端共享出來的目錄
mount -t nfs 192.168.1.131:/html f:
五、客戶端如何設定開機自動掛載
特別說明:我們重新啟動客戶端之後,我們要重新去掛載nfs,我們可以有兩種方式來實現。
<1>通過把mount–t nfs 192.168.1.131/html f:這條命令寫到/etc/rc.local中,讓它開機就執行。
<2>在/etc/fstab(系統開機啟動分割槽載入項)新增我們的nfs配置
但在生產環境中,對於共享的nfs目錄,一般不會配置到/etc/fstab裡。因為在客戶端主機重啟時如果由於網路等原因連線不上nfs server時,就會導致客戶機無法啟動的厄運發生。一般是通過把mount -t nfs 192.168.1.131:/html f:命令放到rc.local中來實現開機自動掛載nfs。
linux檔案共享之nfs
本次實驗centos6.5 192.168.204.150 nfs150 192.168.204.128 客戶端 實驗開始,仍然是關閉防火牆,關閉selinux 還記得命令嗎?etc init.d iptables stop chkconfig iptables off vim etc selinu...
NFS 檔案共享
檔案共享 主機伺服器 主伺服器 ip 103.2.3.111 1 安裝nfs 和 rpcbind 安裝nfs utils rpcbind yum y install nfs utils rpcbind 檢視是否安裝 rpm qa grep nfs rpm qa grep rpcbind 2 關閉防火...
NFS檔案共享
nfs是network file system的縮寫,中文意思是網路檔案系統。它的主要功能是通過網路 一般是區域網 讓不同的主機系統之間可以共享檔案或目錄。nfs客戶端 一般為應用伺服器,例如web 可以通過掛載 mount 的方式將nfs伺服器端共享的資料目錄掛載帶nfs客戶端本地系統中 就是某乙...