文档

检测镜像是否符合规范

更新时间:

使用镜像规范检查工具,检测镜像中的操作系统是否符合的导入条件,例如是否能创建出功能齐全的ECS实例。本文以CentOS 7.9 64位操作系统为例,为您介绍如何检测镜像是否符合规范。

背景信息

为提高镜像制作的效率,我们推荐您使用ECS镜像规范检测工具。检测工具能基于Linux服务器环境自动检测各项配置指标、快速定位不合规配置并给出解决意见,省去您逐项检查系统的时间,方便您快速修复系统配置并制作出符合规范的镜像。

说明

目前检测工具仅支持检测除FreeBSD、Fedora CoreOS以外的Linux系统,不支持检测Windows系统。

操作步骤

  1. 登录您制作镜像文件的源服务器、虚拟机或者其他云平台的云主机。

  2. 依次运行以下命令,下载并解压检测工具。

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/imagecheck/ecsgo-helper.tar.gz
    tar -xf ecsgo-helper.tar.gz

    您也可以通过浏览器下载检测工具

  3. 执行以下命令,运行检测工具。

    sudo ./ecsgo-helper.sh image-online-diagnostic

    等待检测工具检测系统配置,检测结果类似如下信息。各检测结果说明,请参见检测项说明

    ------------------------------------------------------------
    
                OS: CentOS 7.9.2009   Kernel: 3.10.0-1160.76.1.el7.x86_64
                Arch: x86_64       RTC-Mode: utc       Boot-Mode: Legacy
    
    ------------------------------------------------------------
    Image Check Result
    Virtio                                                                                 [OK]
    Nvme                                                                                   [OK]
    Fstab                                                                                  [OK]
    Grub                                                                                   [OK]
    Dhcp                                                                                   [OK]
    Selinux                                                                                [OK]
    OnlineResizeFS                                                                         [OK]
    CloudAssistant                                                                         [OK]
    CloudInit                                                                              [OK]
    SecurityCenterAgent                                                                    [OK]
    SupportMocInstanceTypes                                                                [OK]
    DiskUsage                                                                              [OK]
    InodeUsage                                                                             [OK]
    SystemFileAttribute                                                                    [OK]
    CriticalUser                                                                           [OK]
    QemuGuestAgent                                                                         [OK]
    SshConfig                                                                              [OK]
    Firewall                                                                               [OK]
    LibDirectory                                                                           [OK]
    
             Total case Count                19
                Successes:                   19
                Failures:                    0
                Warnings:                    0
    
    ------------------------------------------------------------

检测项说明

检测工具会根据检测项的等级给出OKFAILED或者WARNING检测结果。

  • OK:检测项均符合要求。

  • FAILED:检测项不符合要求,使用该自定义镜像创建的ECS实例会出现无法正常启动、网络异常等严重问题,建议您立即修复报错项后再导入镜像。

  • WARNING:检测项不符合要求,使用该自定义镜像创建的ECS实例缺少云安全中心保护、无法使用云助手自动化运维等问题,建议您修复报错项后再导入镜像,以提高您云上运维的效率。

检测工具主要检查源服务器中以下配置项:

检测项

等级

检测项说明

不合规后果

合规建议

Virtio

检测镜像中是否安装virtio驱动。

阿里云ECS通常为基于KVM的虚拟机,因此依赖镜像中安装虚拟磁盘的virtio驱动。

ECS启动异常

安装virtio驱动

Nvme

检测镜像中是否安装NVMe驱动。

ECS部分规格使用NVMe协议云盘,例如ecs.g7se,要求镜像包含NVMe协议的相关驱动。NVMe相比SCSI、virtio-blk等传统驱动协议速度更快、传输带宽更高,因此建议您在镜像中安装NVMe驱动,以支持相关实例规格。更多信息,请参见NVMe协议介绍

无法使用NVMe协议云盘的实例规格,例如ecs.g7se

Linux自定义镜像如何适配NVMe系统盘?

Fstab

检测/etc/fstab配置是否正常。

错误的配置会导致系统启动异常,例如配置的挂载设备信息不存在、设备UUID错误等。

系统启动异常

如何配置正确的/etc/fstab,请参见如何在fstab文件中配置文件磁盘标识方式为UUID

Grub

检测grub配置文件是否正常。

