<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          服務(wù)部署-NFS服務(wù)器

          共 9220字,需瀏覽 19分鐘

           ·

          2021-06-24 13:09

          關(guān)注「開源Linux」,選擇“設(shè)為星標(biāo)”
          回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~

          目錄

          1. NFS協(xié)議

            1.1 工作原理

            1.2 激活NFS服務(wù)

            1.3 各個版本之間的比較

          2. NFS服務(wù)

            2.1 安裝NFS服務(wù)

            2.2 服務(wù)文件配置

          3. 實戰(zhàn)演示

          一、NFS 協(xié)議

          NFS服務(wù)工作在TCP2049端口,UDP2049端口。

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

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

          1.1 工作原理

          因為 NFS 支持的功能相當(dāng)?shù)亩啵煌墓δ芏紩褂貌煌某绦騺韱樱?每啟動一個功能就會啟用一些端口來傳輸數(shù)據(jù),因此, NFS 的功能所對應(yīng)的端口才沒有固定住, 而是隨機取用一些未被使用的小于 1024 的端口來作為傳輸之用。但如此一來又造成客戶端想要連上服務(wù)器時的困擾, 因為客戶端得要知道服務(wù)器端的相關(guān)端口才能夠聯(lián)機吧!

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

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

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

          RPC又是如何知道每個NFS的端口呢?

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

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

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

          1.2 激活 NFS 服務(wù)

          NFS 服務(wù)需要激活幾個重要的 RPC 守護進程

          工作流程

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

          (1) rpc.nfsd

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

          (2) rpc.mountd

          主要功能

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

          請求過程

          • 當(dāng)客戶端順利的通過 rpc.nfsd 而登入主機之后,在它可以使用 NFS server 提供的檔案之前,還會經(jīng)過檔案使用權(quán)限 的認(rèn)證程序,就是那個-rwxrwxrwxownergroup那幾個權(quán)限啦。

          • 然后它會去讀 NFS 的設(shè)定檔 /etc/exports 來比對客戶端的權(quán)限,當(dāng)通過這一關(guān)之后,客戶端就可以取得使用 NFS 檔案的權(quán)限啦。

          注釋:NFS需要有兩個套件

          • nfs-utils

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

          提供rpc.nfsdrpc.mountd兩個NFS守護進程和與其它相關(guān)文檔與說明文件、執(zhí)行檔等的套件

          • portmap

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

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

          1.3 各個版本之間的比較

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

          1. NFSv2

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

          2. NFSv3

          協(xié)議特點

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

          區(qū)別差別

          • (1) NFSv2只支持同步寫,如果客戶端向服務(wù)器端寫入數(shù)據(jù),服務(wù)器必須將數(shù)據(jù)寫入磁盤中才能發(fā)送應(yīng)答消息。NFSv3支持異步寫操作,服務(wù)器只需要將數(shù)據(jù)寫入緩存中就可以發(fā)送應(yīng)答信息了。

          • (2) NFSv3增加了ACCESS請求,ACCESS用來檢查用戶的訪問權(quán)限。因為服務(wù)器端可能進行uid映射,因此客戶端的uidgid不能正確反映用戶的訪問權(quán)限。

          • (3) 一些請求調(diào)整了參數(shù)和返回信息,畢竟NFSv3和NFSv2發(fā)布的間隔有6年,經(jīng)過長期運行可能覺得NFSv2某些請求參數(shù)和返回信息需要改進。

          3. NFSv4.0

          協(xié)議特點
          • 相比NFSv3NFSv4發(fā)生了比較大的變化,最大的變化是NFSv4有狀態(tài)了。NFSv2和NFSv3都是無狀態(tài)協(xié)議,服務(wù)區(qū)端不需要維護客戶端的狀態(tài)信息。

          • 無狀態(tài)協(xié)議的一個優(yōu)點在于災(zāi)難恢復(fù),當(dāng)服務(wù)器出現(xiàn)問題后,客戶端只需要重復(fù)發(fā)送失敗請求就可以了,直到收到服務(wù)器的響應(yīng)信息。

          區(qū)別差別

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

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

          (3) NFSv4只提供了兩個請求NULLCOMPOUND,所有的操作都整合進了COMPOUND中,客戶端可以根據(jù)實際請求將多個操作封裝到一個COMPOUND請求中,增加了靈活性。

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

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

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

          4. NFSv4.1

          • NFSv4.0相比,NFSv4.1最大的變化是支持并行存儲了。在以前的協(xié)議中,客戶端直接與服務(wù)器連接,客戶端直接將數(shù)據(jù)傳輸?shù)椒?wù)器中。

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

          二、NFS 服務(wù)

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

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

          2.1 安裝 NFS 服務(wù)

          服務(wù)端

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

          客戶端

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

          查看NFS服務(wù)端口

          • NFS啟動時會隨機啟動多個端口并向RPC注冊,為了方便配置防火墻,需要固定NFS服務(wù)端口。
          • 這樣如果使用iptablesNFS端口進行限制就會有點麻煩,可以更改配置文件固定NFS服務(wù)相關(guān)端口
          • 分配端口,編輯配置文件/etc/sysconfig/nfs
          # 使用rpcinfo -P會發(fā)現(xiàn)rpc啟動了很多監(jiān)聽端口
          [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

          啟動服務(wù)

          [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 服務(wù)文件配置

          • 相關(guān)文件和命令
          • 配置文件/etc/exports

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

          [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)

          三、實戰(zhàn)演示

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

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

          • 創(chuàng)建服務(wù)端和客戶端
          • 關(guān)閉iptablesselinux服務(wù)
          主機名稱操作系統(tǒng)IP地址
          NFS服務(wù)端RHEL 7192.168.10.10
          NFS客戶端RHEL 7192.168.10.20
          # 清空NFS服務(wù)器上面iptables防火墻的默認(rèn)策略,以免默認(rèn)的防火墻策略禁止正常的NFS共享服務(wù)
          [root@localhost ~]# iptables -F
          [root@localhost ~]# service iptables save
          iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

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

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

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

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

          第 4 步:啟動和啟用 NFS 服務(wù)程序

          • 在啟動NFS服務(wù)之前,還需要順帶重啟并啟用rpcbind服務(wù)程序,并將這兩個服務(wù)一并加入開機啟動項中
          [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 客戶端的配置

          • 使用showmount命令查詢NFS服務(wù)器的遠程共享信息
          • showmount命令輸出格式為“共享的目錄名稱 允許使用客戶端地址”
          showmount命令
          參數(shù)作用
          -e顯示NFS服務(wù)器的共享列表
          -a顯示本機掛載的文件資源的情況NFS資源的情況
          -v顯示版本號
          exportfs命令
          • 維護exports文件導(dǎo)出的文件系統(tǒng)表的專用工具,可以修改配置之后不重啟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)
          # 查看NFS服務(wù)器端共享的文件系統(tǒng)
          # showmount -e NFSSERVER_IP
          [root@localhost ~]# showmount -e 192.168.10.10
          Export list for 192.168.10.10:
          /nfsfile 192.168.10.*

          # NFS客戶端創(chuàng)建一個掛載目錄,掛載服務(wù)端NFS文件系統(tǒng)到本地
          # 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
          # 掛載成功后就應(yīng)該能夠順利地看到在執(zhí)行前面的操作時寫入的文件內(nèi)容了
          [root@localhost ~]# cat /nfsfile/readme
          welcome to linuxprobe.com

          # 如果希望NFS文件共享服務(wù)能一直有效,則需要將其寫入到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

          文章作者: Escape 

          鏈接: https://escapelife.github.io/posts/c49dfbab.html 

          整理:微信公眾號【開源Linux】

          關(guān)注「開源Linux」加星標(biāo),提升IT技能

          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99成人| 噜噜视频 | 高清无码小说 | 毛片一级免费 | 精品五月丁香婷婷一区 |