自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 系統(tǒng)實(shí)戰(zhàn)之 部署 NFS 服務(wù)器

系統(tǒng) Linux
這個(gè)NFS服務(wù)器可以讓你的PC來(lái)將網(wǎng)絡(luò)遠(yuǎn)程的NFS服務(wù)器分享的目錄,掛載到本地端的機(jī)器當(dāng)中, 在本地端的機(jī)器看起來(lái),那個(gè)遠(yuǎn)程主機(jī)的目錄就好像是自己的一個(gè)磁盤(pán)分區(qū)槽一樣。

 [[410954]]

一、NFS 協(xié)議

NFS服務(wù)工作在TCP的2049端口,UDP的2049端口。

NFS是Network File System的縮寫(xiě),即網(wǎng)絡(luò)文件系統(tǒng),是一種使用于分散式文件系統(tǒng)的協(xié)定。功能是通過(guò)網(wǎng)絡(luò)讓不同的機(jī)器、不同的操作系統(tǒng)能夠彼此分享個(gè)別的數(shù)據(jù),讓?xiě)?yīng)用程序在客戶端通過(guò)網(wǎng)絡(luò)訪問(wèn)位于服務(wù)器磁盤(pán)中的數(shù)據(jù),是在類(lèi)Unix系統(tǒng)間實(shí)現(xiàn)磁盤(pán)文件共享的一種方法。

這個(gè)NFS服務(wù)器可以讓你的PC來(lái)將網(wǎng)絡(luò)遠(yuǎn)程的NFS服務(wù)器分享的目錄,掛載到本地端的機(jī)器當(dāng)中, 在本地端的機(jī)器看起來(lái),那個(gè)遠(yuǎn)程主機(jī)的目錄就好像是自己的一個(gè)磁盤(pán)分區(qū)槽一樣。

1.1 工作原理

因?yàn)?NFS 支持的功能相當(dāng)?shù)亩?,而不同的功能都?huì)使用不同的程序來(lái)啟動(dòng), 每啟動(dòng)一個(gè)功能就會(huì)啟用一些端口來(lái)傳輸數(shù)據(jù),因此, NFS 的功能所對(duì)應(yīng)的端口才沒(méi)有固定住, 而是隨機(jī)取用一些未被使用的小于 1024 的端口來(lái)作為傳輸之用。但如此一來(lái)又造成客戶端想要連上服務(wù)器時(shí)的困擾, 因?yàn)榭蛻舳说靡婪?wù)器端的相關(guān)端口才能夠聯(lián)機(jī)吧!

NFS在文件傳送或信息傳送過(guò)程中依賴(lài)于RPC協(xié)議。RPC,即遠(yuǎn)程過(guò)程調(diào)用的縮寫(xiě),是能使客戶端執(zhí)行其他系統(tǒng)中程序的一種機(jī)制。RPC 最主要的功能就是在指定每個(gè) NFS 功能所對(duì)應(yīng)的端口號(hào),并且回報(bào)給客戶端,讓客戶端可以連接到正確的端口上去。

NFS本身是沒(méi)有提供信息傳輸?shù)膮f(xié)議和功能的,但NFS卻能讓我們通過(guò)網(wǎng)絡(luò)進(jìn)行資料的分享,這是因?yàn)镹FS使用了一些其它的傳輸協(xié)議。而這些傳輸協(xié)議用到這個(gè)RPC功能的??梢哉f(shuō)NFS本身就是使用RPC的一個(gè)程序,或者說(shuō)NFS也是一個(gè)RPC SERVER。所以只要用到NFS的地方都要啟動(dòng)RPC服務(wù),不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過(guò)RPC來(lái)實(shí)現(xiàn)PROGRAM PORT的對(duì)應(yīng)??梢赃@么理解RPC和NFS的關(guān)系:NFS是一個(gè)文件系統(tǒng),而RPC是負(fù)責(zé)負(fù)責(zé)信息的傳輸。

事實(shí)上,有很多這樣的服務(wù)器都是向 RPC 注冊(cè)的,舉例來(lái)說(shuō),NIS (Network Information Service) 也是 RPC server 的一種。

