NFS服務介紹
NFS網路檔案系統提供了一種在類UNIX系統上共享檔案的方法。目前NFS有3個版本:NFSv2、NFSv3、NFSv4。CentOS7預設使用NFSv4提供服務,優點是提供了有狀態的連線,更容易追蹤連線狀態,增強安全性。NFS監聽在TCP 2049埠上。客戶端通過掛載的方式將NFS伺服器端共享的資料目錄掛載到本地目錄下。在客戶端看來,使用NFS的遠端檔案就像是在使用本地檔案一樣,只要具有相應的許可權就可以使用各種檔案操作命令(如cp、cd、mv和rm等),對共享的檔案進行相應的操作。Linux作業系統既可以作為NFS伺服器也可以作為NFS客戶,這就意味著它可以把檔案系統共享給其他系統,也可以掛載從其他系統上共享的檔案系統。
為什麼需要安裝NFS服務?當伺服器訪問流量過大時,需要多臺伺服器進行分流,而這多臺伺服器可以使用NFS服務進行共享。NFS除了可以實現基本的檔案系統共享之外,還可以結合遠端網路啟動,實現無盤工作站(PXE啟動系統,所有資料均在伺服器的磁碟陣列上)或瘦客戶工作站(本地自動系統)。NFS應用場景多為高可用檔案共享,多臺伺服器共享同樣的資料,但是它的可擴充套件性比較差,本身高可用方案不完善。取而代之,資料量比較大的可以採用MFS、TFS、HDFS等分散式檔案系統。
NFS服務安裝與配置
此處nfs-server節點使用的基礎映象為CentOS7.9,該基礎映象中已經安裝了NFS服務,檢視當前安裝的NFS服務
① nfs-utils:包含NFS伺服器端守護程式和NFS客戶端相關工具。
② rpcbind:提供RPC的埠對映的守護程式及其相關文件、執行檔案等。
[root@nfs-serverr ~]# rpm -qa | grep nfs-utils
nfs-utils-1.3.0-0.61.el7.x86_64
[root@nfs-server ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-47.el7.x86_64
[root@nfs-server ~]#
建立一個目錄作為NFS的共享目錄
[root@nfs-server ~]# mkdir /mnt/test
[root@nfs-server ~]# ll /mnt/
total 0
drwxr-xr-x 2 root root 6 May 7 12:58 test
建立完共享目錄後,編輯NFS服務的配置檔案/etc/exports
[root@nfs-server ~]# cat /etc/exports
/mnt/test 10.60.3.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
[root@nfs-server ~]# exportfs -r
[root@nfs-server ~]#
配置檔案說明:
● /mnt/test:為共享目錄(若沒有這個目錄,請新建一個)。
● 10.60.3.0/24:可以為一個網段,一個IP,也可以是域名。域名支援萬用字元,例如,*.qq.com。
● rw:read-write,可讀寫。
● ro:read-only,只讀。
● sync:檔案同時寫入硬碟和記憶體。
● async:檔案暫存於記憶體,而不是直接寫入記憶體。
● wdelay:延遲寫操作。
● no_root_squash:NFS客戶端連線服務端時,如果使用的是root,那麼對服務端共享的目錄來說,也擁有root許可權。顯然開啟這項是不安全的。
● root_squash:NFS客戶端連線服務端時,如果使用的是root,那麼對服務端共享的目錄來說,擁有匿名使用者許可權,通常它將使用nobody或nfsnobody身份。
● all_squash:不論NFS客戶端連線服務端時使用什麼使用者,對服務端共享的目錄來說,都擁有匿名使用者許可權。
● anonuid:匿名使用者的UID(User Identification,使用者身份證明)值,可以在此處自行設定。
● anongid:匿名使用者的GID(Group Identification,共享資源系統使用者的群體身份)
NFS服務啟動
nfs-server端命令啟動NFS的相關服務,並配置開機啟動。
root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl enable rpcbind
[root@nfs-server ~]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@controller ~]#
nfs-server端檢視可掛載目錄
[root@nfs-server ~]# showmount -e 10.60.3.21
Export list for 10.60.3.21:
/mnt/test 10.60.3.0/24
[root@nfs-server ~]#
至此,NFS服務的Server端配置完畢,接下來要讓Controller節點作為NFS的Client端,配置Glance服務的後端儲存使用NFS服務
配置NFS作為Glance後端儲存
Controller節點,檢視是否安裝了NFS服務的客戶端
[root@controller ~]# rpm -qa |grep nfs-utils
nfs-utils-1.3.0-0.61.el7.x86_64
掛載目錄
在掛載目錄之前,必須要弄清楚一件事情,就是Glance服務的後端儲存在哪裡,或者說,使用glance image-create命令上傳的映象會被存放到哪裡。映象會被存放到/var/lib/glance/images目錄下,關於這個路徑,感興趣的讀者可以自行上傳映象測試
知道了Glance的儲存路徑,就可以掛載該目錄到NFS服務了
[root@controller ~]# mount -t nfs 10.60.3.20:/mnt/test /var/lib/glance/images/
[root@controller ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 100G 11G 90G 11% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 17M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop0 4.2G 4.2G 0 100% /opt/centos
/dev/loop1 3.6G 3.6G 0 100% /opt/iaas
tmpfs 783M 0 783M 0% /run/user/0
10.60.3.20:/mnt/test 100G 967M 100G 1% /var/lib/glance/images
[root@controller ~]#
修改配置
在做完掛載操作後,此時Glance服務還不能正常使用,若使用glance image-create命令上傳映象的話,會報錯,因為此時images目錄的使用者與使用者組不是glance,而是root,需要把images目錄的使用者與使用者組進行修改
[root@controller images]# cd /var/lib/glance/
[root@controller glance]# chown glance:glance images/
[root@controller glance]# ll
total 0
drwxr-xr-x 2 glance glance 6 May 7 13:09 images
[root@controller glance]#
測試驗證
這個時候,Glance服務就可以正常使用了,使用centos映象進行測試
[root@controller images]# glance image-create --disk-format qcow2 --container-format bare --name centos --progress --file ./CentOS_7.5_x86_64_XD.qcow2
[=============================>] 100%
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 3d3e9c954351a4b6953fd156f0c29f5c |
| container_format | bare |
| created_at | 2022-05-07T13:18:54Z |
| disk_format | qcow2 |
| id | 2afee0d2-cb11-47e0-890f-c6f49c089a04 |
| min_disk | 0 |
| min_ram | 0 |
| name | centos |
| owner | bf36698d9afd45c4b46c1933469a9101 |
| protected | False |
| size | 510459904 |
| status | active |
| tags | [] |
| updated_at | 2022-05-07T13:19:52Z |
| virtual_size | None |
| visibility | shared |
+------------------+--------------------------------------+
可以看到上傳映象成功。檢視images目錄下的檔案
[root@controller images]# cd /var/lib/glance/images/
[root@controller images]# ll
total 498496
-rw-r----- 1 glance glance 510459904 May 7 13:19 2afee0d2-cb11-47e0-890f-c6f49c089a04
[root@controller images]#
然後回到nfs-server節點,檢視/mnt/test下的檔案
[root@nfs-server ~]# cd /mnt/test/
[root@nfs-server test]# ll
total 498496
-rw-r----- 1 161 161 510459904 May 7 13:19 2afee0d2-cb11-47e0-890f-c6f49c089a04
[root@nfs-server test]#
檔案的ID相同,驗證NFS作為Glance映象服務的後端儲存成功。