跳转到内容

BMC(Redfish)

BMC(Baseboard Management Controller)是服务器主板上的一台小型计算机,使用独立的电源和 网络连接。即使主机关机、无响应或尚未安装操作系统,BMC 仍可能可访问。SSH 和 Monitor agent 依赖主机运行,因此这些情况下无法提供连接。

Server Box 通过 Redfish 连接 BMC。Redfish 是企业服务器使用的 HTTPS 管理 API。仅支持 IPMI 的 BMC 暂不支持;设计原因见BMC 工作原理。

  • **电源状态:**即使 SSH 和 Monitor agent 不可用,也能查看主机是开机还是关机。
  • **硬件传感器:**读取 BMC 上报的进风口和 CPU 温度、风扇转速及机箱功耗。
  • **电源控制:**开机、请求操作系统关机或重启,或直接执行电源循环和强制断电。

BMC 用于补充 SSH,不会替代常规主机连接。同一台服务器可以同时配置 SSH、Monitor agent 和 BMC。

  1. 打开服务器编辑页,找到 BMC(Redfish)。
  2. 填写 BMC 地址,不要填写主机操作系统的地址。例如 https://10.0.0.9;只需填写协议、 主机和端口,Redfish 路径由 App 补全。
  3. 选择已有 BMC 账户,或新建账户。
  4. 打开证书,将 fingerprint 与 BMC 网页界面显示的值核对。确认设备无误后再接受证书。
  5. 保存服务器。

保存后,服务器详情页会显示 BMC 卡片,其中包含 BMC 上报的状态和硬件电源控制。

BMC 账户是独立记录,不需要在每台服务器中重复填写用户名和密码。一个机架中的多台服务器通常共用账户,因此修改一次账户即可更新所有引用它的服务器。

账户管理入口是 设置 → BMC 账户。每个账户会显示当前引用它的服务器数量;修改账户会影响所有这些服务器。

删除账户不会删除引用它的服务器。相关服务器会保留 BMC 地址,但不再拥有可用账户,编辑页会显示这一状态。

BMC 通常使用自签名证书,没有公共证书颁发机构为其背书。Server Box 不提供“忽略证书”选项,因为 BMC 具有电源控制权限,关闭证书验证会允许地址上的任意服务冒充 BMC。

App 使用类似 SSH host key 的首次使用信任机制:

  1. 首次连接时显示证书 fingerprint。
  2. 你核对 BMC 网页界面中的 fingerprint 后,确认是否信任。
  3. 后续连接只接受已保存的证书。
  4. fingerprint 变化时拒绝连接并显示新旧值,要求你重新核对。

BMC 重新生成证书或升级固件后,fingerprint 可能正常变化;中间人攻击也会表现为 fingerprint 变化。接受新证书前,请先确认 BMC 的身份。

部分 BMC 出厂证书已经过期。App 会提示证书过期,但仍允许你在确认设备身份后接受它。

电源操作分为经过操作系统的操作和直接作用于硬件的操作:

操作 经过操作系统 说明
关机 是 请求操作系统关机,需要操作系统正在运行
重启 是 请求操作系统重启
开机 否 对已关机的主机执行开机
强制断电 否 直接切断电源,未保存的数据会丢失,文件系统不会正常卸载
电源循环 否 先断电,再重新上电

优雅关机和优雅重启表示请求已接受,不代表操作已经完成。 App 发送请求后会轮询 BMC 上报的电源状态,而不会只相信 HTTP 成功响应。有些固件会接受请求并返回成功,但操作系统可能没有执行操作。

如果等待时间内电源状态没有变化,App 会显示“已接受”,而不是“已确认”。“已接受”表示 BMC 收到了请求;“已确认”表示 App 观察到了预期的状态变化。

不同 BMC 支持的 ResetType 不同。App 会读取设备声明的可用操作,只显示设备实际提供的操作;未声明的操作不会显示为按钮。

当前尚未实现:

  • 事件日志
  • 存储清单
  • 启动项覆盖
  • 虚拟介质
  • 通过 Monitor agent 中继访问 BMC

如果 BMC 位于隔离的管理网络中,手机必须能够直接路由到 BMC。Monitor agent 当前不能作为 BMC 的代理。

App 还没有建模物理主机和虚拟机之间的从属关系。多个虚拟机可能指向同一台物理主机的 BMC;在任意虚拟机页面执行电源操作,都会影响整台物理主机及其所有虚拟机,读取到的电源状态也是物理主机的状态。请只在物理主机上配置 BMC。