那RPC又是如何知道每個(gè)NFS的端口呢?

  •  這是因?yàn)楫?dāng)服務(wù)器在啟動(dòng) NFS 時(shí)會(huì)隨機(jī)取用數(shù)個(gè)端口,并主動(dòng)的向 RPC 注冊(cè),因此 RPC 可以知道每個(gè)埠口對(duì)應(yīng)的 NFS 功能,然后 RPC 又是固定使用 111 端口來(lái)監(jiān)聽(tīng)客戶端的需求并報(bào)客戶端正確的埠口, 所以當(dāng)然可以讓 NFS 的啟動(dòng)更為輕松愉快了。
  •  所以你要注意,要啟動(dòng) NFS 之前,RPC 就要先啟動(dòng)了,否則 NFS 會(huì)無(wú)法向 RPC 注冊(cè)。另外,RPC 若重新啟動(dòng)時(shí),原本注冊(cè)的數(shù)據(jù)會(huì)不見(jiàn),因此 RPC 重新啟動(dòng)后,它管理的所有服務(wù)都要重新啟動(dòng)來(lái)重新向 RPC 注冊(cè)。

那客戶端如何向NFS服務(wù)端交換數(shù)據(jù)數(shù)據(jù)呢?

  •  (1) 客戶端會(huì)向服務(wù)器端的 RPC 的111端口發(fā)出 NFS 檔案存取功能的詢(xún)問(wèn)要求
  •  (2) 服務(wù)器端找到對(duì)應(yīng)的已注冊(cè)的 NFS 守護(hù)進(jìn)程端口后,會(huì)回報(bào)給客戶端
  •  (3) 客戶端了解正確的端口后,就可以直接與 NFS 守護(hù)進(jìn)程來(lái)聯(lián)機(jī)

1.2 激活 NFS 服務(wù)

NFS 服務(wù)需要激活幾個(gè)重要的 RPC 守護(hù)進(jìn)程

工作流程

nfs—client => portmapper => mountd => nfs-server(nfsd)

(1) rpc.nfsd

  •  這個(gè)守護(hù)進(jìn)程主要的功能,則是在管理客戶端是否能夠登入主機(jī)的權(quán)限,其中還包含這個(gè)登入者的 ID 的判別。

(2) rpc.mountd

主要功能

  •  這個(gè)守護(hù)進(jìn)程主要的功能,則是在管理 NFS 的檔案系統(tǒng),用于給用戶提供訪問(wèn)令牌。
  •  訪問(wèn)的令牌,由本地的RPC提供隨機(jī)端口。本地的RPC叫做portmapper,可以使用rpcinfo -P查看。
  •  RPC的portmapper服務(wù)工作在1111端口。

請(qǐng)求過(guò)程

  •  當(dāng)客戶端順利的通過(guò) rpc.nfsd 而登入主機(jī)之后,在它可以使用 NFS server 提供的檔案之前,還會(huì)經(jīng)過(guò)檔案使用權(quán)限 的認(rèn)證程序,就是那個(gè)-rwxrwxrwx、owner、group那幾個(gè)權(quán)限啦。
  •  然后它會(huì)去讀 NFS 的設(shè)定檔 /etc/exports 來(lái)比對(duì)客戶端的權(quán)限,當(dāng)通過(guò)這一關(guān)之后,客戶端就可以取得使用 NFS 檔案的權(quán)限啦。

注釋?zhuān)篘FS需要有兩個(gè)套件

  •  nfs-utils

NFS服務(wù)的主要套件

提供rpc.nfsd和rpc.mountd兩個(gè)NFS守護(hù)進(jìn)程和與其它相關(guān)文檔與說(shuō)明文件、執(zhí)行檔等的套件

  •  portmap

主要負(fù)責(zé)RPC端口和守護(hù)進(jìn)程的映射關(guān)系,即portmapper

在激活任何一個(gè)RPC server之前,我們都需要激活portmapper才行

1.3 各個(gè)版本之間的比較

