linux集羣架構-nfs(網絡文件系統)

1.什麼是nfs,具體能幹什麼及使用環境?css

nfs network file system網絡文件系統,能爲不一樣主機之間,實現文件共享,在集羣架構中使用。linux

2.nfs能解決什麼問題及注意事項?web

功能:1.解決多臺機器靜態資源一致性問題shell

   2.解決多臺機器資源共享vim

   3.解決磁盤空間浪費windows

注意事項:1.添加共享存儲,只會帶來網站的訪問延時和消耗,並不會增長網站訪問速度。後端

     2.CDN緩存

3.nfs實現原理解析bash

 

 

本地文件操做1.當用戶執行mkdir命令,bashshell沒法完成該命令操做,會將其翻譯給內核服務器

      2.kernel內核解析完成後會驅動對應的磁盤設備,完成文件目錄的建立

NFS實現原理 1.NFS客戶端執行增、刪等操做,客戶端會使用不一樣的函數對該操做進行封裝。(windows linux mac)
         2.NFS客戶端會經過TCP/IP的方式傳遞給NFS服務端。(可靠)
         3.NFS服務端接收到請求後,會先調用portmap進程進行端口映射。
         4.nfsd進程用於判斷NFS客戶端是否擁有權限鏈接NFS服務端。
         5.Rpc.mount進程判斷客戶端是否有對應的權限進行驗證。讀  寫
         6.idmap進程實現用戶映射和壓縮。
         7.最後NFS服務端會將客戶端的函數轉換爲本地能執行的命令,而後將命令傳遞至內核,由內核驅動硬件
   注意:rpc是一個遠程過程調用,那麼使用nfs必須有rpcbind服務
7.安裝配置nfs服務

1.安裝

[root@nfs ~]# yum install nfs-utils -y

2.配置

[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,all_squash,anonuid=666,anongid=666)
3.根據配置初始化環境

[root@nfs data]# groupadd -g 666 www
[root@nfs data]# useradd -u666 -g666 www
[root@nfs data]# id www
uid=666(www) gid=666(www) groups=666(www)
[root@nfs data]# chown -R www.www /data/
4.啓動

[root@nfs ~]# systemctl enable nfs   #加入開機自啓動
[root@nfs ~]# systemctl start nfs       #啓動服務

5.客戶端

[root@backup ~]# yum install nfs-utils -y

[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

[root@backup ~]# showmount -e 172.16.1.31  #查看
Export list for 172.16.1.31:
/data 172.16.1.0/24

客戶端使用(必定要與服務端使用的匿名用戶一致

[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u666 -g666 www
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /media/  #掛載,服務端ip地址爲172.16.1.31
6.nfs相關的配置參數
nfs共享參數        參數做用
rw*                讀寫權限 (最多)
ro                只讀權限 (只但願看,不但願寫)

root_squash        當NFS客戶端以root管理員訪問時,映射爲NFS服務器的匿名用戶nfsnobody(不經常使用)
no_root_squash    當NFS客戶端以root管理員訪問時,映射爲NFS服務器的root管理員(不經常使用)
no_all_squash    不管NFS客戶端使用什麼帳戶訪問,都不進行用戶壓縮  ( 後面講雲計算課程會用上 )
all_squash        不管NFS客戶端使用什麼帳戶訪問,均映射爲NFS服務器的匿名用戶(經常使用)
sync*            同時將數據寫入到內存與硬盤中,保證不丟失數據
async            優先將數據保存到內存,而後再寫入硬盤;這樣效率更高,但可能會丟失數據
anonuid*        配置all_squash使用,指定NFS的用戶UID,必須存在系統
anongid*        配置all_squash使用,指定NFS的用戶UID,必須存在系統

7.nfs如何共享多個文件

[root@nfs ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    /data_2 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

ps:客戶端分別掛載在不一樣目錄下

8.NFS優缺點,侷限性及應用建議

優勢:1.NFS簡單易用,方便部署,數據可靠,服務穩定,知足中小企業的需求

   2.NFS的數據都在文件系統之上,全部的數據都是能看的見的

侷限性:1.存在單點故障,自己NFS不支持高可用,也不支持集羣

    2.NFS數據都是明文,並不對數據作任何校驗,也沒有密碼驗證(建議內網使用)

應用建議:1.生產場景應將靜態數據(jpg\png\mp4\avi\css\js)儘量放置CDN場景進行環境,以此來減小後端存儲壓力

     2.若是沒有緩存或架構,代碼等,自己歷史遺留的問題太大,再多存儲也沒意義

9.實現開機自動掛載(由於服務器不重啓)  
    [root@web01 ~]# cat /etc/fstab
    172.16.1.31:/data              /media          nfs     defaults        0 0
常見錯誤:
PS:  若是nfs服務端出現問題:  客戶端重啓則會沒法啓動成功
            1.等待1分38s  自動進入系統
            2.進入單用戶模式,註釋開機自啓動nfs
            3.將nfs恢復正常

錯誤的示範
 #訪問被拒絕 (沒有容許該網段訪問)
  [root@backup ~]# mount -t nfs 10.0.0.31:/data /media/
  mount.nfs: access denied by server while mounting 10.0.0.31:/data
  #可以鏈接,可是權限被拒絕
   [root@backup mnt]# touch file
   touch: cannot touch ‘file’: Permission denied

PS:ls /var/lib/nfs/etab    查看nfs權限路徑

相關文章
相關標籤/搜索