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


1.什么是nfs,具體能干什么及使用環境?

nfs network file system網絡文件系統,能為不同主機之間,實現文件共享,在集群架構中使用。

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

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

   2.解決多台機器資源共享

   3.解決磁盤空間浪費

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

     2.CDN

3.nfs實現原理解析

 

 

本地文件操作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權限路徑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM