导入自定义镜像前,错误的配置(如缺少驱动、网络设置不当)可能导致实例启动失败或网络异常。使用阿里云官方镜像检测工具 sersi
,可在导入前扫描、评估并自动修复镜像,确保其云上兼容性,提升部署成功率。
sersi
工具的修复脚本无法回滚,对系统的修改无法撤销。
适用范围
该工具支持主流 RedHat、Debian、SUSE系列的操作系统,例如
Red Hat 系列:Alibaba Cloud Linux, Anolis, RedHat, CentOS, CentOS Stream, Fedora, AlmaLinux, Rocky Linux, openEuler, OpenCloudOS。
Debian 系列:Debian, Ubuntu, Kylin, UOS。
SUSE 系列:SUSE, openSUSE。
不支持FreeBSD、Fedora CoreOS以及Windows Server系统。
操作流程
步骤一:下载并解压工具
下载
sersi
工具包。wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/imagecheck/sersi.tar.gz
解压工具包。
tar -xf sersi.tar.gz
步骤二:检测镜像
运行检测命令,获取镜像的健康状况报告。
对镜像执行所有检测项的扫描。
./main.sh --target=image --diagnostic
分析检测结果。命令会输出格式化的报告。
OK
:该项符合阿里云镜像规范。FAILED
(必须修复):该项存在严重问题,可能导致实例无法启动或核心功能(如网络)异常。WARNING
(建议修复):该项存在配置问题,虽不影响实例启动,但可能导致部分高级功能(如云助手、监控)不可用或存在安全隐患。
检测结果示例如下,报告中检测项的详细说明见检测与修复项总览。
------------------------------------------------------------ OS: Alibaba Cloud Linux 3 Kernel: 5.10.134-16.1.al8.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] Total case Count 18 Successes: 18 Failures: 0 Warnings: 0 ------------------------------------------------------------
步骤三:修复镜像
自动修复
sersi
工具的修复脚本无法回滚,对系统的修改无法撤销。建议采用“先审查,后执行”的安全流程进行修复。
sersi
工具不支持对检测项(Diskusage、Inodeusage、Criticaluser、LibDirectory和SupportMocinstanceTypes)进行自动修复,请参照指引进行手动修复。
执行审查:
使用
--dry-run
参数生成修复脚本并进行审查,此操作不会执行任何修改。通过参见单个检测项修复方案,可对单个检测项进行修复。
# 修复所有问题 ./main.sh --target=image --run all --dry-run
执行修复:
在确认脚本安全无误后,移除
--dry-run
参数来实际执行修复。# 交互式修复:执行每个修复步骤前会请求确认 ./main.sh --target=image --run all
分析修复结果:
OK
:表示该项修复成功。NO_FOUND_RISK
:表示检测镜像中未找到该项的异常。OK_Need_Reboot
:表示该项修复完成需重启系统才能生效。DRY_RUN
:表示找到该项的异常并通过dry-run模式运行仅打印修复脚本,但未执行修复。FAILED
:表示该项修复失败,需要进行手动修复。
手动修复
对于不支持自动修复,或自动修复失败的检测项,请根据以下指引进行手动操作。
Diskusage:手动删除不必要文件。
Inodeusage:手动删除不必要文件。
Criticaluser:保留root账号。
LibDirectory:链接文件/lib和/lib64的指向位置不能为绝对路径,修改指向位置为相对路径。
SupportMocinstanceTypes:不支持神龙规格的系统通常是已经EOL不再维护的低版本系统,建议尽早更新升级,使用各发行厂商正在维护更新的操作系统版本。
Virtio:安装virtio驱动。
Nvme:安装NVMe驱动。
Fstab:正确配置/etc/fstab。
Grub:为镜像生成正确的配置grub文件。
Dhcp:设置镜像网络配置模式为DHCP。
Selinux:关闭SELinux。
OnlineResizeFS:安装cloud-init和growpart工具
Cloudinit:安装cloud-init。
SshConfig:检查sshd配置文件。
Firewall:关闭系统防火墙服务。
CloudAssistant:安装云助手Agent。
SecurityCenterAgent:安装客户端。
QemuGuestAgent:手动卸载qemu-guestos-agent。
SystemFileAttribute:不要使用
chattr
命令锁定/etc/shadow等文件。
步骤四:验证修复结果
(可选)重启系统。部分修复项(
Nvme
、Dhcp
和Selinux
)需要重启系统才能生效。重新运行检测命令,确保所有问题项状态变为
OK
。./main.sh --target=image --diagnostic
检测与修复项总览
检测项 (Case Name) | 修复项 | 影响 | 说明 |
|
| ECS启动异常。 | 检测镜像中是否安装virtio驱动。阿里云ECS通常为基于KVM的虚拟机,因此依赖镜像中安装虚拟磁盘的virtio驱动。 |
|
| 无法使用NVMe协议云盘的实例规格,例如ecs.g7se。 | 检测镜像中是否安装NVMe驱动。ECS部分规格使用NVMe协议云盘,例如ecs.g7se,要求镜像包含NVMe驱动。NVMe相比SCSI、virtio-blk等传统驱动协议速度更快、传输带宽更高,因此建议在镜像中安装NVMe驱动,以支持相关实例规格。 |
|
| 系统启动异常。 | 检测/etc/fstab配置是否正常。错误的配置会导致系统启动异常,例如配置的挂载设备信息不存在、设备UUID错误等。 |
|
| 系统启动异常。 | 检测grub配置文件是否正常。配置错误(如使用设备名而非 UUID 指定启动分区)将导致系统无法启动。 |
|
| 系统网络异常。 | 检测网络配置是否为DHCP。建议为网络设备配置DHCP的方式,static静态方式会导致网络配置失败,连接异常。我们还建议在grub内核启动参数中增加配置选项 |
|
| 无法正常启动ECS实例。 | 检测是否禁用SELinux,建议关闭SELinux。 |
|
| 实例根分区无法扩容。 | 检测镜像是否支持在线扩容文件系统。例如镜像虚拟磁盘空间大小为10 GB,而ECS实例的系统盘为100 GB,如果安装了cloud-init、growpart等组件,相关组件在实例初始化时会将根分区及文件系统扩容,扩容至系统盘的大小100 GB。更多信息,请参见扩容分区及文件系统(Linux)。 |
|
| 系统初始化配置缺失。 | 检测是否安装cloud-init服务。cloud-init能在ECS实例启动阶段完成系统初始化配置,包括NTP、软件源、主机名和SSH密钥对等,同时执行实例自定义数据(User data)脚本。 |
|
| 实例SSH连接失败。 | 检测sshd服务的配置文件(通常是/etc/ssh/sshd_config)是否正常。 sshd配置文件异常会导致sshd服务启动失败,进而导致SSH连接ECS失败,因此检查sshd配置文件的正确性和有效性非常重要。通常可执行以下命令:
|
|
| 系统防火墙应用可能导致实例访问失败。 | 检测防火墙服务是否开启。建议关闭系统中的防火墙服务,使用ECS安全组统一管理云上实例的出入流量。 |
|
| 云上运维不便。 | 检测镜像是否安装云助手。云助手是专为云服务器ECS打造的原生自动化运维工具,建议为镜像安装云助手服务,实现云上ECS高效运维。 |
|
| 无法识别实例中的漏洞问题,缺少云安全中心的保护。 | 检测是否安装云安全中心Agent。安装云安全中心的Agent插件后,服务器才能受到云安全中心的保护。 |
|
| 实例功能异常。 | 检测系统中是否安装qemu-guest-agent。该软件是运行在虚拟机上,和宿主机交互通信,会导致部分ECS服务不可用,实例功能不全。 |
| 不支持 | 系统启动异常。 | 检测磁盘空间使用率是否正常。可执行 |
| 不支持 | 系统启动异常。 | 检测磁盘inode使用率是否正常。可执行 |
|
| 实例启动异常、功能异常。 | 检测系统中关键配置文件的文件属性是否正常。 |
| 不支持 | 实例启动异常、功能异常。 | 检测系统中关键用户(例如root)是否存在。关键用户的缺失会导致系统启动异常,实例功能使用异常,例如无法使用用户名和密码远程连接ECS实例。 |
| 不支持 | 系统功能异常。 | 在RedHat系列Linux系统中,/lib和/lib64通常为一个链接文件,指向/usr/lib及/usr/lib64,请不要随意修改该链接文件,否则可能导致系统异常。 |
| 不支持 | 不能使用ecs.g6、ecs.g7等神龙规格族。 | 检测镜像是否支持阿里云ECS神龙规格。 阿里云最新的ECS实例通常为神龙规格,例如ecs.g6、ecs.g7等,如果镜像的系统和内核版本过低,在相关规格上启动会有异常。具体的实例规格信息,请参见实例规格族。 |
修复命令详细说明
自动修复镜像的命令如下:
./main.sh --target=image --run <case> [--debug] [--dry-run] [-y]
参数 | 是否必选 | 说明 |
| 是 | 修复项,表示运行需要修复的检测项。
|
| 否 | 建议首次修复时使用。仅打印修复脚本,不实际执行。 |
| 否 | 启用详细日志输出,用于问题排查。 |
| 否 | 自动确认所有修复步骤,跳过交互式提示。 |
相关文档
通过工具检测镜像符合规范后,可获取Linux镜像文件,并导入自定义镜像到阿里云平台。
常见问题
为什么修复 nvme
、 selinux
或 dhcp
后问题依然存在?
这三个检测项的修复涉及内核参数或系统运行模式的根本性改变,必须重启操作系统才能应用新的配置。修复后需重启虚拟机,再运行检测进行验证。
对于单个检测项,应该如何修复?
以SshConfig
检测项为例。
从检测与修复项总览表中,找到检测项
SshConfig
对应的修复项sshd
。执行审查。
如要修复其他检测项,将sshd参数改为对应修复项。
./main.sh --target=image --run sshd --dry-run
执行修复。
./main.sh --target=image --run sshd