导入镜像文件前,建议您使用镜像规范检测工具(本文简称检测工具),自动检测Linux操作系统设置是否符合导入条件。工具主要检测导入的镜像文件是否为有效镜像、是否可以创建出功能齐全的ECS实例等。本文以CentOS 7.9 64位操作系统为例,为您介绍检测工具的使用方法。
背景信息
ECS支持使用自定义镜像创建实例,该自定义镜像可以是基于您的线下服务器、虚拟机或者其他云平台的云主机创建的镜像文件,您需要先将镜像文件导入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内核启动参数中增加配置选项 |
系统网络异常 |
如何设置镜像网络配置模式为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 | 高 | 检测磁盘空间使用率是否正常。
您可以执行 |
系统启动异常 | 删除不必要文件 |
InodeUsage | 高 | 检测磁盘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配置文件的正确性和有效性很有必要。通常您可以执行以下命令:
|
实例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等神龙规格族 |
|
CloudAssistant | 中 | 检测镜像是否安装云助手。
云助手是专为云服务器ECS打造的原生自动化运维工具,阿里云建议您为镜像安装云助手服务,实现云上ECS高效运维。更多信息,请参见云助手概述。 |
云上运维不便 | 安装云助手客户端 |
SecurityCenterAgent | 中 | 检测是否安装云安全中心Agent。
安装云安全中心的Agent插件后,您的服务器才能受到云安全中心的保护。 |
无法识别实例中的漏洞问题,缺少云安全中心的保护 | 安装Agent |