资讯动态

vCenter忘记root/SSO密码且日志盘满?完整恢复步骤与避坑指南

发布时间:2026/10/2 3:16:33 来源:尧图企业网站定制
前阵子一个客户凌晨打来电话说 vCenter 登录不上了。远程一看三个问题全凑一起了root 密码忘了、administratorvsphere.local 的 SSO 密码也忘了然后 VAMI 健康检查页面上还挂着大大的 log Disk Exhaustion on vc 告警。说实话这套组合拳在虚拟化运维里算不上罕见但每次碰到都能让人瞬间清醒。今天就把这次完整的恢复过程、背后的原理、以及我在操作时踩过的坑整理出来。如果你正在面对同样的问题这篇文章可以帮你少走很多弯路。先说清楚适用范围我用的环境是 vCenter Server ApplianceVCSA7.0 和 8.0 操作路径基本一致6.5、6.7 的底层命令也通用。纯 Windows 版 vCenter Server 不在这次讨论范围内但从思路上也可以类比。1. 先搞清楚三个故障之间的联系1.1 root、SSO、日志盘满为什么会扎堆出现vCenter 的 root 密码和 SSO 密码很多人以为是一个东西其实是两套完全独立的认证体系。root 是 vCenter 这台 Photon OS 虚拟机的操作系统账号负责 SSH 登录、管理底层系统相当于你租的房子大门钥匙。SSO 是 vCenter 的身份认证服务也就是 VMware Directory Serviceadministratorvsphere.local 用它登录 vCenter Web 管理界面相当于小区物业的门禁卡。房子大门钥匙丢了和物业门禁卡失效了是两件独立的事只是这次恰好同时发生了。日志盘满则是另一条线。vCenter 运行时间长了以后/storage/log 分区会被 vpxd、vmon、sso、perfcharts 这些服务的日志慢慢填满。这个我见过太多很多客户部署 vCenter 时按默认磁盘大小一路下一步当时看着空间挺大跑上一年半载不清理日志分区就到 95% 以上了。VAMI 健康检查会监测到分区使用率超过阈值于是就在界面上报出 log Disk Exhaustion on vc。这三个故障凑一起还有个典型的连带效应。日志盘满不仅影响 vCenter 自己写入日志还会拖慢服务响应SSO 服务一卡Web 登录就像死机一样。不少管理员一着急反复尝试密码结果反而触发了账号锁定或者更深的认证问题。所以处理顺序很重要先止血再恢复密码最后治理日志盘。1.2 动手之前必须确认的准备工作我在处理这类故障时哪怕客户催得再急也会先把准备工作做足免得操作到一半把自己绕进去。你需要确认四件事。第一vCenter 的版本和部署形态。登录方式不影响但命令路径在不同大版本上有细微差别。比如 vdcadmintool 这个工具6.x 到 8.x 的路径基本一致不过个别版本菜单名称不同。无法确认版本时先通过 vCenter 虚拟机的控制台看一下引导界面的版本信息。第二确认能否访问承载 vCenter 虚拟机的 ESXi 主机。这一点特别关键。root 密码重置需要进入 vCenter 虚拟机的 BIOS 阶段操作 GRUB 引导完全离开操作系统层面。你必须通过 ESXi 主机的 vSphere Client、Web 界面或者直接控制台访问到 vCenter 虚拟机否则后面的 GRUB 恢复操作无从谈起。这一步相当于你钥匙丢了得有办法通过窗户爬进院子。第三拍摄快照。如果 vCenter 虚拟机还在运行进入恢复模式前的最后一步就是打快照。一定会有人说 vCenter 是生产级设备不敢打快照但在这个场景下快照是你折腾坏之后唯一的后悔药。操作 GRUB 和修改系统密码虽然不至于毁天灭地但由于不熟悉引发的误操作实在太常见。我自己的习惯是虚拟机内存比较大的话只拍磁盘快照不勾选包含内存恢复起来也方便。第四准备好新的强密码。vCenter 对密码复杂度有要求长度、大小写、数字、特殊字符都占上最好。生产环境别用太简单的密码我见过因为密码太简单导致审计不通过回来反推责任的情况。2. root 密码忘记从 vCenter 虚拟机控制台进单用户模式2.1 为什么不建议尝试一长串历史密码有人会问SSH 还开着能不能就直接通过 SSH 破解或者用应急账号进去别想了。vCenter 的 SSHD 服务做的就是认证root 密码忘了SSH 一样进不去。还有人在 DCUI 界面反复试密码DCUI 本身也有防暴力破解机制试错次数多了反而会被锁定更久。正确的思路是绕过登录过程直接在系统内核引导阶段进入单用户模式。VCSA 底层是 Photon OS和常见的 RHEL、CentOS 系列都是 systemd 生态处理密码重置的思路一致修改 GRUB 启动参数跳过密码验证进入 root shell然后重新设置。这个方法不依赖任何 vCenter 服务是否正常运行只要虚拟机能开机就能做。2.2 通过 GRUB 进入单用户模式的完整步骤第一步用 vSphere Client 登录承载 vCenter 的那台 ESXi 主机。如果 ESXi 主机也忘了密码那就是另一个故事了。正常情况下能登录 ESXi 就够了不需要 vCenter 本身在线。第二步在 ESXi 的 Web 界面里找到 vCenter 虚拟机右键打开控制台。远程控制台窗口弹出后用控制台给虚拟机发送重启信号。如果 vCenter 操作系统已经完全卡死就直接在 ESXi 的虚拟机操作菜单里选择“重新启动”。总之要让虚拟机重新开机走引导流程。第三步在 Photon OS 的 GRUB 引导菜单出现时快速选中默认内核启动项按键盘上的 e 键进入编辑模式。这一步的窗口期很短手慢的话系统就直接进系统了需要再等一轮重启。GRUB 菜单通常停两秒左右我一般是重启后盯着控制台看到菜单出现就狂按 e成功率最高。第四步在编辑界面里找到以 linux 开头的行这一行很长包含很多内核参数。把光标移到这一行末尾空格后追加 rd.break 参数。这个参数的意思是让内核在切换根文件系统之前暂停进入一个临时 shell。如果你的 vCenter 版本比较老系统没有加载 dracut 环境的 initramfs也可以追加 rw init/bin/bash效果类似。我 7.0 和 8.0 上都用 rd.break实测都能进。第五步按 CtrlX 或者 F10 继续引导。过一会儿你会落在一个类似 shell 的提示符下这时候你的当前环境其实是 initramfs 里的临时根真正的系统根文件挂载在 /sysroot 目录下。需要执行下面的命令把真实根切过去mount -o remount,rw /sysroot chroot /sysroot第一条命令是把 sysroot 重新挂载成可写状态第二条命令是切换到真实的系统根目录。如果你用的是 rw init/bin/bash 方式可能不需要 chroot但 rd.break 几乎必然要这两步。切过去之后就可以直接执行密码修改。第六步在 chroot 环境里执行passwd root系统会提示输入两次新密码。注意 Photon OS 的密码策略比较严格如果提示密码太短或者太简单换一个复杂度更高的组合就行。第七步改完密码之后输入 exit 退出 chroot再输入 exit 退出临时 shell然后执行 reboot 重启虚拟机。有的版本直接 reboot 命令可能不好使按 CtrlAltDelete 也可以。重启后 oot 密码就生效了。2.3 单用户模式操作中的关键注意点这个操作看着简单但有几个细节处理不好容易翻车。一是 Secure Boot 的问题。如果 vCenter 虚拟机启用了 UEFI Secure BootGRUB 的可信引导机制会阻止你修改内核启动参数按 e 进去之后就算改了也不生效甚至直接拒绝引导。遇到这种情况你只能先在 ESXi 虚拟机设置里临时关闭 Secure Boot重置完密码再开回来。默认情况下 VCSA 都不开 Secure Boot但环境是别人的永远不要想当然。二是快照别忘。进入 GRUB 之前必须打快照这个我重复一遍。因为 rd.break 虽然风险不大但一旦在 chroot 里执行了错误的命令比如误删系统文件没有快照就只能从头部署 vCenter那个代价就大了。三是时间窗口。vCenter 启动过程比普通 Linux 虚拟机要慢GRUB 菜单有时候一闪而过。别慌如果错过了就直接再次重启多试几次总能抓住。千万不要在启动时瞎按键盘以免触发开机菜单里的其他选项。3. SSO 密码忘记用 vdcadmintool 重置 administratorvsphere.local3.1 先理解 SSO 密码重置的本质成功恢复 root 密码之后SSH 就能登进 VCSA 了。接下来处理 administratorvsphere.local 的密码。SSO 密码存在 VMware Directory Servicevmdir里也就是 vCenter 自己的 LDAP 目录服务。它和系统 /etc/passwd 完全隔离所以即使你重置了操作系统的 rootSSO 密码依然不会变必须通过 vmdir 提供的工具来改。这个工具就是 vdcadmintool部署在 VCSA 的命令行中。这个工具的用途很明确为 SSO 域里的用户重置密码、查询账户状态。我不建议手动去改后端数据库那样会带来不可预知的问题。vdcadmintool 是 VMware 官方支持的入口安全可控。3.2 vdcadmintool 重置 SSO 密码的操作步骤第一步用刚重置成功的 root 账号通过 SSH 登录 vCenter。如果之前 SSH 服务没开启可以在 vCenter 虚拟机的 DCUI 界面按 F2 进入管理设置打开 SSH 服务后再用命令行连接。记住DCUI 登录使用的账号也是 root这个密码你刚重置过所以能进去。第二步执行/usr/lib/vmware-vmdir/bin/vdcadmintool执行后屏幕上会显示一个菜单不同小版本菜单内容略有差异但大致会有这几个选项退出、重置某账号密码、设置某账号密码、查询某个账户的状态等。你要选的是类似 reset password 或者 set password 的选项。按提示输入要修改的账号默认就是 administratorvsphere.local。第三输入新密码两次。节奏放慢一点因为终端不回显密码第一次用这种交互式工具很容易输错。输完确认后工具会提示密码已更新成功。看一眼输出有没有报错如果有 error 开头的提示多半是账号名输入错误或者新密码不满足策略。第四完成修改后执行命令重启 vCenter 服务否则 SSO 的缓存可能仍然保持旧密码状态service-control --stop --all service-control --start --all这条命令会停掉 vCenter 上面所有的服务涉及 vpxd、vmon、sso、perfcharts 等然后再全部拉起。整个过程大概需要几分钟时间期间 vCenter 的 Web 界面肯定是访问不了的ESXi 上的虚拟机不受影响运行正常。如果环境里有 vSphere HA重启 vCenter 服务不会导致虚拟机 HA 重新计算不用太担心。第五步服务全部起来之后用 administratorvsphere.local 加新密码登录 vSphere Client 验证。如果登录成功SSO 密码重置完毕。3.3 重置 SSO 后容易忽略的连锁影响SSO 密码重置后很多环境会有集成的第三方工具如果它们是用同一个 SSO 账号连接 vCenter API 的对应的密码配置也得同步修改。比如常见的监控告警系统用 administratorvsphere.local 拉取 vCenter 状态你不把监控系统里的密码改成新密码第二天监控就会开始报警说 vCenter 认证失败。另外如果 vCenter 环境是多节点的比如嵌入式 PSC 与其他 vCenter 组合需要在承载 SSO 服务的那个节点上执行 vdcadmintool。这个在 VCSA 7.0 及以后基本不会遇到因为默认都是嵌入式部署单节点搞定。不过 6.7 及之前的环境还可能有单独的 PSC 节点这个要注意。还有一个小细节重置 SSO 密码之后vCenter 的证书如果绑定的是旧凭证有的版本会自动更新有的则要求重启所有服务才生效。所以我上面强调 service-control restart 是必要步骤不要图省事只改密码不重启。重启会带来短暂的服务中断但比留着隐患要好。4. log Disk Exhaustion on vc 日志盘满的治理4.1 这个报错的真正来源密码问题解决之后接下来说说 log Disk Exhaustion on vc。这个报错出现在 vCenter 的 VAMI 管理界面里路径是 https://vcenterIP:5480系统监控板块的健康状态区域。VCSA 启动时会周期性检查各个分区的空间使用率当 /storage/log 分区使用率超过 90%不同版本阈值略有差别时就会把这个告警展示出来。日志盘满的根因说白了就是 vCenter 里跑的四个大日志大户vpxdvCenter 的核心服务负责管理任务和负载迁移、vmon进程监控维护各种服务状态、sso身份认证、perfcharts性能图表。它们每天生成的日志量非常可观尤其是 vpxd.log当环境中虚拟机数量多、日常迁移频繁时一天写几 GB 很常见。如果日志轮转策略没有配置好老日志越攒越多盘就满了。这里要厘清一个概念日志盘满不等于 vCenter 虚拟机磁盘总空间耗尽。VCSA 部署的时候会分成多个分区日志、数据库、系统各占一个独立挂载点只是 /storage/log 满了其他分区可能还很空。所以平时看 df -h 不仔细很容易忽略这个隐患。4.2 诊断阶段要做的三条命令SSH 登录 vCenter 之后先执行 df 命令看整体情况df -h /storage/log df -h如果看到 /storage/log 使用率 100%先别慌这种状态下系统不会立刻崩溃但很多服务已经开始无法写入新日志间接导致各种诡异故障。然后定位到底是谁在写du -xh --max-depth2 /var/log/vmware 2/dev/null | sort -hr | head -30这个命令会按目录大小从大到小列出 /var/log/vmware 下最占空间的项。正常情况下你会看到 vpxd 目录、vmon 目录等大几十上百 GB 的惊人占用。再进一步看文件ls -lhS /var/log/vmware/vpxd/*.log* | head -20这一步是为了确认是单个活跃文件巨大还是历史轮转文件积累太多。如果是历史轮转文件比如 vpxd-2024.03.01.log 这种带日期的旧文件可以放心清理。如果是 vpxd.log 这个当前活跃文件本身就几十 GB说明某个操作或脚本在疯狂触发日志光删旧文件没用的要等排查出源头才能根治。4.3 快速清理日志释放空间的三种方式第一种方式手动删除历史日志文件。这是最快见效的办法。把带日期后缀的日志和 .gz 压缩包清掉find /var/log/vmware -name *.log.[0-9]* -delete find /var/log/vmware -name *.gz -delete这里注意删除正在被进程打开的文件会把磁盘空间立即释放但有前提文件句柄是否还占着。Linux 是这样进程如果一直打开某个被删除的文件删了之后空间不一定立刻释放只能等进程重启。所以删完别急着高兴如果 df -h 显示空间没变化那就得重启对应的日志服务让句柄释放。第二种方式触发日志轮转。VCSA 有自己的 logrotate 配置可以手动强制执行/usr/sbin/logrotate -f /etc/logrotate.conf执行过程中会按规则把当前日志切分成历史文件并把超期的清掉。执行完再看一下 df -h /storage/log这比手动删除操作要温和至少文件都是通过标准流程处理的。第三种方式重启日志相关的服务释放被占用的文件句柄。这个方法放到最后配合前两步用如果前两步已经释放了空间就不用重启。如果空间还是满的就重启 vpxd 服务service-control --restart vmware-vpxd只重启这一个服务不要一上来就 stop --all那种大杀器会让 vCenter 整个不可用仅处理日志盘满的场景没必要冒这种风险。4.4 日志盘清完之后的长期配置清理完空间接下来要做的是防止它再次爆掉。登录 VAMI进入 https://vcenterIP:5480选日志设置或者存储设置可以配置每个服务日志的保留周期、单个日志文件大小、保留副本数量。我一般建议这样的配置日志文件保留 7 天副本数 5 份左右单文件大小控制在 100MB 上下。这样就算 vCenter 每天产生 1GB 的日志整个日志分区也就顶多吃十几 GB远远够用。当然具体数字要参考你的环境规模和合规要求。同时检查一下系统日志轮转的 cron 配置确认是否正常调度。可以在 SSH 上执行crontab -l | grep logrotateVCSA 的日志轮转一般由 cron 驱动如果这个任务被禁用了日志永远都不会有轮转盘迟早会满。我记得有一次排查发现 vCenter 长时间无人维护cron 里竟然没有 logrotate 条目那就是把日志盘撑爆的根源。4.5 扩容日志盘能动手但要谨慎如果你清理完日志业务环境还是经常会触发日志盘满告警——比如承载的虚拟机数量多、日志量大到 7 天轮转都兜不住这时候就该考虑扩容 /storage/log 分区了。VCSA 的磁盘结构是部署时固定规划的不是标准的 LVM 那种方便扩展的架构。官方支持的做法基本是在 vCenter 虚拟机上加一块新虚拟磁盘然后把日志目录迁移过去。这个操作牵扯到分区挂载、fstab 修改、数据拷贝一旦出错 vCenter 可能直接起不来。我的建议是如果不是特别有把握优先考虑两个更保守的方案。一是继续压缩日志保留策略日志最多保留 3 天高频告警的日志源单独处理二是如果 vCenter 本来就计划升级或重装就趁着重装的时候把磁盘规划大一点。生产环境为了省事去冒数据迁移和挂载错误的风险确实不值。还有一点值得提如果你留意到 vCenter 日志盘满经常发生那么很大概率不只是日志量的问题而是监控缺失。管理系统自身没有监控告警等到爆了再救火这是最被动的工作方式。建议在 vCenter 的外部监控系统里加上 /storage/log 分区的使用率阈值告警比如超过 80% 就通知。5. 高频问题排查速查与避坑清单5.1 常见报错速查表我把这次操作里可能遇到的报错和解决思路整理成了一张表方便现场对照参考。现象或报错可能原因排查与解决登录 vSphere Client 提示密码不正确SSO 密码忘记或账号被锁定用 vdcadmintool 重置 administratorvsphere.local 密码并重启服务SSH 登录提示 root login disabledVCSA 禁用了 root SSH 或禁用密码登录在 DCUI 界面开启 SSH 服务或检查 /etc/ssh/sshd_config 中 PermitRootLogin 配置单用户模式里 passwd 后提示密码无效Photon OS 密码策略过严换 12 位以上含大小写和特殊字符的密码或用 root 先修改 /etc/pam.d/system-auth 策略再试不推荐GRUB 编辑后按 CtrlX 无反应UEFI Secure Boot 开启在 ESXi 虚拟机设置里临时关闭 Secure Boot操作完再恢复vdcadmintool 菜单里找不到重置选项版本菜单名称不同选 set password 或 reset password按提示输入账号即可关键是语法正确删除日志后空间并未释放日志文件句柄仍然被进程占用重启对应服务或执行 logrotate -f 让系统完成轮转和句柄释放df -h 显示 /storage/log 100%但 du 统计不到大文件有文件被删除但未释放句柄或日志在特殊挂载目录用 lsof L1 查看已删除但被占用的文件重启对应服务释放VAMI 5480 端口无法访问vCenter 服务异常或网络策略限制确认 vCenter 主机网络可达、service-control --status查看 vami-lighttpd 服务状态重启 service-control --all 后 vCenter 无法登录服务启动未完成或 SSO 服务故障等待几分钟后检查/var/log/vmware/vmon/vmon.log重点排查 vmware-vpxd 和 vmware-sso 启动状态5.2 实际操作中的独家心得这次处理完我有一个特别深的体会vCenter 的 root 密码和 SSO 密码一定要分开记录并且要有不同的有效期规划。很多人为了图省事让两个密码相同或者长期不换结果一个被遗忘就是连环套。其次遇到日志盘满时不要一上来就想着重启 vCenter 服务。重启是所有手段里影响最大的招它可能触发 vSphere HA 重新计算、vCenter 作为 NTP 客户端重同步等问题。先清理日志、再调整配置最后才考虑重启这个优先级顺序一定要守住。还有个细节VCSA 的默认日志目录 /var/log/vmware 下面Skyline 服务的日志有时候会出乎意料地膨胀。我记得有个版本 Skyline 日志有 bug短时间内生成了几百 GB 数据。这类问题靠手动清理治标不治本最好升级到固定版本或者直接关闭不需要的 Skyline 采集服务。最后再分享一个小技巧。以后遇到任何涉及 vCenter 的密码和日志问题第一时间都先别急着操作先把运行中的 vCenter 状态通过 VAMI 或者命令导出一份包括时间同步状态、证书过期时间、存储分区表。这些信息能帮你判断故障是全盘故障还是局部问题能帮你省下非常多的排查时间。这几个故障类型在虚拟化运维中都是高频问题提前掌握处理思路真到了需要救火的时候你至少不会慌。每次处理完这类的故障我都会提醒自己在资产管理表里记一笔root 密码下次变更时间、SSO 密码下次变更时间、日志盘阈值监控状态。运维的工作就是在这种一次次踩坑和填坑里慢慢把系统从“被动救火”推到“主动预防”的轨道上。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