作者:田逸(vx:formyz)
创建多Ceph Pool的目的
Proxmox VE集群上的虚拟机运行在高速磁盘NVME,而虚拟机附属的数据,则指定到低速、廉价、容量大的磁盘空间。为了高可用性,充分利用资源,需要让除Proxmox VE宿主二外的数据都运行在Ceph分布式存储上。
解决思路
把高速的NVMe(或者其它固态磁盘SSD)多磁盘做成一个Ceph Pool,大容量多磁盘组成另外一个Ceph Pool。
测试环境
- 三台物理服务器,插入一块或NVMe磁盘(容量不等不影响使用和性能),数块SATA 低速硬盘,大致配置图所示。
- 平台版本为Proxmox VE 7.0,安装好Ceph,版本为16.2.6。
- 服务器集群已经做好,需要使用的磁盘已经全部初始化。
实验步骤
大致可分为:创建不同类型的Ceph OSD,创建Ceph crush rule,创建Ceph Pool,创建虚拟机及给虚拟机分配磁盘空间,功能验证等几个步骤。
创建不同类型Ceph OSD
- 创建SATA磁盘Ceph OSD,设备类型指定为HDD。登录Proxmox VE Web管理后台,选定物理节点,创建OSD,具体操作如图所示。
重复这个操作,将所有剩余的空闲SATA创建好OSD待用。
- 创建NVMe磁盘Ceph OSD,设备类型指定为NVMe,操作如下图所示。
重复这个步骤,将所有剩余的NVMe创建好OSD待用。
- 验证所创建的Ceph OSD。Proxmox VE 宿主系统Debian执行命令 ceph osd tree查看,生成的Ceph OSD如下:
root@pve3:~# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 9.18233 root default
-7 3.68178 host pve1
0 hdd 1.81879 osd.0 up 1.00000 1.00000
5 nvme 1.86299 osd.5 up 1.00000 1.00000
-3 2.75027 host pve2
1 hdd 1.81879 osd.1 up 1.00000 1.00000
4 nvme 0.93149 osd.4 up 1.00000 1.00000
-5 2.75027 host pve3
2 hdd 1.81879 osd.2 up 1.00000 1.00000
3 nvme 0.93149 osd.3 up 1.00000 1.00000
创建Ceph OSD Crush Rule
创建两个Ceph OSD Crush Rule,一个用于标识NVMe,另一个用于标识HDD。创建Crush规则暂时不能在Proxmox VE Web管理后台进行,需要在其宿主系统Debian命令行下手动执行,所敲的命令行如下:
ceph osd crush rule create-replicated rule-nvme default host nvme
ceph osd crush rule create-replicated rule-hdd default host hdd
执行完毕后,再继续执行如下指令进行验证:
root@pve3:~# ceph osd crush rule ls
replicated_rule
rule-nvme
rule-hdd
创建Ceph Pool
切换到Proxmox VE Web管理后台,选定节点,创建Ceph。这里我要创建两个Ceph Pool,把不同的OSD归类到不同的Pool中。
- 创建NVMe磁盘Pool。命名Pool为“NVMe_pool”,选择“Crush Rule”为“nvme-rule”,单击按钮“创建”,如下图所示:
- 创建SATA磁盘Pool。命名Pool为“HDD_pool”,选择“Crush Rule”为“hhd-rule”,单击按钮“创建”,如下图所示:
- 验证Ceph Pool的有效性。在Proxmox VE Web管理后台执行一个“卷迁移”操作,如下图所示。
切换到Proxmox VE宿主系统Debian命令行,执行“ceph osd pool stats”,查看其输入,如下图所示:
功能测试
在Proxmox VE集群创建虚拟机,磁盘存储指定“NVMe-pool”,如下图所示:
创建好虚拟机,并在其上安装操作系统,我测试用了Centos ,安装完系统以后,再给此虚拟机新增磁盘,“存储”指定“HDD-pool”,如下图所示:
进入虚拟机系统Centos,并把分配的磁盘创建文件系统,挂接上,手动创建一些文件或者目录。
继续在Proxmox VE Web管理后台,把虚拟机或者容器加入到高可用集群。
关闭Proxmox VE集群中刚创建并安装好系统的虚拟机所在的物理服务器,从Proxmox VE Web管理后台查看运行状态,等待节点成离线状态时,看虚拟机是否漂移?
经过几分钟的耐心等待,
虚拟机及容器漂移到正常运行的物理节点上。