nfs存儲服務實時同步

一.NFS簡介

 NFS(Network File System)即網絡文件系統,它容許網絡中的計算機之間經過網絡共享資源。將NFS主機分享的目錄,掛載到本地客戶端當中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,在客戶端端看起來,就像訪問本地文件同樣。web

 

RPC,基於C/S模型。程序可使用這個協議請求網絡中另外一臺計算機上某程序的服務而不需知道網絡細節,甚至能夠請求對方的系統調用。centos

對於Linux而言,文件系統是在內核空間實現的,即文件系統好比ext三、ext4等是在Kernel啓動時,之內核模塊的身份加載運行的。安全

 

二.NFS原理

NFS自己的服務並無提供數據傳遞的協議,而是經過使用RPC(遠程過程調用 Remote Procedure Call)來實現。當NFS啓動後,會隨機的使用一些端口,NFS就會向RPC去註冊這些端口。RPC就會記錄下這些端口,RPC會開啓111端口。經過client端和sever端端口的鏈接來進行數據的傳輸。在啓動nfs以前,首先要確保rpc服務啓動。服務器

原理以下:網絡

  1. 本地用戶要訪問nfs服務器中文件,先向內核發起請求,內核處理調用nfs模塊及rpc client
  2. rpc client向rpc server發起鏈接
  3. 在鏈接以前,NFS服務除了啓動nfsd自己監聽的端口2049/tcp和2049/udp,還會啓動其它進程(如mountd,statd,rquotad等)以完成文件共享,這些進程的端口是不固定的;是每次NFS服務啓動時向RPC服務註冊的,RPC服務會隨機分配未使用的端口
  4. 完成鏈接,接受訪問請求
  5. nfs應用程序向內核發起請求
  6. 內核調用文件系統

       而後client端經過獲取的NFS端口來創建和server端的NFS鏈接並進行數據的傳輸。app

 

 

如下爲啓動各服務的做用異步

rpc:遠程過程調用協議,是實現本地調用遠程主機實現系統調用的協議。(中介)async

portmapper:負責分配rpc server的端口,並在client端請求時,負責響應目的rpc server端口返回給client端,工做在tcp與udp的111端口上。tcp

mountd:是nfs服務的認證服務的守護進程,client在收到返回的真正端口時,就會去鏈接mountd,認證取得令牌。ide

nfsd:nfs的守護進程,負責接收到用戶的調用請求後與內核發出請求並獲得調用結果響應給用戶,工做在tcp和udp的2049端口。

idmapd:是NFS的一個程序,用來負責遠程client端建立文件後的權限問題。

quotad:用用於實現磁盤配額,當client端掛載nfs後能夠限制磁盤空間的大小。

 

三.NFS安裝與部署—服務端 

a.安裝軟件程序

I:安裝NFS和rpc

yum install -y rpc-bind nfs-utils 

【安裝nfs服務】

II:安裝rpcbind

yum install -y rpcbind

【安裝rpc服務】

 

#### 練習題 ####

/data01/w     10.0.0.41主機掛載(可讀可寫,數據同步,全部用戶都要進行身份轉換)

/data01/r  172.16.1.0/24網段主機掛載(只讀權限,數據異步傳輸,全部用戶不要進行轉換)

b.編寫配置文件:/etc/exports

I:格式:[共享的目錄] [主機名或IP(參數,參數)]

當將同一目錄共享給多個客戶機,但對每一個客戶機提供的權限不一樣時,能夠這樣: 

[共享的目錄] [主機名1或IP1(參數1,參數2)] [主機名2或IP2(參數3,參數4)]

II:配置說明

  第一列,能夠共享的目錄,共享到網絡的文件系統

     第二列,可訪問主機

    172.16.1.7 ----指定IP地址的主機

    nfsclient.test.com------指定域名的主機

    172.16.1.0/24-------指定網段中的全部主機

    *    ----------表明全部主機

III:配置文件經常使用共享參數

 ro                    只讀訪問 
 rw                   讀寫訪問 
 sync                全部數據在請求時寫入共享 
 async              NFS在寫入數據前能夠相應請求 
 secure             NFS經過1024如下的安全TCP/IP端口發送 
 insecure          NFS經過1024以上的端口發送 
 wdelay            若是多個用戶要寫入NFS目錄,則歸組寫入(默認) 
 no_wdelay      若是多個用戶要寫入NFS目錄,則當即寫入,當使用async時,無需此設置。 
 Hide                在NFS共享目錄中不共享其子目錄 
 no_hide           共享NFS目錄的子目錄 
 subtree_check   若是共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認) 
 no_subtree_check   和上面相對,不檢查父目錄權限 
 all_squash               共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。 
 no_all_squash         保留共享文件的UID和GID(默認) 
 root_squash             root用戶的全部請求映射成如anonymous用戶同樣的權限(默認) 
 no_root_squas         root用戶具備根目錄的徹底管理訪問權限 
 anonuid=xxx            指定NFS服務器/etc/passwd文件中匿名用戶的UID 

