使用PVE部署超融合基础设施。
环境简介
PVE安装
安装Debian
下载镜像debian-12.11.0-amd64-netinst.iso直接安装即可,我这里选了安装GUI xfce,实际上可以不装。
装GUI的好处是后面对网络进行配置时可以通过访问127.0.0.1:8006
在WebUI中直接更改网路配置。
安装PVE
安装前需要禁用主机的SecureBoot安全启动。
否则在安装PVE的内核后将无法启动。
基本上和在基于 arm 架构的服务器上安装 PVE的流程一样,不一样的地方如下:
- 插入桥接模块、配置网络、DNS、检查主机名部分都一样,参考上述文章即可。
- 添加镜像源:添加Key:
1
echo "deb [arch=amd64] http://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
更新:1
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
1
apt update
- 安装内核安装好后重启
1
apt install -y proxmox-default-kernel
- 重启后安装PVE核心安装完之后打开
1
apt install -y proxmox-ve postfix open-iscsi chrony
https://[IP]:8006
即可看到WebUI,用户名和密码就是root和root密码。 - 移除不再使用的Debian内核和
os-prober
更新Grub2配置文件:1
apt remove -y linux-image-amd64 'linux-image-6.1*' os-prober
1
update-grub
依次对其他节点按照上面流程安装PVE。
超融合
我这里每台主机有一块双口的万兆光口网卡,按照规划,其中一个光口专门用作存储的后端接口和故障转移接口,不配置网关;另外一个光口用作业务网络接口和管理口,同时承载网络业务和Web管理。
创建集群
- 打开数据中心-集群-创建集群
- 复制加入信息
在其他节点上点加入集群,然后粘贴加入信息
我这里会显示加入失败但是实际上加入成功了
Ceph部署
创建好集群后此时可以开始进行部署Ceph了。
注意:Ceph不支持RAID卡做存储后端,如果有RAID卡需要设置为单盘RAID0或者透传模式。
- 看一下当前磁盘状态,我这里测试机准备了三块500G的固态,如果磁盘上还有其他分区,需要先擦除磁盘
- 选择主机-Ceph-安装Ceph
- 选择Ceph最新版和无订阅存储库,并勾选高级
- 输入“Y”继续安装
- 配置Ceph集群,如果Ceph集群还需要对外提供服务则Public Network选择外部接口,我这里不需要,所以Public和Private接口都使用VLAN2714的内部地址
- 创建OSD,一块硬盘就是一个OSD
- 创建资源池,用于存储虚拟机的磁盘镜像和CT容器镜像
大多数设置保持默认即可 - 创建CephFS,用于存储CT模板、ISO镜像等内容,如果不需要可以不创建,但是创建了之后CT模板和ISO镜像等内容可以在整个集群内一起使用
先创建元数据服务器MDS,每个节点都至少添加一个
上面选择创建CephFS,填写名称,其余保持默认
Tips
删除CephFS
- 在每一个节点上卸载CephFS和Pool(即便是明知道尚未挂载也要执行!)
1
umount /mnt/pve/<CephFS>
- 销毁MDS服务器
销毁MDS服务器时建议先销毁Standby状态的MDS服务器,等Standby状态的MDS都移除完后再移除Active状态的MDS。 - 移除CephFS
1
pveceph fs destroy <CephFS> --remove-storages --remove-pools
删除Ceph Pool
- 首先在数据中心-存储中移除Ceph Pool
- 在节点的Ceph资源池中销毁datapool即可
去除无订阅弹窗
在每次用户登录到PVE的时候都会有个“无有效订阅”的弹窗,尽管无伤大雅,但是用多了也有点烦人的。
打开/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
,搜索gettext('No valid subscription')
,然后把Ext.Msg.show
整个注释掉就行了。
1 | checked_command: function (orig_cmd) { |
如果每个节点都会访问到那么每个节点都要改。