检测自定义镜像并修复

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

镜像检测功能用于检测自定义镜像是否为有效镜像、镜像是否可以创建出功能齐全的ECS实例等。您可以在创建镜像、导入镜像等环节使用镜像检测功能,检测完成后,您可以在镜像控制台查看镜像检测结果并根据修复建议提升镜像质量,确保ECS实例稳定高效运行。

说明
  • 镜像检测会在创建镜像、导入镜像完成后触发,不影响流程(即使检测失败)。

  • 镜像检测免费。

  • 通过检测的镜像会被标记操作系统版本(acs:ecs:image:osVersion)和内核版本acs:ecs:image:kernelVersion标签,用于镜像目录对镜像进行分类

强烈建议您在创建镜像、导入镜像时配置镜像检测。配置镜像检测有如下优势:

  • 您可以通过查看检测结果,了解操作系统真实配置信息。例如内核版本、分区配置等,详情可参考检测项说明

  • ECS镜像服务对检测结果中存在问题的检测项给出了相应的修复建议,帮助提高镜像质量。

  • ECS镜像服务根据镜像检测结果会尽可能地对当前ECS镜像做优化处理,优化后有利于加速ECS启动,提高ECS启动成功率,提高ECS系统配置稳定性。基于镜像检测服务优化后的ECS镜像派生出来的新镜像,仍然可以继承优化后的能力。

使用限制

镜像检测仅适用于创建自定义镜像使用的快照中不包含加密快照,或者使用的实例中不包含加密云盘。

镜像检测不支持Linux、Windows部分操作系统,具体内容可参见下表。

不支持的Linux操作系统列表

操作系统

版本

Gentoo

Gentoo 13 64bit

Gentoo_32

Gentoo_64

Gentoo_arm64

Aliyun

LifseaOS 10 64

LifseaOS 3 64 位

LifseaOS 3 64 位 GPU

FreeBSD

FreeBSD 10.1 64

FreeBSD 8.2 64

Freebsd_32

Freebsd_64

FreeBSD 11.1 64

FreeBSD 11.2 64

FreeBSD 11.3 64

FreeBSD 12.1 64

FreeBSD 11.4 64

Freebsd_arm64

FreeBSD 13.0 64

FreeBSD 12.3 64

CoreOS

CoreOS 681.2.0 64

CoreOS_32

CoreOS_64

CoreOS 1353.8.0 64

CoreOS 1465.8.0 64

CoreOS 1576.5.0 64

CoreOS 1688.5.3 64

CoreOS 1745.7.0 64

CoreOS 2023.4.0 64

CoreOS 2247.6.0 64

CoreOS 2303.3.0 64

CoreOS 2303.4.0 64

CoreOS 2345.3.0 64

CoreOS_arm64

Fedora CoreOS

FedoraCoreOS_64

Fedora CoreOS 33.20210217.3.0_3

FedoraCoreOS_arm64

Fedora CoreOS 34.20210529.3.0_3

Solaris

Solaris 10u8 64

mars

Aliyun Customized Linux

Customized Linux

CustomizedLinux_64

CustomizedLinux_32

CustomizedLinux_arm64

不支持的Windows操作系统列表

操作系统

版本

Windows Server 2008

Windows Server 2008 标准版 64位中文版

Windows Server 2008 标准版 64位英文版

Windows Server 2008 标准版 SP2 32位中文版

Windows Server 2008 企业版 32位中文版

Windows Server 2008 标准版 SP2 32位英文版

WindowsServer2008_64

WindowsServer2008_32

Windows Server 2008 标准版 SP2 32位日文版

Windows Server 2003

Windows Server 2003 R2 标准版 SP2 64位中文版

Windows Server 2003 R2 标准版 SP2 32位中文版

Windows Server 2003 R2 标准版 SP2 64位英文版

Windows Server 2003 R2 企业版 64位英文版

Windows Server 2003 R2 企业版 64位中文版

Windows Server 2003 R2 企业版 32位中文版

WindowsServer2003_64

WindowsServer2003_32

Windows 7

Windows7_32

Windows 8

Windows8_32

Windows 10

Windows10_32

配置镜像检测

创建镜像时配置检测

使用控制台

目前,在ECS控制台上创建自定义镜像时已默认选择执行镜像检测,保持不变即可。更多信息,请参见使用实例创建自定义镜像使用快照创建自定义镜像

使用API

通过CreateImage接口设置入参DetectionStrategy=Standard即可。可通过OpenAPI Explorer运行该接口,免去您计算签名的困扰,也可以自动生成SDK代码示例。

导入镜像时配置检测

使用控制台

目前,在控制台上导入自定义镜像时已默认选择执行镜像检测,保持不变即可。更多信息,请参见导入自定义镜像

使用API

通过ImportImage接口设置入参DetectionStrategy=Standard即可。可通过OpenAPI Explorer运行该接口,免去您计算签名的困扰,也可以自动生成SDK代码示例。

查看镜像检测结果

使用控制台

  1. 在自定义镜像页面找到已创建的镜像,等待镜像状态为可用之后,会自动执行镜像检测任务。

    image.png

  2. 将鼠标悬浮至检测完成,然后单击查看详情即可查看详细的镜像检测结果。

  3. (条件必选)如果有待修复项,按照建议进行修复。

    • (仅适用于Linux)您可以单击一键修复通过系统运维管理 OOS(CloudOps Orchestration Service)的公共模板ACS-ECS-RepairImage进行修复。

    • 也可以根据镜像详情中的修复建议手动修复,镜像检测项的详细说明及修复建议请参见检测项说明

    image.png

使用API

通过DescribeImages根据检测镜像的镜像ID查询即可。可通过OpenAPI Explorer运行该接口,即可免去您计算签名的困扰,也可以自动生成SDK代码示例。

说明

返回值中DetectionOptions即为检测结果,其中Status为检测任务状态,Item是每个检测项结果。

检测项说明

Linux检测项

Linux操作系统镜像检测项的详细说明及修复建议如下表所示。

检测项

检测说明

修复建议

GUESTOS.Platform

系统平台,只能是Linux操作系统。

不涉及

GUESTOS.OSVersion

系统版本。

不涉及

GUESTOS.Architecture

系统架构。

不涉及

GUESTOS.RtcTimeMode

镜像硬件时钟时区RTC (Real Time Clock) ,包括UTClocal。建议设置为标准的UTC模式。

如何设置硬件时钟的时间标准为UTC,请参见Linux时间和时区说明

GUESTOS.BootMode

镜像启动模式,包括LEGACYUEFI。

不涉及

GUESTOS.KernelVersion

内核版本。

不涉及

GUESTOS.Virtio

镜像是否安装virtio驱动。ECS实例运行需要相关虚拟化设备驱动支持,未安装该驱动会导致实例启动异常。

如何为镜像安装virtio驱动,请参见安装virtio驱动

GUESTOS.Nvme

镜像是否安装NVMe驱动。部分ECS规格,例如ecs.g7se使用基于NVMe协议挂载的云盘,镜像中需要安装相关驱动。

如何为镜像安装NVMe驱动,请参见如何为已有自定义镜像安装NVMe驱动?

GUESTOS.Fstab

镜像中/etc/fstab文件配置了系统磁盘设备挂载信息,错误的配置会导致系统启动异常,例如配置的挂载设备信息不存在、设备UUID错误等。

如何正确配置/etc/fstab,请参见fstab文件中配置UUID方式自动挂载数据盘

GUESTOS.Grub

镜像中grub引导文件是否正常。例如device设备配置异常、相关设备不存在、UUID错误等,会导致系统启动异常。

如何为镜像生成正确的GRUB配置文件,请参见Linux实例的grub启动配置错误

GUESTOS.Dhcp

镜像中网络配置文件是否设置为DHCP模式,如果镜像中设置为静态模式,会导致实例启动后网络配置异常。

如何设置镜像网络配置模式为DHCP,请参见如何在Linux镜像中配置网络为DHCP

GUESTOS.Selinux

镜像是否关闭SELinux。云上镜像不建议开启SELinux,有可能会导致系统启动异常。

如何关闭SELinux,请参见开启或关闭SELinux

GUESTOS.OnlineResizeFS

镜像是否支持根分区自动扩容。镜像中安装有cloud-init、growpart命令等,使用镜像创建实例后,根分区会自动扩容。例如您的镜像空间大小是20 GB,创建实例时系统盘大小为100 GB,则实例创建后,根分区会自动扩容至100 GB。

如何配置镜像支持自动扩容,请参见安装cloud-init

GUESTOS.SystemImage

镜像是否是有效的系统盘镜像,请不要导入ISO镜像、空镜像等无效镜像。

不涉及

GUESTOS.CloudAssistant

镜像是否安装云助手。云助手是为ECS打造的原生自动化运维工具,通过免密码、免登录、无需使用跳板机的形式,在ECS实例上实现批量运维、执行命令(Shell、PowerShellBat等)和发送文件等操作。建议您在镜像中安装云助手,帮助您高效运维ECS。

如何安装云助手,请参见安装云助手Agent

GUESTOS.CloudInit

镜像中是否安装cloud-init。cloud-init是标准的云服务器初始化配置服务,为实例配置hostname、密钥、根分区扩容等。

如何为镜像安装cloud-init,请参见安装cloud-init

GUESTOS.SecurityCenterAgent

镜像是否安装云安全中心Agent。云安全中心作为一个实时识别、分析和预警安全威胁的统一安全管理系统,为您提供安全态势总览、防勒索、防病毒、防篡改、合规检查等安全能力,全方位检测和防护您的服务器和Web应用安全。

如何为镜像安装云安全中心Agent,请参见安装客户端

GUESTOS.SupportMocInstanceTypes

检测镜像是否支持阿里云ECS神龙规格。

阿里云最新的ECS实例通常为神龙规格,例如ecs.g6、ecs.g7等。如果镜像的系统和内核版本过低,在相关规格上启动会有异常。具体的实例规格信息,请参见实例规格族

  • 如果您使用的是CentOS 5系统,建议您升级到最新的CentOS 5.11。更多信息,请参见如何解决实例迁移后的宕机问题?

  • 不支持神龙规格的系统通常是已经EOL不再维护的低版本系统,阿里云建议您尽早更新升级,使用各发行厂商正在维护更新的操作系统版本。

Windows检测项

Windows操作系统镜像检测项的详细说明及修复建议如下表所示。

检测项

检测说明

修复建议

GUESTOS.Platform

系统平台,只能是Windows操作系统。

不涉及

GUESTOS.OSVersion

系统版本。

不涉及

GUESTOS.Architecture

系统架构。

不涉及

GUESTOS.KernelVersion

内核版本。

不涉及

GUESTOS.Virtio

镜像中是否安装了virtio驱动。ECS实例运行依赖相关虚拟化设备驱动,未安装该驱动会导致实例启动异常。

如何为镜像安装virtio 驱动,请参见安装virtio驱动

GUESTOS.BCD

镜像中的BCD文件是否正确。BCD文件丢失或者损坏会导致实例无法启动。

请使用正确的BCD文件。

GUESTOS.Registry

镜像中的注册表文件是否正确。注册表文件丢失或者损坏会导致实例启动异常。

请使用正确的注册表文件。

GUESTOS.Hotfix

镜像中的补丁是否正确。缺少必要的补丁或者安装了有问题的补丁,会导致实例启动异常。

  • 卸载错误补丁。错误补丁集合:KB5009624、KB5009595、KB5009546、KB5009557、KB5009555、KB5014738、KB5014702、KB5014692、KB5014678。

  • Microsoft Windows Server 2008 R2 64位操作系统:还需要安装KB3033929补丁。

GUESTOS.Disk

镜像中的磁盘设置是否正确。如果在磁盘上有残留的驱动项,可能会导致实例启动异常。

清理注册表残留驱动

GUESTOS.Sysprep

检测镜像制作时Sysprep进程是否完成。如果在制作过程中,强制系统关机等操作导致Sysprep进程中止,可能会导致实例启动异常。

请重新制作镜像,注意不要中断系统的Sysprep进程。具体操作,请参见创建虚拟机并安装操作系统

GUESTOS.Update

检测镜像制作时Update进程是否完成。如果在制作过程中,强制系统关机等操作导致Update进程中止,可能会导致实例启动异常。

请重新制作镜像,注意不要中断系统的更新进程。具体操作,请参见创建虚拟机并安装操作系统

GUESTOS.Xen

存在残留的Xen驱动,可能会导致系统无法正常启动。

配置Xen驱动不生效

GUESTOS.CloudAssistant

