开源虚拟化管理平台Proxmox VE部署超融合

发布于:2025-04-04 ⋅ 阅读:(24) ⋅ 点赞:(0)

Proxmox VE 是一个功能强大、开源的虚拟化平台,结合了 KVM 和 LXC,同时支持高可用集群、存储管理(ZFS、Ceph)和备份恢复。相比 VMware ESXi 和 Hyper-V,PVE 具有开源、低成本、高灵活性的特点,适用于中小企业、开发测试环境以及私有云建设。如果需要一个免费的、开源的企业级虚拟化解决方案,PVE 是一个值得考虑的选择。

安装过程非常简单的,下面简单讲解一下部署超融合的步骤:

一、创建集群

下面是硬件配置,共三台

安装完之后创建集群

输入集群名称

检查输出状态没有问题之后关闭

 创建好之后如下

登陆第二台服务器加入集群

出现下图 需要输入加入信息

加入信息在第一台复制,如下图

 粘贴加入信息,并选择管理网卡和输入密码

下图出现关闭

刷新登陆可以看到下图

以此类推,把其余主机加入

二、创建网络用于连接存储

在每台主机上添加网络配置,这里使用的是Bond

下面是的Bond特点,请根据实际情况选择

模式 模式编号 特点
LACP(802.3ad) mode=4 需要支持 LACP 交换机,带宽聚合+负载均衡+故障恢复
Active-Backup mode=1 简单,适合冗余,但不增加带宽
Balance-XOR mode=2 负载均衡,需交换机支持

📌 最佳选择:LACP(802.3ad)

  • 需要 支持 LACP(链路聚合控制协议)的交换机

  • 交换机端 配置 LAG(链路聚合组)

  • 双网卡 2x10Gbps,可提升到 20Gbps 带宽

因交换机不支持,所以这里选择了Active-Backup,注意要配置使用不同网段 

 应用配置让生效,生效如下图

 应用之后如下图处于运行中

其余主机重复上述步骤

、安装和配置Ceph

Ceph 是一个开源的分布式存储系统,在 Proxmox VE(PVE) 中可用于 高可用共享存储,支持 块存储(RBD)、文件存储(CephFS)和对象存储(RGW)

📌 适用场景

  • 高可用存储:无单点故障,数据自动复制

  • Proxmox HA(高可用集群):支持 VM 迁移

  • 分布式存储:自动均衡,扩展性强

每个节点至少 1 块 SSD/HDD(用于 OSD),前文有讲述,这里不再重复,开始配置: 

 下图因没有订阅,因此选择“无订阅”

下图输入Y完成安装

 出现下图表示安装完成

选择上步创建的网络 

  • public_network(192.168.88.0/24):用于客户端访问

  • cluster_network(192.168.99.0/24):专门用于 OSD 数据复制

下图表示成功

 登陆到其余主机节点,按上面办法完成安装。

下图选择一个主机, 添加监视器

将各个节点全部添加进去

添加完如下图

 添加完成后,主机状态显示running,表示正常。开始创建Ceph OSD

根据实际情况选择硬盘

添加完之后稍等几秒,如果没有up,可以手动启动

在每个节点上将硬盘添加上,例如三个节点,每个节点500GB,最终结果如下:

创建资源池

 

成功之后如下图

创建好的存储资源池

还可以在集群的“存储”中添加其他存储,如下图添加SMB/CIFS

结果如下

以上完成之后,就可以开始使用该存储创建虚拟机了。

通过以下可以监测到系统运行状态

四、安装系统

上传镜像

 

右上解创建虚拟机

下图中的资源池,在集群管理中创建即可

 

 其余按提示即可,在下图开始管理

五、配置所有节点都能访问ISO

如果希望所有节点都能访问 ISO,需要 NFS 共享 ISO 目录,或手动同步。

我们通过SMB加载ISO文件,将ISO镜像添加到下图的SMB存储内容中就可以在安装操作系统时选择共享存储中的ISO镜像文件了

 下面就可以上传ISO镜像到SMB共享存储中了。建议使用NFS。

如果无法上传ISO镜像,可能是local空间满了(不要往local上传文件,该目录可用空间大小影响上传ISO文件的大小),可以增加空间,或者删除临时文件

