gongdear

gongdear的技术博客

欢迎大家参观我的博客
  menu
113 文章
89355 浏览
4 当前访客
ღゝ◡╹)ノ❤️

Proxmox VE 9.1 高可用集群部署实战:Ceph + iSCSI 多路径存储整合指南

Proxmox VE 9.1 高可用集群部署实战:Ceph + iSCSI 多路径存储整合指南

环境说明

  • 镜像:proxmox-ve_9.1-1.iso(使用 Rufus 制作启动盘)
  • 硬件:
    • 存储:ThinkSystem DE4000H,IP 为192.168.7.101/102
    • 节点:Lenovo SR590 ×5(本次部署使用其中3台),IP 分别为192.168.7.111.112.113

一、基础系统配置

1. 设置主机名与 hosts

分别在三台节点上设置唯一 hostname:

# node111
hostnamectl set-hostname node111

# node112
hostnamectl set-hostname node112

# node113
hostnamectl set-hostname node113

统一 /etc/hosts 内容(三台一致):

127.0.0.1 localhost.localdomain localhost
192.168.7.111 node111 pve.node111.forestry
192.168.7.112 node112 pve.node112.forestry
192.168.7.113 node113 pve.node113.forestry

2. 重启关键服务使 hostname 生效

systemctl restart pve-cluster pvedaemon pveproxy corosync

二、构建 Proxmox VE 集群

1. 创建集群(仅在 node111 执行)

pvecm create forestry-pve

2. 其他节点加入集群

node112node113 上执行:

pvecm add 192.168.7.111

3. 启用高可用(HA)组件

node111 上启用 HA 守护进程:

systemctl enable --now pve-ha-crm pve-ha-lrm

✅ 此时可通过 Web UI 访问任意节点确认集群状态。


三、部署 Ceph 分布式存储(基于本地磁盘)

1. 清理目标磁盘(所有节点执行)

假设 Ceph 使用 /dev/sdb

lsblk
wipefs -a /dev/sdb
sgdisk --zap-all /dev/sdb

2. 在 Web UI 中安装 Ceph

依次进入各节点的 Datacenter > [node] > Ceph ,提示未安装时选择“无订阅源”进行安装。

3. 创建 OSD

在每个节点的 Ceph 页面点击 OSD > Create: OSD ,选择 /dev/sdb 并确认。

4. 创建 RBD 存储池

  • 在 Web UI 中创建名为vm-pool 的 Ceph Pool。
  • 进入Datacenter > Storage > Add > RBD (PVE)
    • ID:rbd-storage
    • Pool:vm-pool
    • Enable: 勾选所需功能(如 disk image, container 等)

💡 至此,Ceph 已集成进 PVE,可用于虚拟机/容器存储。


当然可以!以下是优化后的 iSCSI 多路径挂载部分 ,融合了你提供的官方文档风格、最佳实践(如 find_multipaths strict、显式注册 WWID、使用 scsi_id 获取 WWID 等),并保留原有极客范与可操作性,适合用于技术博客或部署手册:


四、挂载外部 iSCSI 存储(多路径 + ALUA)—— 企业级推荐配置

💡 核心原则

  • 使用WWID 唯一标识 LUN
  • 启用find_multipaths "strict" 模式,避免意外设备聚合
  • 所有配置需在每个集群节点 上手动同步(PVE 不自动同步 multipath 配置)

1. 安装必要工具(所有节点)

Proxmox VE 默认未安装 multipath-tools,需手动安装:

apt update
apt install multipath-tools

2. 配置 iSCSI 连接(以 node111 为例)

# 清理旧会话(如有)
iscsiadm -m node --logoutall=all
iscsiadm -m node --op delete

# 发现 Target(双控制器)
iscsiadm -m discovery -t st -p 192.168.7.101
iscsiadm -m discovery -t st -p 192.168.7.102

# 登录双路径
TARGET="iqn.2002-09.com.lenovo:thinksystem.6d039ea000292f68000000005ffccb04"
iscsiadm -m node -T "$TARGET" -p 192.168.7.101 --login
iscsiadm -m node -T "$TARGET" -p 192.168.7.102 --login

# 设置自动重连
iscsiadm -m node -T "$TARGET" -p 192.168.7.101 -o update -n node.startup -v automatic
iscsiadm -m node -T "$TARGET" -p 192.168.7.102 -o update -n node.startup -v automatic

在其他节点(node112/113)上重复上述步骤(无需 delete,直接 discovery + login 即可)。


3. 获取 Initiator IQN(用于存储端授权)

cat /etc/iscsi/initiatorname.iscsi

