使用NFS作為Glance儲存後端
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的埠對映的守護程序及其相關文件、執行檔案等。
[[email protected] ~]# rpm -qa | grep nfs-utils nfs-utils-1.3.0-0.61.el7.x86_64 [[email protected] ~]# rpm -qa | grep rpcbind rpcbind-0.2.0-47.el7.x86_64 [[email protected] ~]#
建立一個目錄作為NFS的共享目錄
[[email protected] ~]# mkdir /mnt/test [[email protected] ~]# ll /mnt/ total 0 drwxr-xr-x 2 root root 6 May 7 12:58 test
建立完共享目錄後,編輯NFS服務的配置檔案/etc/exports
[[email protected] ~]# cat /etc/exports /mnt/test 10.60.3.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501) [[email protected] ~]# exportfs -r [[email protected] ~]#
配置檔案說明:
● /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的相關服務,並配置開機啟動。
[email protected] ~]# systemctl start rpcbind [[email protected] ~]# systemctl start nfs [[email protected] ~]# systemctl enable rpcbind [[email protected] ~]# 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. [[email protected] ~]#
nfs-server端檢視可掛載目錄
[[email protected] ~]# showmount -e 10.60.3.21 Export list for 10.60.3.21: /mnt/test 10.60.3.0/24 [[email protected] ~]#
至此,NFS服務的Server端配置完畢,接下來要讓Controller節點作為NFS的Client端,配置Glance服務的後端儲存使用NFS服務
配置NFS作為Glance後端儲存
Controller節點,檢視是否安裝了NFS服務的客戶端
[[email protected] ~]# 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服務了
[[email protected] ~]# mount -t nfs 10.60.3.20:/mnt/test /var/lib/glance/images/ [[email protected] ~]# 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 [[email protected] ~]#
修改配置
在做完掛載操作後,此時Glance服務還不能正常使用,若使用glance image-create命令上傳映象的話,會報錯,因為此時images目錄的使用者與使用者組不是glance,而是root,需要把images目錄的使用者與使用者組進行修改
[[email protected] images]# cd /var/lib/glance/ [[email protected] glance]# chown glance:glance images/ [[email protected] glance]# ll total 0 drwxr-xr-x 2 glance glance 6 May 7 13:09 images [[email protected] glance]#
測試驗證
這個時候,Glance服務就可以正常使用了,使用centos映象進行測試
[[email protected] 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目錄下的檔案
[[email protected] images]# cd /var/lib/glance/images/ [[email protected] images]# ll total 498496 -rw-r----- 1 glance glance 510459904 May 7 13:19 2afee0d2-cb11-47e0-890f-c6f49c089a04 [[email protected] images]#
然後回到nfs-server節點,檢視/mnt/test下的檔案
[[email protected] ~]# cd /mnt/test/ [[email protected] test]# ll total 498496 -rw-r----- 1 161 161 510459904 May 7 13:19 2afee0d2-cb11-47e0-890f-c6f49c089a04 [[email protected] test]#
檔案的ID相同,驗證NFS作為Glance映象服務的後端儲存成功。
- Webpack學習系列 | Webpack 5 整合 HTML 外掛高效解決檔案路徑問題
- 程式設計師如何利用技術能力變現
- Unity3D學習筆記8——GPU例項化(3)
- 分散式事務(Seata)原理 詳解篇,建議收藏
- Spring 核心概念
- github package的使用教程
- ReentrantLock 公平鎖原始碼 第2篇
- 庖丁解牛斐波拉契數列和揹包問題——詳細解析兩個問題優化過程,帶你從最基本的問題看懂動態規劃!!!
- 0016:單源最短路徑(dijkstra演算法)
- Elasticsearch深度應用(下)
- Properties集合中的方法store和Properties集合中的方法load
- 寫出個靈活的系統竟然可以如此簡單!小白也能寫出高階的Java業務!
- 【docker專欄1】docker解決的實際問題及應用場景
- Linux系列之文字操作命令
- JAVA中簡單的for迴圈竟有這麼多坑,你踩過嗎
- Spring框架系列(13) - SpringMVC實現原理之DispatcherServlet的初始化過程
- Kafka KRaft模式探索
- Spring框架系列(3) - 深入淺出Spring核心之控制反轉(IOC)
- 面試突擊59:一個表中可以有多個自增列嗎?
- 前端學習 linux —— 第一篇