grub引导内核的加载和启动,是系统的重要配置。错误的配置将导致系统启动异常,建议您检查系统中的配置文件是否正确,例如grub文件中不要使用设备名来指定启动分区,如root=/dev/sda1,在不同的环境中设备名称可能发生变化,建议您使用UUID来指定启动分区。

系统启动异常

如何为镜像生成正确的配置grub文件,请参见如何修改Linux镜像Grub文件中的文件磁盘标识符为UUID

Dhcp

检测网络配置是否为DHCP。

建议您为网络设备配置DHCP的方式,static静态方式会导致失利网络配置失败,连接异常。我们还建议您在grub内核启动参数中增加配置选项net.ifnames=0来禁用内核网络接口重命名行为,使网卡名称为eth0。

系统网络异常

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

Selinux

检测是否禁用SELinux,阿里云建议您关闭SELinux。

无法正常启动ECS实例

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

OnlineResizeFS

检测镜像是否支持在线扩容文件系统。

例如您的镜像虚拟磁盘空间大小为10 GB,您购买ECS实例的系统盘为100 GB,如果您安装了cloud-init、growpart等组件,相关组件在实例初始化时会将根分区及文件系统扩容,扩容至您系统盘的大小100 GB。更多信息,请参见扩容分区和文件系统(Linux)

实例根分区无法扩容

CloudInit

检测是否安装cloud-init服务。

cloud-init能在ECS实例启动阶段完成系统初始化配置,包括NTP、软件源、主机名和SSH密钥对等,同时执行实例自定义数据(User data)脚本。

系统初始化配置缺失

安装cloud-init

DiskUsage

检测磁盘空间使用率是否正常。

您可以执行df -h命令来检查您磁盘空间的使用率,确保有充足空间。

系统启动异常

删除不必要文件

InodeUsage

检测磁盘inode使用率是否正常。

您可以执行df -i命令来检查磁盘inode的使用率。

系统启动异常

删除不必要文件

SystemFileAttribute

检测系统中关键配置文件的文件属性是否正常。

实例启动异常、功能异常

不要使用chattr命令锁定/etc/shadow等文件

CriticalUser

检测系统中关键用户(例如root)是否存在。

关键用户的缺失会导致系统启动异常,实例功能使用异常,例如无法使用用户名和密码远程连接ECS实例。

实例启动异常、功能异常

保留root账号

QemuGuestAgent

检测系统中是否安装qemu-guest-agent。

该软件是运行在虚拟机上,和宿主机交互通信,会导致ECS所需要的部分服务不可用,实例功能不全。

实例功能异常

卸载qemu-guestos-agent

SshConfig

检测sshd服务的配置文件(通常是/etc/ssh/sshd_config)是否正常。

sshd配置文件异常会导致sshd服务启动失败,进而导致SSH连接ECS失败,检查sshd配置文件的正确性和有效性很有必要。通常您可以执行以下命令:

  • 执行sudo sshd -T命令展示您所有的sshd配置选项。

  • 执行sudo sshd -t 命令验证sshd配置文件的合法性;若合法,则没有信息输出。

实例SSH连接失败

检查sshd配置文件

Firewall

检测防火墙服务是否开启。

阿里云建议您关闭系统中的防火墙服务,使用ECS安全组统一管理您云上实例的出入流量。更多信息,请参见安全组概述

系统防火墙应用可能导致您访问实例失败等

关闭系统防火墙服务

LibDirectory

在RedHat系列Linux系统中,/lib/lib64通常为一个链接文件,指向/usr/lib/usr/lib64中,请不要随意修改该链接文件,否则可能导致系统异常。

系统功能异常

链接文件/lib/lib64的指向位置不能为绝对路径,修改指向位置为相对路径

SupportMocInstanceTypes

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

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

不能使用ecs.g6、ecs.g7等神龙规格族

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

CloudAssistant

检测镜像是否安装云助手。

云助手是专为云服务器ECS打造的原生自动化运维工具,阿里云建议您为镜像安装云助手服务,实现云上ECS高效运维。更多信息,请参见云助手概述

云上运维不便

安装云助手Agent

SecurityCenterAgent

检测是否安装云安全中心Agent。

安装云安全中心的Agent插件后,您的服务器才能受到云安全中心的保护。

无法识别实例中的漏洞问题,缺少云安全中心的保护

安装Agent

后续步骤

通过工具检测镜像符合规范后,再获取镜像文件。具体操作,请参见获取Linux镜像文件

  • 本页导读 (1)