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. 其他节点加入集群
在 node112 和 node113 上执行:
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 等)
- ID:
💡 至此,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" (若可用)
- ID:
💡 注意: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)
- 先添加 iSCSI 存储(如上)
- 再添加 LVM 存储,选择该 iSCSI 存储为 “Base Storage”,指定 LUN 为 “Base Volume”
✅ 优势:PVE 会自动管理 iSCSI 挂载顺序,避免 LVM 激活失败。(个人倾向于用这个)
参考:Proxmox VE 官方文档 · Red Hat Multipath Guide · Lenovo ThinkSystem Best Practices