老哥们,今天遇到一个关于存储管理的问题——在替换或删除 SMS(Storage Monitoring Service)证书后,IOFilters(I/O 过滤器)在 vCenter Server 中显示为脱机状态。竟然找到官方KB,VMware KB 403850,原来这是一个证书信任关系导致的问题。分享下
故障现象还原
1. 证书操作后问题出现
-
- 替换或删除了 SMS 自签名证书(由于证书过期或即将过期)
- 重启了 SPS(Storage Policy Service)服务
- 存储提供商在 vCenter Server 上显示为脱机状态
- IOFilters 在 GUI 中显示为脱机状态
2. 关键日志信息
在 /var/log/vmware/vmware-sps/sps.log 文件中,会看到以下错误信息:
[YYYY-MM-DDTHH:MM:SS] [pool-10-thread-5] ERROR opId=sps-Main-101761-246 com.vmware.vim.sms.provider.vasa.alarm.AlarmDispatcher - Error: org.apache.axis2.AxisFault: self signed certificate occured as provider: https://:9080/version.xml:9080/version.xml is offline
[YYYY-MM-DDTHH:MM:SS] [pool-10-thread-1] ERROR opId=sps-Main-101761-246 com.vmware.vim.sms.provider.vasa.alarm.AlarmDispatcher - Error: org.apache.axis2.AxisFault: self signed certificate occured as provider: https://:9080/version.xml:9080/version.xml is offline
核心原因分析
这个问题的根本原因是:
SMS 证书变更导致证书信任关系中断
IOFilter VP(VASA 提供商)与 SMS 通信时使用 SMS 自签名证书和 VP 证书。当 SMS 自签名证书被删除时,所有 Vasa 提供商都会显示为脱机状态,这是预期的行为,需要重新注册 IOFilter VP。
故障排查与解决方法
1. 准备工作
# 连接到 vCenter Server
Connect-VIServer -User -Password
2. 方法一:使用官方脚本(推荐)
按照 KB 文章中提到的“Resolving IOFilter disconnected/offline post upgrade to 7.0u2”中的脚本。
3. 方法二:使用 PowerCLI 脚本
# 列出所有 IOFilter 类型的 Vasa 提供商
Get-VasaProvider | Where-Object {$_.Namespace -eq 'IOFILTERS'} | Select-Object Name, Status, Url
# 删除脱机的 IOFilter 提供商
Get-VasaProvider | Where-Object {$_.Namespace -eq 'IOFILTERS' -and $_.Status -like 'offline'} | Remove-VasaProvider
# 同步存储提供商
# 在 vSphere Client 中,导航到“vCenter > 配置 > 存储提供商”,然后点击“同步存储提供商”
4. 验证解决方案
# 再次检查存储提供商状态
Get-VasaProvider | Where-Object {$_.Namespace -eq 'IOFILTERS'} | Select-Object Name, Status, Url
# 检查 SPS 服务状态
Get-Service | Where-Object {$_.Name -like '*sps*'}
# 检查存储策略是否正常工作
Get-SpbmStoragePolicy
5. 将 VASA 提供商 MOID 映射到 ESXi 主机
Get-VasaProvider | Select-Object `
@{N="MOID";E={$_.Id}},
@{N="Host";E={[System.Uri]$_.Url | Select-Object -ExpandProperty Host}}
预防措施
1. 定期检查证书状态
# 检查 SMS 证书状态
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store SMS --text | grep -E "Alias|Subject|Not After"
# 检查其他重要证书的状态
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOT_CRLS --text
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store MACHINE_SSL_CERT --text
2. 在证书变更前备份
# 备份 vCenter Server
# 可以使用 vCenter Server Appliance 的备份功能
# 或者使用 PowerCLI 备份关键配置
# 或者拍摄快照(仅用于临时测试)
Get-VM -Name | New-Snapshot -Name "Before_SMS_Certificate_Change" -Description "Backup before SMS certificate change"
3. 使用增强型链接模式的注意事项
# 如果 vCenter 处于增强型链接模式,需要:
1. 在所有链接的 vCenter 上拍摄脱机快照
2. 协调证书变更操作
3. 在操作完成后同步数据
常见问题解答
Q:为什么替换 SMS 证书后 IOFilters 会脱机?
A:因为 IOFilter VP 与 SMS 通信时使用 SMS 自签名证书,当证书变更时,信任关系会中断。
Q:是否可以避免这个问题?
A:可以通过续期证书而不是替换证书来减少这个问题,但有时证书替换是必要的。
Q:PowerCLI 脚本是否会影响运行中的虚拟机?
A:只要操作正确,删除脱机的 IOFilter 提供商不会影响正在运行的虚拟机。
Q:如何确认同步存储提供商操作是否成功?
A:可以通过在 GUI 中检查存储提供商状态或使用 PowerCLI 验证来确认。
风险评估
1. 业务影响
-
- 存储提供商脱机
- IOFilters 功能可能不可用
- 存储策略可能无法正确执行
- 可能影响数据保护和存储优化功能
2. 解决方法的风险
- 删除 IOFilter 提供商可能会导致数据丢失风险
- 需要谨慎操作,确保删除的是正确的脱机提供商
- 同步操作可能需要一些时间才能完成
Reference: VMware KB 403850