vi:編寫配置文件

/data01/w        10.0.0.41(rw,sync,all_squash)
/data01/r         172.16.1.0/24/(ro,async,no_all_squash)

 

c.建立存儲目錄

mkdir /data01/{r,w} -p  ;  chown nfsnobody.nfsnobody /data01/{r,w}

d.啓動服務程序

注意:先啓動rpc服務,再啓動nfs服務。

systemctl start rpcbind  
systemctl start nfs
systemctl reload nfs --- 平滑重啓

相同點:兩者都是使配置文件從新生效
不一樣點:
reload (從新加載),reload會從新加載配置文件,服務不會中斷。並且reload時會測試conf語法等,若是出錯會rollback用上一次正確配置文件保持正常運行。也叫平滑重啓,不會對已經鏈接的服務形成影響。
restart (重啓)(先stop後start),會重啓服務。這個重啓會形成服務一瞬間的中斷,若是配置文件出錯會致使服務啓動失敗,那就是更長時間的服務中斷了。
注意:修改配置文件前必定要先備份!爲了保證線上服務高可用,推薦使用reload

四.nfs安裝與部署—客戶端

a.軟件部署

I:安裝nfs服務

yum install  nfs-utils -y 

b.存儲設備掛載

backup服務器(10.0.0.41)
    mkdir /w -p
    mount -t nfs  10.0.0.31:/data01/w  /w

web01服務器(172.16.1.7)
    mkdir /r -p
    mount -t nfs  172.16.1.31:/data01/r  /r

五.nfs掛載操做

如何進行掛載操做

a.方法一: 編寫/etc/rc.local

I:把mount 的命令放到/etc/rc.d/rc.local 裏面去,vi /etc/rc.d/rc.local ,而後把mount   -t  nfs  172.16.1.31:data01/r    /r  這個命令塞進去。保存退出就行了

b.方法二:編寫/etc/fstab

I:172.16.1.31:/data01  /mnt   nfs     defaults        0 0

 

網絡自動掛載原理:

第一個歷程: 系統啓動開機自檢

第二個歷程: 加載系統掛載文件 /etc/fstab 沒法實現網絡掛載

第三個歷程: 啓動系統服務程序 network remote-fs.target(centos7) netfs(centos6)

第四個歷程: 特殊服務從新加載 /etc/fstab 實現網絡掛載

 

mount掛載參數信息:

-a:把/etc/fstab中列出的路徑所有掛載。

-t:須要mount的類型,如nfs等。

-r:將mount的路徑定爲read only

-v mount:過程的每個操做都有message傳回到屏幕上

rsize=n:(讀取內存空間大小)在NFS服務器讀取文件時NFS使用的字節數,默認值是1 024個字節。

wsize=n:(設置存儲空間大小)向NFS服務器寫文件時NFS使用的字節數,默認值是1 024個字節。

timeo=n:從超時後到第1次從新傳送佔用的1/7秒的數目,默認值是7/7秒

hard:使用硬掛載的方式掛載系統,該值是默認值,重複請求直到NFS服務器迴應。

intr:容許NFS中斷文件操做和向調用它的程序返回值,默認不容許文件操做被中斷。

 

如何卸載umount:

umount   -lf   /mnt   --- 強制卸載

-l  Lazy unmount    --- 懶惰卸載

-f  force                  --- 強制卸載

 

存儲服務掛載相關參數命令:

  rpcinfo             --- 查看nfs服務是否進行註冊 

  rpcinfo -p localhost/172.16.1.31

  showmount           --- 查看nfs服務存在哪些能夠掛載目錄

  showmount -e localhost/172.16.1.31

  exportfs            --- 臨時建立存儲目錄/ nfs服務平滑重啓

  exportfs -rv

  exportfs -o rw,sync,all_squash 172.16.1.0/24:/data100

  /var/lib/nfs/etab --- 存儲服務默認配置記錄文件(日誌文件)

  /etc/exports --- 存儲服務配置文件

  /proc/mounts --- 存儲客戶端默認掛載參數信息

存儲權限問題和什麼有關

存儲服務配置文件參數

存儲服務目錄權限有關 755

存儲服務目錄權限繼承 

存儲客戶端掛載參數

相關文章
相關標籤/搜索