NFS是一種網(wǎng)絡(luò)文件系統(tǒng),從1985年推出至今,共發(fā)布了3個(gè)版本:NFSv2、NFSv3、NFSv4,NFSv4包含兩個(gè)次版本NFSv4.0和NFSv4.1。經(jīng)過(guò)20多年發(fā)展,NFS發(fā)生了非常大的變化,最大的變化就是推動(dòng)者從Sun變成了NetApp,NFSv2和NFSv3基本上是Sun起草的,NetApp從NFSv4.0參與進(jìn)來(lái),并且主導(dǎo)了NFSv4.1標(biāo)準(zhǔn)的制定過(guò)程,而Sun已經(jīng)被Oracle收購(gòu)了。

1. NFSv2

  •  NFSv2·是第一個(gè)以RFC形式發(fā)布的版本,實(shí)現(xiàn)了基本的功能。

2. NFSv3

協(xié)議特點(diǎn)

  •  NFSv3修正了NFSv2的一些bug,兩者有如下一些差別,但是感覺(jué)沒(méi)有本質(zhì)的差別。

區(qū)別差別

  •  (1) NFSv2只支持同步寫(xiě),如果客戶端向服務(wù)器端寫(xiě)入數(shù)據(jù),服務(wù)器必須將數(shù)據(jù)寫(xiě)入磁盤(pán)中才能發(fā)送應(yīng)答消息。NFSv3支持異步寫(xiě)操作,服務(wù)器只需要將數(shù)據(jù)寫(xiě)入緩存中就可以發(fā)送應(yīng)答信息了。
  •  (2) NFSv3增加了ACCESS請(qǐng)求,ACCESS用來(lái)檢查用戶的訪問(wèn)權(quán)限。因?yàn)榉?wù)器端可能進(jìn)行uid映射,因此客戶端的uid和gid不能正確反映用戶的訪問(wèn)權(quán)限。
  •  (3) 一些請(qǐng)求調(diào)整了參數(shù)和返回信息,畢竟NFSv3和NFSv2發(fā)布的間隔有6年,經(jīng)過(guò)長(zhǎng)期運(yùn)行可能覺(jué)得NFSv2某些請(qǐng)求參數(shù)和返回信息需要改進(jìn)。

3. NFSv4.0

協(xié)議特點(diǎn)

  •  相比NFSv3,NFSv4發(fā)生了比較大的變化,最大的變化是NFSv4有狀態(tài)了。NFSv2和NFSv3都是無(wú)狀態(tài)協(xié)議,服務(wù)區(qū)端不需要維護(hù)客戶端的狀態(tài)信息。
  •  無(wú)狀態(tài)協(xié)議的一個(gè)優(yōu)點(diǎn)在于災(zāi)難恢復(fù),當(dāng)服務(wù)器出現(xiàn)問(wèn)題后,客戶端只需要重復(fù)發(fā)送失敗請(qǐng)求就可以了,直到收到服務(wù)器的響應(yīng)信息。

區(qū)別差別

(1) NFSv4增加了安全性,支持RPCSEC-GSS身份認(rèn)證。

(2) NFSv4設(shè)計(jì)成了一種有狀態(tài)的協(xié)議,自身實(shí)現(xiàn)了文件鎖功能和獲取文件系統(tǒng)根節(jié)點(diǎn)功能。

(3) NFSv4只提供了兩個(gè)請(qǐng)求NULL和COMPOUND,所有的操作都整合進(jìn)了COMPOUND中,客戶端可以根據(jù)實(shí)際請(qǐng)求將多個(gè)操作封裝到一個(gè)COMPOUND請(qǐng)求中,增加了靈活性。

(4) NFSv4文件系統(tǒng)的命令空間發(fā)生了變化,服務(wù)器端必須設(shè)置一個(gè)根文件系統(tǒng)(fsid=0),其他文件系統(tǒng)掛載在根文件系統(tǒng)上導(dǎo)出。