rm -rf /var/tmp/*

六、使用HA

 即使启用了 HA(高可用)共享存储,在创建虚拟机(VM)时,仍然需要指定一个初始运行的 节点主机。但 HA 会自动处理故障转移,具体行为取决于 HA 配置

为什么需要选择节点?

1.虚拟机总是需要一个初始运行的节点
  • 在 Proxmox VE 中,每台物理服务器(节点)运行 pve-cluster 服务,虚拟机必须在某个节点上启动。

  • 共享存储(如 Ceph、NFS、iSCSI、SMB)让 VM 的磁盘数据可在多个节点间访问,但不会自动选择在哪个节点创建 VM。

2.HA 仅在故障时才会迁移 VM
  • 你选择的初始节点 正常运行时,VM 会一直运行在该节点

  • 只有当 选定节点故障,HA 机制才会自动迁移 VM 到其他可用节点。

如何让 Proxmox 选择最优节点?

如果你不想手动选择节点,可以使用 HA 组(HA Groups),方法如下:

1. 创建 HA 组

在 Proxmox Web UI:

  • 进入 Datacenter → HA → Groups

  • 创建一个 HA 组,勾选 restricted(限制 VM 只能运行在此组内的节点)

  • 添加多个节点,并设定优先级 

 

选项 作用 是否推荐使用? 适用场景
restricted 限制 HA 资源只能在指定节点上运行 建议在特定情况下使用 有 PCI 直通、CPU 架构不同、需要绑定特定节点
nofailback 防止 HA 资源在故障节点恢复后自动回迁 推荐使用 避免 VM 频繁迁移、提升稳定性

 

    2. 创建 VM 并加入 HA
    • 创建 VM 时,仍然需要手动选择一个初始节点。

    • 然后进入 Datacenter → HA → Resources,添加该 VM 并指定它的 HA 组。

    这样,如果 VM 运行的节点故障,Proxmox 会根据 HA 组规则自动选择一个 健康的节点 启动 VM。

    七、出现手动关半节点如何自动迁移虚拟机

    ha-manager set vm:<VMID> --migration=relocate 这个命令需要 针对每个 HA 受管的虚拟机 单独设置。

    如何批量设置所有 HA VM?

    如果你有多个 VM,可以用以下方法 批量设置

    方法 1:使用 for 循环(推荐)

    你可以用 shell 脚本 一次性修改所有 HA 受管 VM:

    for VMID in $(ha-manager status | awk '/vm:/ {print $2}' | cut -d':' -f2); do
        ha-manager set vm:$VMID --migration=relocate
    done
    

    这个脚本会:

    1. 获取所有 HA 受管的 VMID

    2. 依次执行 ha-manager set vm:<VMID> --migration=relocate

    这样就不需要手动一台台输入 VMID 了。

    方法 2:手动对每个 VM 设置

    如果你的 VM 数量不多,也可以手动执行:

    ha-manager set vm:100 --migration=relocate
    ha-manager set vm:101 --migration=relocate
    ha-manager set vm:102 --migration=relocate
    

    如何检查是否生效?

    执行:

    ha-manager status
    

     看看每个 VM 的 migration 选项是否变成 relocate

    其他 HA 迁移策略

    如果你想了解更多 HA 迁移策略:

    ha-manager set vm:<VMID> --migration=<策略>
    

    其中:

    • relocate(推荐) 允许 VM 自动迁移 到其他节点

    • stop:在故障时 直接关闭 VM(不迁移)

    • freeze:保持 VM 状态不变,不迁移、不重启

    一般来说,relocate 是最好的选择,除非有特殊需求。

    总结

    方法 适用场景 命令
    单个 VM 手动设置 适用于 VM 数量少 ha-manager set vm:<VMID> --migration=relocate
    批量设置所有 HA VM 适用于 VM 数量多 for 循环批量执行
    检查是否生效 确认迁移策略是否更新 ha-manager status

    批量修改所有 HA 受管 VM,这样以后关机节点时,VM 就会自动迁移到其他节点,不会直接关机。

    八、PVE使用Ceph RBD作为VM存储性能优化

    1、启用 RBD 缓存

    在 PVE 服务器上:

    ceph config set client rbd_cache true
    ceph config set client rbd_cache_size 33554432  # 32MB
    

    2、关闭 Ceph Debug 日志

    ceph config set mon debug_mon 0
    ceph config set osd debug_osd 0
    

    3、调整 Ceph I/O 队列

    ceph config set osd osd_op_num_threads_per_shard 4
    ceph config set osd osd_op_num_shards 8
    

    4、结论

    Ceph RBD 是 PVE 存储 VM 的最佳方案(高性能、高可用)。
    通过 PVE Web 界面可以轻松添加 Ceph 存储
    优化 RBD 缓存、OSD I/O,可提高 Ceph 运行效率

    九、PVE+Ceph 性能优化:节点级别 & 全局级别

    1、全局级别优化(所有 Ceph 节点同步)

    这些配置 全局生效,只需在 一个 MON(监视器)节点 上执行,Ceph 会自动同步到所有节点。

    ✅ 1. 启用 RBD 缓存

    ceph config set client rbd_cache true
    ceph config set client rbd_cache_size 33554432  # 32MB 缓存
    ceph config set client rbd_cache_max_dirty 25165824  # 25MB 写入缓存
    ceph config set client rbd_cache_target_dirty 16777216  # 16MB 触发写入
    ceph config set client rbd_cache_max_dirty_age 5  # 5秒后写入
    

    作用:提高 RBD(VM 磁盘)的读写性能,减少 IO 延迟。

    ✅ 2. 关闭 Ceph Debug 日志

    ceph config set mon debug_mon 0
    ceph config set osd debug_osd 0
    ceph config set mgr debug_mgr 0
    ceph config set mds debug_mds 0
    ceph config set client debug_client 0
    

    作用:减少日志占用的 CPU 和 IO,提高性能。

    ✅ 3. 调整 Ceph I/O 线程

    ceph config set osd osd_op_num_threads_per_shard 4
    ceph config set osd osd_op_num_shards 8
    

     ✅ 作用:提高 OSD 处理请求的能力,减少 IO 阻塞。

    ✅ 4. 调整 CRUSH 规则,优化数据分布

    ceph balancer mode upmap
    ceph balancer on
    

    作用:确保 Ceph 自动均衡数据分布,防止某些 OSD 过载。

    2、节点级别优化(每个 PVE+Ceph 节点都要执行)

    这些优化需要 在每个 OSD 节点(运行 ceph-osd 的服务器)手动执行

    ✅ 1. 调整 BlueStore 缓存

    在每个 OSD 节点上执行:

    echo "bdev_sync_submit = false" >> /etc/ceph/ceph.conf
    echo "bluestore_cache_size = 4294967296" >> /etc/ceph/ceph.conf  # 4GB 缓存
    echo "bluestore_cache_kv_max = 1073741824" >> /etc/ceph/ceph.conf  # 1GB 作为 key-value 处理
    echo "bluestore_cache_meta_max = 1073741824" >> /etc/ceph/ceph.conf  # 1GB 用于元数据缓存
    

    然后重启 OSD:

    systemctl restart ceph-osd.target
    

    ✅ 2. 调整 Linux 内核参数

    在每个 OSD 节点执行:

    echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf
    echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf
    echo "vm.swappiness = 10" >> /etc/sysctl.conf
    sysctl -p
    

     ✅ 作用:减少 Linux 对磁盘的写入压力,提高 Ceph 响应速度。

    ✅ 3. 启用 NOOP I/O 调度器(适用于 SSD)

    如果 OSD 运行在 SSD/NVMe 上,优化磁盘调度:

    echo "noop" > /sys/block/sdX/queue/scheduler
    

     或者永久生效:

    echo 'GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop"' >> /etc/default/grub
    update-grub && reboot
    

    作用:减少 SSD/NVMe 的调度开销,提高 IO 吞吐量。

    3、计算节点优化(所有 PVE 计算节点执行)

    即使某些节点没有 Ceph OSD,它们作为 Ceph Client(RBD 挂载 VM) 也可以优化性能。

    ✅ 1. 在 PVE 计算节点启用 KRBD

    storage.cfg 中找到 Ceph RBD 配置,添加:

    krbd 1
    

    然后在 PVE 计算节点上运行:

    systemctl restart pve-cluster pvedaemon
    

    作用:让 VM 直接使用 Linux 内核的 RBD 驱动,提高磁盘性能。

    ✅ 2. 提高 QEMU-KVM 性能

    编辑 /etc/modprobe.d/kvm.conf

    options kvm ignore_msrs=1
    options kvm-intel nested=1
    

     然后运行:

    update-initramfs -u && reboot
    

    作用:优化 KVM 虚拟化,提高 VM 运行效率。

    4、结论

    全局优化(MON 节点执行一次):Ceph RBD 缓存、I/O 线程、日志优化、CRUSH 规则。
    OSD 优化(每个 OSD 服务器执行):BlueStore 缓存优化、Linux 内核优化、SSD 调度优化。
    PVE 计算节点优化(所有 PVE 服务器执行):启用 KRBD,提高 KVM 性能。

    如果你希望进一步测试优化效果,可以:

    fio --filename=/dev/rbd0 --direct=1 --rw=randrw --bs=4k --numjobs=4 --iodepth=32 --runtime=30 --time_based --group_reporting --name=test-rbd
    

     这会测试 Ceph RBD 的 4K 随机读写性能,看看优化是否有效!


    网站公告

    今日签到

    点亮在社区的每一天
    去签到