1. 程式人生 > >Linux(10):期中架構(2)--- NFS存儲服務

Linux(10):期中架構(2)--- NFS存儲服務

fsd ini nfs服務 訪問控制 touch llb src 一次 註意

1. 共享存儲服務概念:

# NFS是Network File System的縮寫,中文意思是網絡文件系統,
# 它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或目錄。

2. NFS共享存儲服務的應用:

# 將數據存儲到一臺服務器上,實現數據統一一致,共享訪問
# NFS存儲服務器中主要存儲哪些信息:用戶上傳的圖片 音頻 視頻 附件等信息
# NFS服務是分為服務端和客戶端
# 存儲服務器:NFS服務端   網站web服務器:NFS客戶端

# 實現共享存儲好處:
01. 實現數據統一一致
02. 節省網站磁盤資源
03. 節省網站訪問帶寬

3. NFS共享存儲服務的原理:

①. nfs服務端創建共享存儲目錄
②. nfs客戶端創建遠程掛載點目錄
③. nfs客戶端進行遠程掛載
④. 實現客戶端數據信息統一一致

4. NFS服務重要概念說明:

4.1 NFS共享文件系統RPC服務介紹

技術分享圖片

4.2 NFS共享文件系統RPC服務由來:

# NFS服務啟動進程和端口過程,需要由rpc服務統一管理

5. NFS服務部署實踐過程

5.1 NFS服務端部署流程:

# 第一步:檢查服務軟件是否安裝
[[email protected] ~]# rpm -qa|egrep "nfs-utils|rpcbind"    # 檢查 nfs 和 rpc 服務是否已經安裝 
# 第二步:進行軟件服務安裝 [[email protected] ~]# yum install -y nfs-utils rpcbind ... [[email protected] ~]# rpm -qa|egrep "nfs-utils|rpcbind" nfs-utils-lib-1.1.5-13.el6.x86_64 rpcbind-0.2.0-16.el6.x86_64 nfs-utils-1.2.3-78.el6_10.1.x86_64 [[email protected] ~]# # 補充說明:nfs-utils 和 rpcbind兩個軟件大禮包
rpm -ql nfs-utils # 查看軟件包內容 的命令 /etc/rc.d/init.d/nfs <-- nfs服務啟動腳本文件 /usr/sbin/showmount <-- 檢查nfs服務共享目錄信息 rpm -ql rpcbind /etc/rc.d/init.d/rpcbind <-- rpcbind服務啟動腳本文件 /usr/sbin/rpcbind <-- 檢查nfs服務向rpc服務註冊信息 # 第三步:編寫nfs服務配置文件 [[email protected] ~]# ll /etc/exports -rw-r--r--. 1 root root 0 Jan 12 2010 /etc/exports [[email protected] ~]# vim /etc/exports # 編寫服務配置文件; /etc/exports ---> 系統默認的配置共享存儲的文件,NFS服務會識別這個文件實現共享存儲 [[email protected] ~]# cat /etc/exports /data 172.16.1.0/24(rw,sync) # /data 表示數據存儲的目錄; 172.16.1.0/24 表示允許哪個網段的主機可以掛載到我這臺共享服務器上; (rw,rsync) ---> rw 表示共享目錄是可讀可寫的,rsync 是一個同步參數; 172.16.1.0/24 和 (rw,sync) 之間不能有空格 [[email protected] ~]# # 說明:配置文件信息 指定共享目錄 指定共享目錄訪問控制網段或主機信息(共享目錄參數信息) # 第四步:創建nfs服務共享目錄,並且進行授權 [[email protected] ~]# mkdir /data [[email protected] ~]# chown -R nfsnobody.nfsnobody /data/ [ro[email protected] ~]# # 第五步:啟動nfs和rpc服務 [[email protected] ~]# /etc/init.d/rpcbind start # 要先啟動 rpc 這個“中介”服務 Starting rpcbind: [ OK ] [[email protected] ~]# /etc/init.d/nfs start # 再啟動 nfs 服務 Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] [[email protected] ~]# # 第六步:進行服務配置檢查 # 檢查 nfs 是否向 rpc 服務註冊 [[email protected] ~]# rpcinfo -p 172.16.1.31 # 檢查本地主機(172.16.1.31,也可用10.0.0.31)是否已經向 rpc 註冊 ... # 檢查是否存在可用的共享目錄 [[email protected] ~]# showmount -e 10.0.0.31 # showmount -e 服務端的地址 ---> 檢查是否有可用的共享目錄 Export list for 10.0.0.31: /data 172.16.1.0/24 [[email protected] ~]#

5.2 NFS客戶端部署流程:

# 第一步:檢查服務軟件是否安裝
[[email protected] ~]# rpm -qa|egrep "nfs-utils|rpcbind"
[[email protected] ~]# 

# 第二步:進行軟件服務安裝