(5) NFSv4支持delegation。由于多個(gè)客戶端可以掛載同一個(gè)文件系統(tǒng),為了保持文件同步,NFSv3中客戶端需要經(jīng)常向服務(wù)器發(fā)起請(qǐng)求,請(qǐng)求文件屬性信息,判斷其他客戶端是否修改了文件。如果文件系統(tǒng)是只讀的,或者客戶端對(duì)文件的修改不頻繁,頻繁向服務(wù)器請(qǐng)求文件屬性信息會(huì)降低系統(tǒng)性能。NFSv4可以依靠delegation實(shí)現(xiàn)文件同步。

(6) NFSv4修改了文件屬性的表示方法。由于NFS是Sun開(kāi)發(fā)的一套文件系統(tǒng),設(shè)計(jì)之出NFS文件屬性參考了UNIX中的文件屬性,可能Windows中不具備某些屬性,因此NFS對(duì)操作系統(tǒng)的兼容性不太好。

4. NFSv4.1

  •  與NFSv4.0相比,NFSv4.1最大的變化是支持并行存儲(chǔ)了。在以前的協(xié)議中,客戶端直接與服務(wù)器連接,客戶端直接將數(shù)據(jù)傳輸?shù)椒?wù)器中。
  •  當(dāng)客戶端數(shù)量較少時(shí)這種方式?jīng)]有問(wèn)題,但是如果大量的客戶端要訪問(wèn)數(shù)據(jù)時(shí),NFS服務(wù)器很快就會(huì)成為一個(gè)瓶頸,抑制了系統(tǒng)的性能。NFSv4.1支持并行存儲(chǔ),服務(wù)器由一臺(tái)元數(shù)據(jù)服務(wù)器(MDS)和多臺(tái)數(shù)據(jù)服務(wù)器(DS)構(gòu)成,元數(shù)據(jù)服務(wù)器只管理文件在磁盤(pán)中的布局,數(shù)據(jù)傳輸在客戶端和數(shù)據(jù)服務(wù)器之間直接進(jìn)行。由于系統(tǒng)中包含多臺(tái)數(shù)據(jù)服務(wù)器,因此數(shù)據(jù)可以以并行方式訪問(wèn),系統(tǒng)吞吐量迅速提升。

二、NFS 服務(wù)

    CentOS7以NFSv4作為默認(rèn)版本,NFSv4使用TCP協(xié)議(端口號(hào)是2049)和NFS服務(wù)器建立連接。 

  1. # 系統(tǒng)環(huán)境  
  2. 系統(tǒng)平臺(tái):CentOS release 7.0 (Final)  
  3. NFS Server IP:192.168.10.10  
  4. 防火墻已關(guān)閉/iptables: Firewall is not running.  
  5. SELINUX=disabled 

2.1 安裝 NFS 服務(wù)

服務(wù)端

  •  服務(wù)端,程序包名nfs-utils、rpcbind,默認(rèn)都已經(jīng)安裝了
  •  可以通過(guò)rpm -ql nfs-utils查看幫助文檔等信息

客戶端

  •  客戶端,需要安裝程序包名nfs-utils,提供基本的客戶端命令工具 
  1. [root@localhost ~]# yum install nfs-utils  
  2. Loaded plugins: langpacks, product-id, subscription-manager  
  3. ......  
  4. Package 1:nfs-utils-1.3.0-0.el7.x86_64 already installed and latest version  
  5. Nothing to do 

