部署在 KVM 主机上的 NSX Manager 运行 get serviceget interface 等 CLI 命令时返回错误。

问题

CLI 命令 get service 返回错误。例如,

nsx-manager-1> get service
% An error occurred while processing the service command

其他 CLI 命令也可能返回错误。get support-bundle 命令指示 /tmp 目录已变为只读。例如,

nsx-manager-1> get support-bundle file failed-to-get-service.tgz
% An error occurred while retrieving the support bundle: [Errno 30] Read-only file system: '/tmp/tmpHzXF1u'

/var/log/messages-<timestamp> 日志具有如下消息:

Nov 17 07:26:48 no kernel: NMI watchdog: BUG: soft lockup - CPU#5 stuck for 23s! [qemu-kvm:4386]

原因

NSX Manager 设备上的一个或多个文件系统已损坏。在 https://access.redhat.com/solutions/22621 中记录了一些可能的原因。

要解决此问题,可以修复损坏的文件系统或从备份执行还原。

解决方案

  1. 选项 1:修复损坏的文件系统。以下步骤专用于 KVM 主机上运行的 NSX Manager
    1. 运行 virsh destroy 命令以停止 NSX Manager 虚拟机。
    2. 在 qcow2 映像上以写入模式运行 virt-rescue 命令。例如,
      virt-rescue --rw -a nsx-unified-appliance-2.0.0.0.0.6522097.phadniss-p0-DK-to-DGo-on-rhel-prod_nsx_manager_1.qcow2
    3. virt-rescue 命令提示符下运行 e2fsck 命令来修复 tmp 文件系统。例如,
      <rescue> e2fsck /dev/nsx/tmp
    4. 如有必要,再次运行 e2fsck /dev/nsx/tmp,直到不再有错误。
    5. 使用 virsh start 重新启动 NSX Manager
  2. 选项 2:从备份执行还原。

    有关说明,请参见《NSX-T 管理指南》