ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PVE超融合存储:ansible-role-proxmox的Ceph集群部署完整指南(OSD/CRUSH/纠删码池详解)

PVE超融合存储:ansible-role-proxmox的Ceph集群部署完整指南(OSD/CRUSH/纠删码池详解) PVE超融合存储ansible-role-proxmox的Ceph集群部署完整指南OSD/CRUSH/纠删码池详解【免费下载链接】ansible-role-proxmoxIaC for Proxmox VE clusters.项目地址: https://gitcode.com/gh_mirrors/an/ansible-role-proxmoxansible-role-proxmox 是一款面向 Proxmox VEPVE集群的 Ansible 基础设施即代码IaC角色它能把 PVE 的安装、集群组建和 Ceph 分布式存储的部署全部变成可重复执行的声明式配置。本文深度解析它的 Ceph 集群部署能力从初始化 Monitor/Manager、幂等创建 OSD、管理 CRUSH 规则到构建纠删码Erasure-Coding池与 CephFS 文件系统帮你用一份 YAML 文件完成 PVE 超融合存储的全套配置。 先搞懂这套 Ceph 部署管了哪些东西很多人以为Ceph 部署只是装几个包。实际上一个可用的 PVE 超融合存储包含四个层次这个 Role 在 tasks/ceph.yml 中把它们全部实现了组件作用对应任务逻辑Monitor (MON)集群心跳与元数据仲裁首台 MON 节点执行pveceph init其余节点pveceph mon createManager (MGR)提供 REST API 与监控按pve_ceph_mgr_group自动创建OSD实际存放数据块的守护进程查询现有盘 → 只创建缺失的 OSD含加密、DB/WAL 设备Pool / CRUSH / FS数据池、分布规则与 CephFS创建池、修补 CRUSH 规则、部署 CephFS 并挂载 关键设计所有操作都是幂等的——每个任务都会先查询集群现状如ceph osd pool ls、ceph osd crush rule ls只对缺失项做增量变更。重复运行 Playbook 不会破坏已有集群这是 IaC 部署 Ceph 的核心安全感来源。⚙️ 启用 Ceph核心变量清单Ceph 支持默认关闭。在 defaults/main.yml 中pve_ceph_enabled默认为false只有显式打开后tasks/main.yml 中的条件判断才会让 tasks/ceph.yml 参与执行pve_ceph_enabled: true # 打开 Ceph 部署开关 pve_ceph_network: 172.10.0.0/24 # Ceph 公共网络默认为宿主机默认网段 # pve_ceph_cluster_network: # 可选独立的集群私有网络OSD 间副本/EC 修复流量 pve_ceph_nodes: ceph_nodes # 参与 Ceph 的主机组 pve_ceph_mon_group: ceph_mon # MON 所在主机组 pve_ceph_mgr_group: ceph_mon # MGR 所在主机组默认跟随 MON 组几个新手常踩的坑pve_ceph_network决定了 MON 的选举地址。默认值会自动取宿主机默认网段如果你打算给 Ceph 单独划一张存储网卡务必显式指定pve_ceph_cluster_network是可选的分离网络用于 OSD 之间的副本写入和纠删码修复流量生产环境强烈建议独立组网主机组pve_ceph_mon_group等的划分让3 节点全托管或专用存储节点两种拓扑都能用同一套配置表达。 OSD 一键部署自动识别新增磁盘OSD 是最贴近硬件的一环。Role 的做法非常聪明见 tasks/ceph.yml 的 Create Ceph OSDs 任务块调用自研模块 library/pve_ceph_volume.py 通过ceph-volume lvm list查询集群中已初始化的 OSD 及其占用设备与你声明的pve_ceph_osds列表做差集运算——已存在的磁盘自动跳过只对新增磁盘执行pveceph osd create并透传高级选项。每条 OSD 声明都支持如下能力pve_ceph_osds: - device: /dev/sdc # 基础单盘 OSD - device: /dev/sdd block.db: /dev/sdb1 # 独立块设备存放 BlueStore 元数据 - device: /dev/nvme0n1 crush.device.class: NVMe # 打上 NVMe CRUSH 设备类标签 - device: /dev/sdd encrypted: true # 整盘加密 OSD其中crush.device.class是与后面 CRUSH 规则联动的关键给 NVMe 盘打上NVMe类标签后就能让高性能池只落在 SSD 上——这正是混合存储集群的玩法。而encrypted: true让你无需额外步骤就获得 LUKS 级全盘加密。⚠️ 官方提醒Role 文档中注明 Ceph 管理功能仍处于实验阶段README Ceph configuration 一节因为 CI 环境缺少可用的块设备做测试。生产上线前请先在测试环境完整演练一遍。️ CRUSH 规则数据落在哪由它说了算CRUSH 是 Ceph 的数据分布大脑。tasks/ceph.yml 对 CRUSH 规则做了两层管理第一层创建新规则——对pve_ceph_crush_rules中声明、但集群里不存在的规则执行ceph osd crush rule create-replicatedpve_ceph_crush_rules: - name: ssd class: ssd type: osd min-size: 2 # 允许的最小副本数 max-size: 8 - name: hdd class: hdd type: host第二层修补既有规则——这是 Role 最硬核的部分。任务会ceph osd getcrushmap拉取并解压当前 crushmap用ansible.builtin.replace模块以正则精准改写目标规则的min_size/max_size/class/ 选择层级字段用crushtool -c校验新 map 合法性校验通过才ceph osd setcrushmap回写并清理临时文件。这套下载 → 修改 → 校验 → 上传的流程意味着即使规则是别的手续建出来的Role 也能把它收敛到你声明的状态——IaC 的漂移修复能力在 CRUSH 场景下体现得淋漓尽致。 纠删码池用空间换可靠性复制池简单可靠但空间开销大纠删码EC池则以牺牲一定延迟换来显著的空间效率。Role 在Create Ceph Pools任务中同时支持两种保护策略pve_ceph_pools: - name: vm-storage # 常规复制池 pgs: 128 rule: replicated_rule application: rbd storage: true # 同时注册为 Proxmox 存储 - name: hydra-rbd1 # 纠删码池 size: 3 min_size: 2 protection_strategy: erasure-coding k: 3 # 数据块 m: 2 # 校验块 pgs: 1024 application: rbd storage: true执行细节值得注意前置断言任务会先assert检查——只要protection_strategy是erasure-codingk和m必须为正整数否则直接失败并给出明确提示避免建出不可用池自动拆分为双池设置protection_strategy: erasure-coding后pveceph会创建一对池——名称-dataEC 数据池名称-metadata复制元数据池。此时声明中的size/min_size只作用于元数据池容量规划口诀k: 3, m: 2表示 5 块盘可容忍任意 2 块故障有效容量约为原始容量 × k/(km) 60%显著优于三副本的 33%。池的其他常用开关也都透传到了pveceph pool createpgs预分配 PG 数、autoscale_mode自动扩缩 PGon/off/warn、rule绑定 CRUSH 规则、application应用标签如rbd、storage: true自动在 PVE 中注册为 RBD 存储可直接给虚拟机挂盘。 CephFS集群共享文件系统的完整闭环除块存储外tasks/ceph.yml 末尾还实现了一条 CephFS 全链路在pve_ceph_mds_group各节点pveceph mds create创建 MDS并轮询ceph mds stat等待 Standby 就绪10 次、每次 2 秒按pve_ceph_fs声明执行pveceph fs create并核对/修正 data 与 metadata 两个池的 CRUSH 规则生成客户端密钥ceph auth get-or-create写入/etc/ceph/fs.secret权限 0600用ansible.posix.mount将文件系统挂载到你指定的目录源地址自动聚合所有 MON 节点 IP。pve_ceph_fs: - name: backup pgs: 64 rule: hdd mountpoint: /srv/proxmox/backup一个典型用法给备份挂一个独立挂载点VM 备份目录直接指向 CephFS实现备份数据的集群级冗余。 关键文件索引文件说明tasks/ceph.ymlCeph 全部部署逻辑MON/MGR/OSD/CRUSH/池/CephFSdefaults/main.yml所有pve_ceph_*变量及默认值tasks/main.yml总入口含 Ceph 触发条件与仓库密钥导入library/pve_ceph_volume.py查询 ceph-volume 已有 OSD 的自定义模块library/proxmox_storage.py将 Ceph 池注册为 PVE 存储的模块 最佳实践与总结节点数MON 建议奇数台3 台起MDS 至少 1 主 1 备pve_ceph_mds_group组内 ≥2 台网络公共网络 独立pve_ceph_cluster_network是最稳妥的生产拓扑混合盘型用crush.device.class打标签 专用 CRUSH 规则让 SSD 池与 HDD 池各得其所先测试后上产Ceph 功能是实验性支持务必按官方建议先在测试环境用你的真实配置完整跑一遍反复运行放心重复执行 PlaybookOSD 差集计算与池/规则的存在性检查保证幂等。用一句话总结ansible-role-proxmox 把 PVE 超融合存储中最琐碎、最易出错的 Ceph 手工流程初始化、建 OSD、修 CRUSH、建池、挂文件系统压缩成了几段 YAML 声明并以内建的差集与校验机制守护着集群状态——这就是 IaC 给超融合存储带来的确定性。【免费下载链接】ansible-role-proxmoxIaC for Proxmox VE clusters.项目地址: https://gitcode.com/gh_mirrors/an/ansible-role-proxmox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表