查看NFS服務(wù)端口

  •  NFS啟動(dòng)時(shí)會(huì)隨機(jī)啟動(dòng)多個(gè)端口并向RPC注冊(cè),為了方便配置防火墻,需要固定NFS服務(wù)端口。
  •  這樣如果使用iptables對(duì)NFS端口進(jìn)行限制就會(huì)有點(diǎn)麻煩,可以更改配置文件固定NFS服務(wù)相關(guān)端口
  •  分配端口,編輯配置文件/etc/sysconfig/nfs 
  1. # 使用rpcinfo -P會(huì)發(fā)現(xiàn)rpc啟動(dòng)了很多監(jiān)聽(tīng)端口  
  2. [root@localhost ~]# rpcinfo -p localhost  
  3.    program vers proto   port  service  
  4.     100000    4   tcp    111  portmapper  
  5.     100000    2   udp    111  portmapper  
  6.     100005    1   udp  49979  mountd  
  7.     100005    1   tcp  58393  mountd  
  8.     100003    2   tcp   2049  nfs  
  9.     100227    2   tcp   2049  nfs_acl  
  10.     ...... 
  11. # 添加如下  
  12. [root@localhost ~]# vim /etc/sysconfig/nfs  
  13. RQUOTAD_PORT=30001  
  14. LOCKD_TCPPORT=30002  
  15. LOCKD_UDPPORT=30002  
  16. MOUNTD_PORT=30003  
  17. STATD_PORT=30004 

啟動(dòng)服務(wù) 

  1. [root@localhost ~]# service nfs start  
  2. Starting NFS services:        [OK]  
  3. Starting NFS quotas:          [OK]  
  4. Starting NFS mountd:          [OK]  
  5. Starting NFS daemon:          [OK]  
  6. Starting NFS idmapd:          [OK] 

2.2 服務(wù)文件配置

  • 相關(guān)文件和命令

  •  配置文件/etc/exports

我們可以按照“共享目錄的路徑 允許訪問(wèn)的 NFS 客戶端(共享權(quán)限參數(shù))”的格式,定義要共享的目錄與相應(yīng)的權(quán)限

 

  1. [root@localhost ~]# cat /etc/exports  
  2. /nfsfile 192.168.10.*(rw,sync,root_squash)  
  3. /tmp/serverdir 192.168.174.132(rw,sync,no_root_squash) 192.168.174.133(ro,sync,no_root_squash) 

三、實(shí)戰(zhàn)演示

如果有興趣,可以嘗試:兩臺(tái) web 服務(wù)器,共享關(guān)系型數(shù)據(jù)庫(kù),共享 NFS 服務(wù)器,利用 DNS 記錄輪詢(xún)提供負(fù)載均衡。

第 1 步:機(jī)器設(shè)置

  •  創(chuàng)建服務(wù)端和客戶端
  •  關(guān)閉iptables和selinux服務(wù)
主機(jī)名稱(chēng) 操作系統(tǒng) IP地址
NFS服務(wù)端 RHEL 7 192.168.10.10
NFS客戶端 RHEL 7 192.168.10.20

  


  1. # 清空NFS服務(wù)器上面iptables防火墻的默認(rèn)策略,以免默認(rèn)的防火墻策略禁止正常的NFS共享服務(wù) 
     
  2. [root@localhost ~]# iptables -F  
  3. [root@localhost ~]# service iptables save  
  4. iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] 

第 2 步:創(chuàng)建共享目錄

  •  在NFS服務(wù)器上,建立用于NFS文件共享的目錄
  •  在NFS服務(wù)器上,設(shè)置足夠的權(quán)限確保其他人也有寫(xiě)入權(quán)限 
  1. [root@localhost ~]# mkdir /nfsfile  
  2. [root@localhost ~]# chmod -Rf 777 /nfsfile  
  3. [root@localhost ~]# echo "welcome to localhost.com" > /nfsfile/readme 

第 3 步:編輯配置文件/etc/exports

  •  定義要共享的目錄與相應(yīng)的權(quán)限
  •  請(qǐng)注意,NFS 客戶端地址與權(quán)限之間沒(méi)有空格 
  1. # 把/nfsfile目錄共享給192.168.10.0/24網(wǎng)段內(nèi)的所有主機(jī),讓這些主機(jī)都擁有讀寫(xiě)權(quán)限  
  2. [root@localhost ~]# vim /etc/exports  
  3. /nfsfile 192.168.10.*(rw,sync,root_squash) 

