跳转到内容

存储、集群与 HA 命令速查 ​

常用命令组合只覆盖了 pvesm status、pvecm status 这类日常查询。这篇把 pvesm、pvecm、ha-manager 的完整子命令列出来,对照官方 man page(PVE 9.2)核实过语法。所有命令在宿主机 shell 以 root 执行。

这三组命令能绕过 Web UI 的确认弹窗

Web UI 删除存储、移除节点时会有二次确认和依赖检查提示;命令行不会。不熟悉的操作先在 Web UI 里走一遍,看清楚它实际做了什么,再考虑用命令行。

pvesm:存储 ​

只读查询 ​

命令说明
pvesm status [--storage <名字>]所有存储的状态与容量
pvesm list <存储> [--content backup|iso|…]某存储里的内容,可按内容类型过滤
pvesm path <卷>打印某个卷在文件系统里的实际路径
pvesm apiinfo存储 API 版本信息
pvesm scan nfs/cifs/iscsi/lvm/lvmthin/zfs/pbs <地址>探测某服务器或本机上可用的存储资源,加存储前先扫一遍看看名字/路径对不对

修改存储配置 ​

命令说明
pvesm add <类型> <存储名> [选项…]新增一个存储定义,等价于 Web UI 的「Add Storage」
pvesm set <存储名> [选项…] [--delete <key>]修改配置,例如改内容类型、--disable 1 临时停用

pvesm remove 只删配置,不删数据——但容易被误解成相反的意思

text
pvesm remove <存储名>

它删除的是 /etc/pve/storage.cfg 里的这条定义,不会删除底层数据,也不会自动卸载或断开连接。执行后这块盘/这个共享上的旧数据还在,只是 PVE 不再管理它。想真正清空数据,需要另外手动处理(格式化、zpool destroy 等),那属于更危险的操作,见下方 pvesm free。

pvesm free 会真正销毁一个卷

text
pvesm free <卷>

官方文档原话:this really destroys all volume data。这是命令行版的"删除磁盘",没有回收站。确认卷 ID 对应的是哪台客户机的哪块盘,用 pvesm list <存储> 核对后再执行。

分配与备份保留 ​

命令说明
pvesm alloc <存储> <vmid> <文件名> <size>手动分配一块磁盘镜像,通常由 qm create 内部调用,很少直接手敲
pvesm prune-backups <存储> [--dry-run]按保留策略清理旧备份,先加 --dry-run 看会删哪些,再去掉这个参数执行

pvecm:集群 ​

命令说明
pvecm status本节点看到的集群状态,重点看 Quorate
pvecm nodes集群成员列表
pvecm create <集群名>创建新集群。集群名之后不能改,节点的最终主机名和 IP 也要在建群前定好
pvecm add <主节点地址>把当前节点加入已有集群,会覆盖本机 /etc/pve 下的全部内容,加入前这台节点不能有任何客户机
pvecm addnode <节点>官方标注为内部使用,正常加节点走 pvecm add
pvecm expected <数字>临时修改 corosync 的法定票数(expected votes)
pvecm updatecerts [--force]更新节点证书
pvecm qdevice setup <地址> / pvecm qdevice remove配置/移除 QDevice,两节点集群补第三票用

delnode 有严格顺序,做错会留下幽灵节点

text
pvecm delnode <节点名>

官方文档给出的顺序:

  1. 先移除该节点上配置的 QDevice(如果有)。
  2. 把节点上的客户机迁走,本地磁盘的数据先备份。
  3. 把该节点从所有存储复制(replication)任务里移除,否则任务会变得删不掉。
  4. 如果节点跑 Ceph:先按 OSD → MDS → Monitor → Manager → CRUSH bucket 的顺序移出 Ceph,再执行 delnode。
  5. 关闭该节点电源,且不要让它带着旧配置重新联网——带旧配置重新上线可能把集群搞坏。
  6. 在其余节点上执行 delnode,出现 cs_err_not_exist 可以忽略。
  7. 事后清理:删除 /etc/pve/nodes/<节点名>,检查 HA 规则,从 /etc/pve/priv/authorized_keys 移除该节点的 key。
  8. 要让同一台服务器重新加入,得先重装 Proxmox VE。

完整的图形化步骤和前置检查见安全移除节点。

卡在"移除节点后集群失去 quorum,delnode 又跑不动":官方给的临时办法是 pvecm expected 1 降低法定票数后再试一次。这会让集群暂时失去只读保护,仅在别无选择时使用,操作完立刻确认票数恢复正常。

ha-manager:高可用 ​

命令说明
ha-manager status [--verbose]HA 管理器状态,--verbose 输出完整 CRM/LRM 状态 JSON
ha-manager config [--type ct|vm]列出受 HA 管理的资源
ha-manager add <sid> [--group …] [--state …]把资源加入 HA 管理,<sid> 格式是 vm:100 或 ct:100(客户机可以只写编号)
ha-manager set <sid> [选项…]修改 HA 资源配置
ha-manager remove <sid> [--purge 1]移除资源的 HA 管理,--purge(默认开)同时把它从相关规则里摘掉
ha-manager migrate <sid> <节点>在线迁移(crm-command migrate 的别名)
ha-manager relocate <sid> <节点>先停后启迁移(crm-command relocate 的别名)
ha-manager crm-command stop <sid> <超时秒数>停止 HA 资源,超时填 0 为强制停止
ha-manager crm-command node-maintenance enable/disable <节点>节点维护模式,维护期间不触发这台机器上资源的 HA 恢复动作
ha-manager crm-command arm-ha / ha-manager crm-command disarm-ha <freeze|ignore>PVE 9.2 新增:临时挂起/恢复 HA 的自动响应,维护窗口内避免误触发隔离(fencing)

HA 分组(groups)已被规则取代

ha-manager groupadd / groupset / groupremove 仍然存在,但官方标注为"已被 HA 规则取代"。PVE 9.0 起新建的约束建议用规则命令:

text
ha-manager rules add node-affinity|resource-affinity <规则名> [选项…]
ha-manager rules set <类型> <规则名> [选项…]
ha-manager rules remove <规则名>
ha-manager rules config

从 8.x 升级来的分组会在集群全部节点升级到 9.x 后自动转换成规则,不需要手动迁移。概念说明见HA 资源与 affinity 规则。

disarm-ha 会让节点在异常时不再自动恢复资源

disarm-ha 关闭的是 HA 对故障的自动响应(迁移、重启、隔离)。维护窗口里开着能避免"我在重启节点,HA 却以为它挂了"的误判;但如果窗口期间真的出故障,不会有自动恢复动作。维护结束后务必执行对应的 arm-ha 恢复。做法和适用场景见维护模式与 HA arm/disarm。

常见坑 ​

  • pvesm remove 和 pvesm free 长得像,效果完全不同:前者只解除 PVE 的管理关系,后者销毁数据。看清楚参数是存储名还是卷 ID。
  • pvecm delnode 之后节点不能直接重新加入同一集群:/etc/pve 里留有旧的集群成员信息,必须重装系统。
  • HA 资源的 <sid> 对虚拟机/容器可以简写成编号,但对其他资源类型(如果以后支持)需要写全 类型:名字。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。