将输出的 IQN(如 iqn.1993-08.org.debian:01:xxxx)在 ThinkSystem DE4000H 管理界面中注册为合法主机,并加入同一主机集群,分配 LUN。


4. 重新扫描 SCSI 总线 & 识别多路径设备

rescan-scsi-bus.sh -a
lsblk  # 应看到新设备(如 sdc, sdd, sde, sdf...)

5. 使用 scsi_id 获取 LUN 的 WWID(关键步骤!)

对每块新设备执行:

/lib/udev/scsi_id -g -u -d /dev/sdc
/lib/udev/scsi_id -g -u -d /dev/sdd
# ...

预期结果

  • /dev/sdc/dev/sde 返回相同 WWID → 同一 LUN 的两条路径
  • /dev/sdd/dev/sdf 返回另一相同 WWID → 第二个 LUN 的两条路径

示例输出:

36d039ea000215c32000000fb61798151  # LUN A
36d039ea000292f68000000f5617982e2  # LUN B

6. 显式注册 WWID 到 multipath 白名单

由于我们采用 find_multipaths "strict" (默认且推荐),必须手动将 WWID 加入 /etc/multipath/wwids

multipath -a 36d039ea000215c32000000fb61798151
multipath -a 36d039ea000292f68000000f5617982e2

🔒 此机制防止 multipath 自动聚合本地磁盘或临时设备,提升系统稳定性。


7. 创建 /etc/multipath.conf(三台节点一致)

# /etc/multipath.conf
blacklist {
    # 排除 Ceph OSD 磁盘(根据实际 WWID 替换)
    wwid "3600062b206e75b0027a572b8e52f17a1"
}

defaults {
    user_friendly_names yes
    find_multipaths strict   # ← 关键!仅聚合已注册 WWID 的设备
}

devices {
    device {
        vendor "LENOVO"
        product "ThinkSystem"
        path_grouping_policy group_by_prio
        path_selector "service-time 0"
        path_checker tur
        prio alua
        failback immediate
        no_path_retry queue
    }
}

multipaths {
    multipath {
        wwid "36d039ea000215c32000000fb61798151"
        alias "iscsi_lun_a"
    }
    multipath {
        wwid "36d039ea000292f68000000f5617982e2"
        alias "iscsi_lun_b"
    }
}

📌 说明

  • find_multipaths strict 是 Proxmox 官方推荐的安全模式。
  • alias 提供可读名称(否则默认使用 WWID 作为设备名)。
  • no_path_retry queue 避免路径中断时 I/O 失败。

应用配置:

multipath -r    # 重载配置并激活多路径设备
multipath -ll   # 验证

✅ 成功输出示例:

iscsi_lun_a (36d039ea000215c32...) dm-6 LENOVO,DE_Series
size=8.3T ... status=active
|- sdc 8:32 active
`- sde 8:64 enabled

iscsi_lun_b (36d039ea000292f68...) dm-7 LENOVO,DE_Series
size=54T ...
|- sdd 8:48 active
`- sdf 8:80 enabled

8. 在 PVE Web UI 中添加 iSCSI 存储

  • 路径:Datacenter > Storage > Add > iSCSI
  • 配置:
    • ID:iscsi-storage
    • Portal:192.168.7.101
    • Target: 自动填充(或手动输入 IQN)
    • 勾选 "Use multipath" (若可用)

💡 注意:PVE 的 iSCSI 存储后端依赖内核多路径机制。只要 multipathd 正常运行且设备已聚合,PVE 即可安全使用。


9. (可选)在多路径设备上创建 LVM 共享存储

若需将 iSCSI LUN 作为 共享 LVM 存储 (供多个节点同时访问 VM 磁盘):

方法一:通过 CLI(推荐)

# 在任一节点执行(确保 multipath 设备已就绪)
pvcreate /dev/mapper/iscsi_lun_b
vgcreate shared-vg /dev/mapper/iscsi_lun_b

然后在 所有节点 上刷新 LVM 缓存:

pvscan --cache

最后在 Web UI 中添加 LVM 类型存储 ,选择 shared-vg,并勾选 “Shared”

方法二:通过 GUI(仅限 iSCSI)

  1. 先添加 iSCSI 存储(如上)
  2. 再添加 LVM 存储,选择该 iSCSI 存储为 “Base Storage”,指定 LUN 为 “Base Volume”

✅ 优势:PVE 会自动管理 iSCSI 挂载顺序,避免 LVM 激活失败。(个人倾向于用这个)


参考:Proxmox VE 官方文档 · Red Hat Multipath Guide · Lenovo ThinkSystem Best Practices

宝剑锋从磨砺出,梅花香自苦寒来.