外观
存储、集群与 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 <节点名>官方文档给出的顺序:
- 先移除该节点上配置的 QDevice(如果有)。
- 把节点上的客户机迁走,本地磁盘的数据先备份。
- 把该节点从所有存储复制(replication)任务里移除,否则任务会变得删不掉。
- 如果节点跑 Ceph:先按 OSD → MDS → Monitor → Manager → CRUSH bucket 的顺序移出 Ceph,再执行 delnode。
- 关闭该节点电源,且不要让它带着旧配置重新联网——带旧配置重新上线可能把集群搞坏。
- 在其余节点上执行
delnode,出现cs_err_not_exist可以忽略。 - 事后清理:删除
/etc/pve/nodes/<节点名>,检查 HA 规则,从/etc/pve/priv/authorized_keys移除该节点的 key。 - 要让同一台服务器重新加入,得先重装 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>对虚拟机/容器可以简写成编号,但对其他资源类型(如果以后支持)需要写全类型:名字。