了解最新公司動態及行業資訊
一、NFS 協議
NFS 服務工作在 TCP 的 2049 端口和 UDP 的 2049 端口。
NFS是File的縮寫,即 File ,是分布式文件系統中使用的一種協議。作用是讓不同的機器和不同的操作系統通過網絡共享各自的數據,使客戶端可以通過網絡訪問位于服務器磁盤中的數據,是Unix之間實現磁盤文件共享的一種方法類系統。.
此 NFS 服務器允許您的 PC 將網絡上遠程 NFS 服務器共享的目錄掛載到本地計算機。在本地機器上,遠程主機的目錄看起來就像它自己的磁盤分區槽。
1.1 工作原理
因為NFS支持的功能相當多,而且不同的功能會使用不同的程序來啟動,所以每次啟動一個功能,都會啟用一些端口來傳輸數據。因此,NFS功能對應的端口不是固定的,而是隨機選擇一些小于1024的未使用端口進行傳輸。但這在客戶端要連接服務器的時候也會帶來麻煩,因為客戶端必須知道服務器的相關端口才能連接!
NFS 在文件傳輸或信息傳輸過程中依賴于 RPC 協議。RPC 是 Call 的縮寫,是一種使客戶端能夠在其他系統中執行程序的機制。RPC的主要作用是指定每個NFS函數對應的端口號,并上報給客戶端,以便客戶端連接到正確的端口。
NFS本身不提供信息傳輸的協議和功能,但是NFS允許我們通過網絡共享數據,因為NFS使用了一些其他的傳輸協議。而這些傳輸協議使用這個 RPC 功能??梢哉fNFS本身就是一個使用RPC的程序服務器運維,或者說NFS也是一個RPC。所以只要使用了NFS,就必須啟動RPC服務,不管是NFS還是NFS。這樣就可以通過RPC來實現PORT的對應。RPC和NFS的關系可以這樣理解:NFS是一個文件系統,RPC負責信息的傳遞。
事實上,很多這樣的服務器都注冊了RPC,例如NIS()也是RPC的一種。
RPC 是如何知道每個 NFS 的端口的?
客戶端如何與 NFS 服務器交換數據?
1.2 激活 NFS 服務
NFS 服務需要激活幾個重要的 RPC 守護進程
工作過程
nfs— => => => nfs-(nfsd)
(1)rpc.nfsd
(2)rpc.
主要功能
請求過程
注意:NFS 需要兩個套件
NFS 服務的主要套件
為兩個 NFS 守護程序 rpc.nfsd 和 rpc. 以及其他相關文檔和文檔、可執行文件等提供包。
主要負責RPC端口與守護進程的映射關系,即
在激活任何 RPC 之前,我們需要激活它
1.3 版本比較
NFS 是一個網絡文件系統。自 1985 年推出以來,已經發布了三個版本:NFSv2、NFSv3、NFSv4,NFSv4 包含兩個次要版本 NFSv4.0 和 NFSv4.1。經過20多年的發展,NFS發生了很大的變化。最大的變化是發起人已經從Sun改變了。NFSv2和NFSv3基本由Sun起草,從NFSv4.0參與,主導NFSv4.1標準制定過程,Sun已被收購。
1. 。NFSv3
協議特性
區分差異
3. NFSv4.0 協議特性差異
(1) NFSv4 增加了安全性并支持 -GSS 身份驗證。
(2) NFSv4被設計成有狀態協議,實現了文件鎖功能和獲取文件系統根節點的功能。
(3) NFSv4 只提供了 NULL 和 2 個請求,所有操作都集成在其中??蛻舳丝梢愿鶕嶋H請求將多個操作封裝成一個請求,增加了靈活性。
(4)NFSv4文件系統的命令空間發生變化服務器運維,服務器必須設置根文件系統(fsid=0),其他文件系統掛載導出到根文件系統上)。
(5) NFSv4 支持。由于多個客戶端可以掛載同一個文件系統,為了保持文件同步,NFSv3 中的客戶端需要頻繁向服務器發起請求,請求文件屬性信息,并判斷其他客戶端是否有修改如果文件系統是只讀的,或者客戶端不經常修改文件,頻繁向服務器請求文件屬性信息會降低系統性能,NFSv4可以依靠文件同步的實現。
(6) NFSv4修改了文件屬性的表示。由于NFS是Sun公司開發的文件系統,設計的NFS文件屬性指的是UNIX中的文件屬性,可能沒有某些屬性,所以NFS與操作系統的兼容性系統不是很好。
4. NFSv4.1
二、NFS 服務
以 NFSv4 作為默認版本,NFSv4 使用 TCP 協議(??端口號為 2049) 與 NFS 服務器建立連接。
#?系統環境
系統平臺:CentOS release 7.0?(Final)
NFS Server IP:192.168.10.10
防火墻已關閉/iptables:?Firewall?is?not?running.
SELINUX=disabled
2.1 安裝NFS服務服務器客戶端
查看 NFS 服務端口
#?使用rpcinfo?-P會發現rpc啟動了很多監聽端口
[root@localhost?~]#?rpcinfo?-p?localhost
???program?vers?proto???port??service
????100000????4???tcp????111??portmapper
????100000????2???udp????111??portmapper
????100005????1???udp??49979??mountd
????100005????1???tcp??58393??mountd
????100003????2???tcp???2049??nfs
????100227????2???tcp???2049??nfs_acl
????......
#?添加如下
[root@localhost?~]#?vim?/etc/sysconfig/nfs
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
啟動服務
[root@localhost?~]#?service?nfs?start
Starting?NFS?services:????????[OK]
Starting?NFS?quotas:??????????[OK]
Starting?NFS?mountd:??????????[OK]
Starting?NFS?daemon:??????????[OK]
Starting?NFS?idmapd:??????????[OK]
2.2 服務文件配置
我們可以定義要共享的目錄和對應的權限,格式為“共享目錄的路徑允許訪問NFS客戶端(共享權限參數)”
[root@localhost?~]#?cat?/etc/exports
/nfsfile?192.168.10.*(rw,sync,root_squash)
/tmp/serverdir?192.168.174.132(rw,sync,no_root_squash)?192.168.174.133(ro,sync,no_root_squash)
三、實戰演示
有興趣可以試試:兩臺web服務器,共享關系數據庫,共享NFS服務器,使用DNS記錄輪詢提供負載均衡。
第 1 步:機器設置
主機名 操作系統 IP 地址 NFS 服務器 RHEL 7192.168.10.10NFS 客戶端 RHEL 7192.168.10. 20
#?清空NFS服務器上面iptables防火墻的默認策略,以免默認的防火墻策略禁止正常的NFS共享服務
[root@localhost?~]#?iptables?-F
[root@localhost?~]#?service?iptables?save
iptables:?Saving?firewall?rules?to?/etc/sysconfig/iptables:[?OK?]
第二步:創建共享目錄
[root@localhost?~]#?mkdir?/nfsfile
[root@localhost?~]#?chmod?-Rf?777?/nfsfile
[root@localhost?~]#?echo?"welcome?to?localhost.com"?>?/nfsfile/readme
第三步:編輯配置文件 /etc/
#?把/nfsfile目錄共享給192.168.10.0/24網段內的所有主機,讓這些主機都擁有讀寫權限
[root@localhost?~]#?vim?/etc/exports
/nfsfile?192.168.10.*(rw,sync,root_squash)
第四步:啟動并啟用 NFS 服務程序
[root@localhost?~]#?systemctl?restart?rpcbind
[root@localhost?~]#?systemctl?enable?rpcbind
[root@localhost?~]#?systemctl?start?nfs-server
[root@localhost?~]#?systemctl?enable?nfs-server
ln?-s?'/usr/lib/systemd/system/nfs-server.service'?'/etc/systemd/system/nfs.target.wants/nfs-server.service'
第 5 步:配置 NFS 客戶端
命令
參數功能 -e 顯示 NFS 服務器的共享列表 -a 顯示本機掛載的文件資源情況 NFS 資源情況 -v 顯示版本號
命令
#?查看NFS服務器端共享的文件系統
#?showmount?-e?NFSSERVER_IP
[root@localhost?~]#?showmount?-e?192.168.10.10
Export?list?for?192.168.10.10:
/nfsfile?192.168.10.*
#?NFS客戶端創建一個掛載目錄,掛載服務端NFS文件系統到本地
#?mount?-t?nfs?SERVER:/path/to/sharedfs??/path/to/mount_point
[root@localhost?~]#?mkdir?/nfsfile
[root@localhost?~]#?mount?-t?nfs?192.168.10.10:/nfsfile?/nfsfile
#?掛載成功后就應該能夠順利地看到在執行前面的操作時寫入的文件內容了
[root@localhost?~]#?cat?/nfsfile/readme
welcome?to?linuxprobe.com
#?如果希望NFS文件共享服務能一直有效,則需要將其寫入到fstab文件中
#?SERVER:/PATH/TO/EXPORTED_FS??/mount_point??nfs??defaults,_netdev??0??0
[root@localhost?~]#?vim?/etc/fstab
/dev/mapper/rhel-root?/?xfs?defaults?1?1
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b?/boot?xfs?defaults?1?2
/dev/mapper/rhel-swap?swap?swap?defaults?0?0
/dev/cdrom?/media/cdrom?iso9660?defaults?0?0
192.168.10.10:/nfsfile?/nfsfile?nfs?defaults?0?0