# 第三步:進行共享目錄掛載
[[email protected] ~]# mount -t nfs 172.16.1.31:/data /mnt        # -t nfs 表示掛載 nfs 文件系統類型 ; 172.16.1.31:/data ---> 這個服務器上的 /data 目錄; /mnt 表示掛載到 /mnt 目錄
[[email protected] ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3          8.8G  1.5G  6.9G  18% /
tmpfs              238M     0  238M   0% /dev/shm
/dev/sda1          190M   40M  141M  22% /boot
172.16.1.31:/data  8.8G  1.5G  6.9G  18% /mnt        # 共享目錄掛載到了 /mnt 
[[email protected] ~]# 

# 第四步:進行共享存儲測試
# 網站服務器01上的操作
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# ll
total 0
[[email protected] mnt]# touch test.txt
[[email protected] mnt]# ll 
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  3 16:58 test.txt
[[email protected] mnt]# 

# 存儲服務器上的操作
[[email protected] ~]# ll /data/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  3 16:58 test.txt    # 存儲在 網站服務器的 /mnt 目錄下的內容 就相當於 存儲在了 存儲服務器的 /data目錄下
[[email protected] ~]# 

# 網站web服務器02 上的操作
[[email protected] ~]# ll /mnt/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  3 16:58 test.txt    # 在 web02 上也能看到 web01 上的數據
[[email protected] ~]# 

# 說明:在web01的mnt目錄中創建的數據,在nfs和web02服務器上都可以看到,即已經實現數據共享存儲
        客戶端上不需要啟動NFS服務

# 共享文件系統的工作原理(服務端3步 客戶端3步)
    # 服務端做了三件事:
    1. 啟動rpcbind服務,創建中介
    2. 啟動nfs服務,創建“房源”信息
    3. 將“房源”信息向中介進行註冊,在nfs服務穩定運行過程中,“房源”信息只註冊一次
    
    # 客戶端做了三件事:
    1. 啟動rpcbind服務(可選)
    2. 確保客戶端和服務端網絡連接建立成功
    3. 執行mount命令進行網絡存儲掛載

6. NFS服務部署進程信息詳述

[[email protected] ~]# ps -ef|egrep "rpc|nfs"
rpc        1564      1  0 09:32 ?        00:00:00 rpcbind
rpc        1065      1  0 09:32 ?        00:00:00 rpc statd        # <- 檢查數據存儲一致性
root       4736      2  0 21:31 ?        00:00:00 [rpciod/0]    
root       5363      1  0 21:47 ?        00:00:00 rpc.rquotad      # <- 磁盤配額進程(remote quote server)
root       5368      1  0 21:47 ?        00:00:00 rpc.mountd       # <- 權限管理驗證等(NFS mount daemon)
root       5375      2  0 21:47 ?        00:00:00 [nfsd4]
root       5376      2  0 21:47 ?        00:00:00 [nfsd4_callbacks]
root       5377      2  0 21:47 ?        00:00:00 [nfsd]           # <- NFS主進程
root       5378      2  0 21:47 ?        00:00:00 [nfsd]           # <- NFS主進程
root       5379      2  0 21:47 ?        00:00:00 [nfsd]           # <- NFS主進程,管理登入,ID身份判別等。
root       5380      2  0 21:47 ?        00:00:00 [nfsd]        
root       5381      2  0 21:47 ?        00:00:00 [nfsd]        
root       5382      2  0 21:47 ?        00:00:00 [nfsd]        
root       5383      2  0 21:47 ?        00:00:00 [nfsd]        
root       5384      2  0 21:47 ?        00:00:00 [nfsd]        # <- NFS主進程
root       5415      1  0 21:47 ?        00:00:00 rpc.idmapd    # <- name mapping daemon
                                                                # 用戶壓縮/用戶映射(記錄)
root       5512   4670  0 22:02 pts/0    00:00:00 egrep rpc|nfs

7. NFS共享存儲服務配置說明

7.1 NFS共享文件系統配置文件格式說明:

# NFS共享目錄:
    為NFS服務器端要共享的實際目錄,要用絕對路徑,如(/data)。
    註意共享目錄的本地權限,如果需要讀寫共享,一定要讓本地目錄可以被NFS客戶端的用戶(nfsnobody)讀寫。

# NFS客戶端地址:
    為NFS服務器端授權的可訪問共享目錄的NFS客戶端地址,可以為單獨的IP地址或主機名、域名等,也可以為整個網段地址。
    還可以用“*”來匹配所有客戶端服務器,這裏所謂的客戶端一般來說是前端的業務的業務服務器,例如:web服務。具體說明見表10-3
    權限參數集
    對授權的NFS客戶端的訪問權限設置。參數具體說明見後文。
    nfs權限(共享目錄【借給你手機】) nfs配置的/etc/exports /data 172.16.1.0/24(rw)
    本地文件系統權限(【手機密碼不告訴你】) 掛載目錄的權限rwxr-xr-x root root /data

NFS共享配置文件語法格式:

技術分享圖片

同步和異步(sync 和 async):

技術分享圖片

NFS客戶端地址配置說明:

技術分享圖片

Linux(10):期中架構(2)--- NFS存儲服務