檔案共享之NFS

2021-08-14 09:11:27 字數 3603 閱讀 3922

一、什麼是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客戶端本地系統中 就是某乙...