文章目錄
前言
一:理論概述
1.1:Glusterfs 簡介
- Glusterfs 文件系統是由 Gluster 公司的創始人兼首席技術官 Anand Babu Periasamy編寫。 一個可擴展的分佈式文件系統, 用於大型的、 分佈式的、 對大量數據進行訪問的應用。
- 它運行於廉價的普通硬件上, 並提供容錯功能。 它可以給大量的用戶提供總體性能較高的服務。
- Glusterfs 可以根據存儲需求快速調配存儲, 內含豐富的自動故障轉移功能, 且摒棄集中元數據服務器的思想。
- 適用於數據密集型任務的可擴展網絡文件系統, 免費開源。
- Gluster於 2011 年 10 月 7 日被 red hat 收購。
1.2:Glusterfs 特點
- Glusterfs 體系結構, 將計算、 存儲和 I/O 資源聚合到全局名稱空間中, 每臺服務器都被視爲節點, 通過添加附加節點或向每個節點添加額外存儲來擴展容量。 通過在更多節點之間部署存儲來提高性能。
- Glusterfs 支持基於文件的鏡像和複製、 分條、 負載平衡、 故障轉移、 調度、 磁盤緩存、存儲配額、 卷快照等。
- Glusterfs 各客戶端之間無連接, 本身依賴於彈性哈希算法, 而不是使用集中式或分佈式元數據模型。
- Glusterfs 通過各種複製選項提供數據可靠性和可用性: 複製卷、 分佈卷。
二:KVM高可用構建實操
2.1:環境
-
VMware軟件
-
操作系統 主機名/IP地址 主要軟件及版本 Centos7.6 node1/192.168.233.131 Glusterfs5 Centos7.6 node2/192.168.233.132 Glusterfs5 Centos7.6 node3192.168.233.133 Glusterfs5 Centos7.6 node4/192.168.233.128 Glusterfs5 Centos7.6 kvm(宿主機)/192.168.233.136 kvm\gluster-client() Centos7.6 kvm(虛擬機)/192.168.233.100
2.2:實驗目的
- 使用 KVM 及 Glusterfs 技術, 結合起來從而達到 kvm 高可用。
- 利用 Glusterfs 的分佈式複製卷, 對 kvm 虛擬機文件進行分佈存儲和冗餘功能。 分佈式複製卷主要用於需要冗餘的情況下把一個文件存放在兩個或以上的節點上,當其中一個節點數據丟失或者損壞之後, kvm 仍然能夠通過卷組找到另一節點上的虛擬機文件, 保證虛擬機正常運行。 當節點修復之後, Glusterfs 會自動同步同一組裏面有數據的節點數據。
2.3:實驗過程
2.3.1:構建GFS集羣
- 之前已經搭建過,參考之前的博客
- https://blog.csdn.net/CN_TangZheng/article/details/104367363
2.3.2:安裝KVM虛擬機
- 之前已經搭建過,參考之前的博客
- https://blog.csdn.net/CN_TangZheng/article/details/104349282
2.3.3:GFS集羣節點服務器添加磁盤
-
四個node節點都添加磁盤,大小爲20G,
-
格式化磁盤並掛載到/data目錄
'//因爲是繼承上一個試驗環境,所以新添加的磁盤,node1和node2爲/dev/sdf,node3和node4爲/dev/sde,我們需要分別進行格式化,在此僅展示/dev/sdf的格式化操作' [root@node1 ~]# fdisk /dev/sdf '//創建分區' n '//創建分區' p '//創建主分區' 回車 '//默認主分區1' 回車 '//默認塊大小' 回車 '//默認主分區大小' w '//保存分區信息' [root@node1 ~]# mkfs -t ext4 /dev/sdf1 '//格式化分區' [root@node1 ~]# mkdir /data '//創建掛載點' [root@node1 ~]# vim /etc/fstab '//設置自動掛載' '//尾行插入' /dev/sdf1 /data ext4 defaults 0 0 [root@node1 ~]# reboot [root@node1 ~]# df -hT '//查看是否掛載成功'
-
創建分佈式複製卷
[root@node1 ~]# gluster volume create kvmdata replica 2 node1:/data node2:/data node3:/data node4:/data force '//創建名爲kvmdata的分佈式複製卷' [root@node1 ~]# gluster volume start kvmdata '//啓動kvmdata卷' [root@node1 ~]# gluster volume info kvmdata '//查看kvmdata卷'
2.3.4:KVM宿主機部署成GFS客戶端
-
修改主機名,並安裝GFS軟件
[root@localhost ~]# hostnamectl set-hostname kvm '//修改主機名' [root@localhost ~]# su [root@kvm ~]# cd /opt [root@kvm opt]#
將gfsrepo 軟件上傳到/opt目下
[root@kvm opt]# vim /etc/yum.repos.d/abc.repo '//編輯本地yum源倉庫' [abc] name=test baseurl=file:///mnt enabled=1 gpgcheck=0 [GLFS] name=glfs baseurl=file:///opt/gfsrepo gpgcheck=0 enabled=1 [root@kvm opt]# yum clean all [root@kvm opt]# yum makecache [root@kvm opt]# yum -y install glusterfs glusterfs-fuse '//安裝gfs軟件'
-
修改本地域名解析文件
[root@kvm opt]# vim /etc/hosts '//尾行添加' 192.168.233.131 node1 192.168.233.132 node2 192.168.233.133 node3 192.168.233.128 node4
-
永久掛載GFS文件系統
[root@kvm opt]# mkdir /kvmdata [root@kvm opt]# vim /etc/fstab '//尾行添加' node1:kvmdata /kvmdata glusterfs defaults,_netdev 0 0
-
重啓並查看是否掛載成功
[root@kvm opt]# reboot [root@kvm ~]# df -hT 。。。省略內容 node1:kvmdata fuse.glusterfs 40G 489M 38G 2% /kvmdata '//掛載成功,因爲是分佈式複製卷,所以原本的20G大小變爲了40G' 。。。省略內容
2.4:重新安裝一個KVM虛擬機
-
查看之前的博客,裏面有詳細操作步驟
-
其中有如下幾個步驟變化
-
創建kvm虛擬機要用的文件夾的變化
[root@kvm ~]# mkdir /kvmdata/iso '//上傳鏡像用' [root@kvm ~]# mkdir /kvmdata/store '//kvm虛擬機存儲用' [root@kvm ~]# cd /data_kvm/iso [root@kvm iso]# cp CentOS-7-x86_64-DVD-1810.iso /kvmdata/iso/ '//複製鏡像到/kvmdata/iso中'
-
創建存儲池的時候選擇上方的 /kvmdata/iso 和 /kvmdata/store ,如下圖
-
接下來的步驟相同,直接創建虛擬機即可
三:高可用測試
3.1:驗證存儲
-
在四臺節點上查看目錄裏是否存在虛擬機文件。可以看出虛擬機文件已經存放在第二組node3,node4裏
-
[root@node1 ~]# ll /data/store/ 總用量 0 [root@node2 ~]# ll /data/store/ 總用量 0 [root@node3 ~]# ll /data/store/ 總用量 10487624 -rw------- 2 qemu qemu 10739318784 2月 18 20:41 kvmdata-store.qcow2 [root@node4 ~]# ll /data/store/ 總用量 10487624 -rw------- 2 qemu qemu 10739318784 2月 18 20:41 kvmdata-store.qcow2 '//鏡像文件存放在第一組' [root@node1 ~]# ll /data/iso/ 總用量 4481032 -rwxr-xr-x 2 qemu qemu 4588568576 2月 18 20:19 CentOS-7-x86_64-DVD-1810.iso [root@node2 ~]# ll /data/iso/ 總用量 4481032 -rwxr-xr-x 2 qemu qemu 4588568576 2月 18 20:19 CentOS-7-x86_64-DVD-1810.iso [root@node3 ~]# ll /data/iso/ 總用量 0 [root@node4 ~]# ll /data/iso/ 總用量 0 '//分佈式複製卷存儲成功'
3.2:破壞實驗
- 關閉node3,我們重啓發現kvm虛擬機工作正常
- 關閉node4,我們重啓kvm虛擬機,發現無法進行操作,所有命令都識別不了