虚拟机故障救援
虚拟机在某些场景中(错误修改 fstab、文件系统错误需要执行 fsck 等场景)无法正常启动,遇到此类问题可以通过救援模式修复 rootfs 或读取系统中数据。
操作步骤
获取镜像地址
-
在左侧导航栏中,单击 虚拟化管理 > 虚拟机镜像。
-
选择平台自带的 来源 为 镜像仓库,且 操作系统 为 CentOS 或 Ubuntu 的虚拟机镜像,单击右侧的
> 更新。 -
复制并保存 镜像地址,本文档以
192.168.1.1:11443/3rdparty/vmdisks/centos:7.9为例进行介绍。 -
单击 取消。
修改虚拟机 YAML 文件
-
进入 Container Platform。
-
在左侧导航栏中,单击 虚拟化 > 虚拟机。
-
单击需要修复的虚拟机右侧的
> 停止,将虚拟机 停止 或 强制停止。 -
单击虚拟机右侧的
> 更新。 -
切换至 YAML,修改如下字段。
-
在
spec.template.spec.domain.devices.disks字段中增加如下内容。其中,增加 bootOrder 可以控制虚拟机启动时的主引导磁盘,bootOrder 数值越小越优先启动。注意:若原
spec.template.spec.domain.devices.disks字段下有bootOrder: 1,需增大原来的数值,确保新增的 bootOrder 数值比原数值小。disks: - bootOrder: 1 disk: bus: virtio name: containerdisk修改后的 YAML 示例:
domain: devices: disks: - bootOrder: 1 #增加的字段 disk: bus: virtio name: containerdisk - disk: bus: virtio name: cloudinitdisk - disk: #增大原 bootOrder: 1 的数值 bus: virtio name: rootfs bootOrder: 10 - disk: bus: virtio name: "1" -
在
spec.template.spec.volumes字段中增加如下内容。注意:请使用 获取镜像地址 中获取的镜像地址替换下述
image中的镜像地址。- containerDisk: image: 192.168.1.1:11443/3rdparty/vmdisks/centos:7.9 name: containerdisk修改后的 YAML 示例:
volumes: - containerDisk: #增加的字段 image: 192.168.1.1:11443/3rdparty/vmdisks/centos:7.9 name: containerdisk - dataVolume: name: k2-rootfs name: rootfs - dataVolume: name: k2-1 name: "1"
-
-
单击 更新。
注意:YAML 文件修改完成后,请勿切换至 表单,直接单击 更新 即可。
-
单击虚拟机右侧的
> 启动。
挂载原有 rootfs 并进行修复
-
使用原密码或密钥登录虚拟机,输入
df -h /命令,发现 rootfs 的文件系统已经替换。可以使用 mount 相关命令挂载或使用 fsck 相关命令检查和修复原文件系统。 -
操作完成后关闭虚拟机。
还原虚拟机 YAML 文件
按照 修改虚拟机 YAML 文件 中的步骤,将虚拟机 YAML 文件还原至未修改前的状态,至此虚拟机已可以正常启动。