第 4 步:?jiǎn)?dòng)和啟用 NFS 服務(wù)程序

  •  在啟動(dòng)NFS服務(wù)之前,還需要順帶重啟并啟用rpcbind服務(wù)程序,并將這兩個(gè)服務(wù)一并加入開(kāi)機(jī)啟動(dòng)項(xiàng)中 
  1. [root@localhost ~]# systemctl restart rpcbind  
  2. [root@localhost ~]# systemctl enable rpcbind  
  3. [root@localhost ~]# systemctl start nfs-server  
  4. [root@localhost ~]# systemctl enable nfs-server  
  5. ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service' 

第 5 步:NFS 客戶端的配置

  •  使用showmount命令查詢(xún)NFS服務(wù)器的遠(yuǎn)程共享信息
  •  showmount命令輸出格式為“共享的目錄名稱(chēng) 允許使用客戶端地址”

showmount命令

參數(shù) 作用
-e 顯示NFS服務(wù)器的共享列表
-a 顯示本機(jī)掛載的文件資源的情況NFS資源的情況
-v 顯示版本號(hào)

exportfs命令

  •  維護(hù)exports文件導(dǎo)出的文件系統(tǒng)表的專(zhuān)用工具,可以修改配置之后不重啟NFS服務(wù)
  •  export -ar:重新導(dǎo)出所有的文件系統(tǒng)
  •  export -au:關(guān)閉導(dǎo)出的所有文件系統(tǒng)
  •  export -u FS: 關(guān)閉指定的導(dǎo)出的文件系統(tǒng) 
  1. # 查看NFS服務(wù)器端共享的文件系統(tǒng)  
  2. # showmount -e NFSSERVER_IP  
  3. [root@localhost ~]# showmount -e 192.168.10.10  
  4. Export list for 192.168.10.10:  
  5. /nfsfile 192.168.10.*  
  6. # NFS客戶端創(chuàng)建一個(gè)掛載目錄,掛載服務(wù)端NFS文件系統(tǒng)到本地  
  7. # mount -t nfs SERVER:/path/to/sharedfs  /path/to/mount_point  
  8. [root@localhost ~]# mkdir /nfsfile  
  9. [root@localhost ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile  
  10. # 掛載成功后就應(yīng)該能夠順利地看到在執(zhí)行前面的操作時(shí)寫(xiě)入的文件內(nèi)容了  
  11. [root@localhost ~]# cat /nfsfile/readme  
  12. welcome to linuxprobe.com  
  13. # 如果希望NFS文件共享服務(wù)能一直有效,則需要將其寫(xiě)入到fstab文件中  
  14. # SERVER:/PATH/TO/EXPORTED_FS  /mount_point  nfs  defaults,_netdev  0  0  
  15. [root@localhost ~]# vim /etc/fstab  
  16. /dev/mapper/rhel-root / xfs defaults 1 1  
  17. UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2  
  18. /dev/mapper/rhel-swap swap swap defaults 0 0  
  19. /dev/cdrom /media/cdrom iso9660 defaults 0 0  
  20. 192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0  

 

責(zé)任編輯:龐桂玉 來(lái)源: 良許Linux
相關(guān)推薦

2009-06-27 20:10:00

LinuxNFS原理

2009-03-01 14:40:16

LinuxNF安裝

2009-06-27 18:35:00

LinuxNFS圖形化

2009-06-27 20:32:00

LinuxNFS客戶端

2009-06-27 20:20:00

LinuxNFS故障

2010-07-27 13:59:53

Linux NFS服務(wù)

2009-12-04 09:47:47

LinuxNFS服務(wù)器

2010-08-05 14:15:20

NFS服務(wù)器

2009-09-08 15:06:45

NFS服務(wù)器

2010-08-03 17:07:55

NFS服務(wù)器

2010-03-31 15:45:45

CentOS系統(tǒng)

2010-08-06 12:29:17

Linux NFS服務(wù)

2010-07-27 10:46:31

Linux NFS服務(wù)

2009-09-08 15:26:13

NFS服務(wù)器

2010-08-03 13:26:36

linux搭建NFS服

2012-12-31 10:54:09

LinuxNFS

2011-01-14 15:32:17

2010-08-05 09:43:09

NFS服務(wù)器安全

2010-08-04 15:35:02

2009-09-01 10:38:13

NFS服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)