镜像是否安装云助手。云助手是为ECS打造的原生自动化运维工具,通过免密码、免登录、无需使用跳板机的形式,在ECS实例上实现批量运维、执行命令(Shell、PowerShellBat等)和发送文件等操作。建议您在镜像中安装云助手,帮助您高效运维ECS。

如何安装云助手,请参见安装云助手Agent

GUESTOS.Server

镜像中的服务配置是否正确。如果配置了不允许安装驱动,会导致实例更新驱动失败。

配置驱动可安装

GUESTOS.DesktopConfig

检测桌面配置文件(desktop.ini)是否缺失。如果缺失,将导致桌面配置失效。

请配置正确的desktop.ini。

GUESTOS.BootMgr

检测系统引导管理器(BootMgr)是否缺失。如果缺失,将导致系统无法启动。

请配置正确的BootMgr。

镜像检测修复建议

以下为您详细说明Windows镜像常见的检测修复建议,如果您有同样问题,可参考该修复方式。

清理注册表残留驱动

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control注册表树包含了控制系统启动和设备某些方面的配置信息,而其中的Class子项包含了设备上注册的一些过滤驱动。如果这些过滤驱动实际已被删除但是注册表中的过滤驱动中还残留着,会导致实例启动异常,因此需要清理注册表的过滤驱动残留项。以下主要介绍如何手动清理磁盘类注册表中的残留项。

  1. 登录制作镜像文件的源服务器。

  2. 打开注册表。

    Windows 10为例,在任务栏的搜索框中输入regedit,按Enter即可打开注册表。

  3. 打开磁盘注册表项。

    磁盘注册表路径为HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}

  4. 确认并删除残留驱动。

    1. 查看UpperFilter属性的值,确认系统是否有残留的驱动。

      如果对应的驱动在镜像中已经不存在(在C:\Windows\System32\drivers中查看),但在UpperFilters中还残留着,表示系统有残留驱动。

      警告

      请您谨慎执行删除驱动操作,务必确认驱动不是系统自带驱动,避免误删除驱动导致系统异常。

      例如,如下图所示的partmgr是系统自带驱动,此时不能在UpperFilters中将其删除。系统自带驱动

    2. UpperFilters中删除残留驱动名称。

配置Xen驱动不生效

专有网络不使用Xen驱动,但在一些老镜像中可能残留Xen驱动,导致实例启动异常。可以在注册表中配置Xen驱动使其不生效。

  1. 登录制作镜像文件的源服务器。

  2. 打开注册表。

    Windows 10为例,在任务栏的搜索框中输入regedit,按Enter即可打开注册表。

  3. 打开对应的注册表项。

    注册表路径为HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\XenPCI\Parameters

  4. 修改注册表hide_devices属性的值,将其置为空。

    修改注册表

配置驱动可安装

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services注册表树记录着系统中的所有服务,其中一些服务可以控制驱动是否允许被安装,如果设置了不允许安装,用该镜像创建的实例将无法更新驱动。因此需要修改镜像的注册表禁止安装驱动属性。

  1. 登录制作镜像文件的源服务器。

  2. 打开注册表。

    Windows 10为例,在任务栏的搜索框中输入regedit,按Enter即可打开注册表。

  3. 打开对应的注册表项。

    • Windows Server 2008 R2以上系统:注册表路径为HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\DeviceInstall\Parameters

    • Windows Server 2008 R2及以下系统:注册表路径为HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\PlugPlay\Parameters

  4. 修改注册表禁止安装驱动属性。如果有DeviceInstallDisabled属性且值非0,则需要将其值修改为0或者删除该属性。

    • 例如Windows Server 2008 R2系统:2008R2系统注册表

    • 例如Windows Server 2016系统:windows server 2016注册表

相关文档

  • 镜像服务商在云市场发布镜像前或在本地自行制作自定义镜像时,需满足与ECS实例规格适配的规范要求。更多信息,请参见阿里云镜像规范(Linux)阿里云镜像规范(Windows)

  • 系统运维管理 OOS(CloudOps Orchestration Service)是免费的云上自动化运维平台,通过模板来定义所需要编排的运维操作。OOS提供的公共模板供您直接使用和参考,您也可以编写自定义模板。更多信息,请参见模板概述

    OSZAR »