使用镜像检测工具检测镜像
更新时间:2024-12-05
Linux系统镜像检测工具
在将自定义镜像导入至百度智能云之前,建议您使用镜像检测工具 bd_diagnosis
来检查镜像是否符合导入条件。这可以帮助确保自定义镜像的质量,从而顺利部署功能齐全且兼容性良好的实例。本文将介绍如何使用 bd_diagnosis
工具进行自定义镜像的检测。
bd_diagnosis 工具介绍
bd_diagnosis
是百度智能云提供的Linux镜像检测工具,用于扫描镜像中的系统和服务配置,并生成检测报告。该报告详细描述了镜像的系统信息以及检测到的异常情况。
当前不支持 FreeBSD 系统。
操作步骤
- 使用
root
用户登录待检测的服务器内。 - 依次运行以下命令,下载并解压
bd_diagnosis
工具。
wget https://wanjuan-docs.bj.bcebos.com/bd_diagnosis.tar.gz
tar xf bd_diagnosis.tar.gz
或者您也可以通过浏览器下载 bd_diagnosis 工具。
- 执行以下命令,运行检测工具
cd bd_diagnosis
./main
检测工具主要检查以下配置项:
检测项 | 级别 | 检查项说明 | 修复建议 |
---|---|---|---|
virtio driver | 高 | 检测是否安装 virtio 驱动。实例运行需要相关虚拟化设备驱动支持,未安装该驱动会导致实例启动异常。 | 安装virtio。 |
cloud-init | 高 | 检测是否安装 cloud-init。cloud-init 能在启动时动态完成系统初始化,包括主机名和 SSH 密钥等,同时执行实例自定义数据(User data)脚本。未安装导致系统初始化配置缺失。 | 安装Cloud-init。 |
fstab config | 高 | 检测镜像中/etc/fstab文件系统磁盘设备挂载信息是否配置正确,错误的配置会导致系统启动异常,例如配置的挂载设备信息不存在、设备UUID错误等。 | 无 |
grub | 高 | 检测镜像中grub引导文件是否正常。例如device设备配置异常、相关设备不存在、UUID错误等,会导致系统启动异常。 | 无 |
root | 高 | 检测系统是否存在 root 用户。若不存在,管理权限受控,安全风险增加。管理权限受控,安全风险增加。 | 您可以通过修改 /etc/passwd 中的 root 用户配置为 root:x:0:0:root:/root:/bin/bash |
sshd service | 高 | 检测 sshd 服务的配置文件(通常是 /etc/ssh/sshd_config)是否正常。若异常,实例 SSH 连接失败。 | 无 |
passwd command | 高 | 检查 /etc/shadow 和 /etc/passwd 文件是否存在及读写权限 若无读写权限,实例修改密码等操作无法生效。 |
您可以在 root 用户下通过执行 chmod +rw /etc/shadow /etc/passwd 恢复文件的读写权限。 |
DHCP | 高 | 检测网络配置是否为 DHCP。如果镜像中设置为静态模式,会导致实例启动后网络配置异常。 | 需将网络设置为DHCP动态获取IP模式和清空70-persistent-net.rules文件。 |
disk size | 高 | 检查系统中磁盘的大小是否超过 500GB。 百度智能云最大支持500GB系统盘。建议你的系统分区大小不要超过500G。否则会无法导入。 |
无 |
disk partition | 高 | 检测系统分区类型是否正确。 BCC实例以 BIOS 模式启动的磁盘分区为 MBR。EBC裸金属实例一般以 UEFI 模式启动,磁盘分区为 GPT与系统不兼容的分区模式会导致启动故障。 |
无 |
file system type | 高 | 检测文件系统类型。推荐使用 ext2/ext3/ext4 文件系统,其他类型的文件系统会导致系统异常。 | 无 |
selinux | 中 | 检测是否禁用 SELinux,建议您关闭SELinux。开启有可能会导致系统启动异常。 | 需将SElinux置为disable。 |
Firewall | 中 | 检测防火墙服务是否开启。建议您关闭系统中的防火墙服务,使用安全组统一管理您云上实例的出入流量。开启系统防火墙应用可能导致您访问实例失败。 | 关闭防火墙。 |
LVM | 中 | 检测使用lvm分区及设置。会导致无法挂载任务失败,用户无法使用根区容器登录。不建议您使用 lvm 分区。 | 无 |
disk uuid | 中 | 检查 Linux 系统的根分区是否通过 UUID 挂载。 当根分区以设备名称挂载,系统启动时名称变化,将导致无法找到根文件系统而启动失败。建议根分区通过UUID挂载。 |
您可以执行 blkid id 获取分区 UUID,并用 UUID 替换 /etc/fstab 中的分区表示符。 |
mlx5 driver | 中 | 检测是否安装Mellanox网卡驱动。若未安装,无法使用依赖 Mellanox 网卡设备的实例规格(如bcc.ga2、bcc.ica2、bcc.ma2、bcc.la2等)。 | 若您镜像应用实例规格依赖该网卡驱动,请安装Mellanox 网卡驱动。 |
Kernel config | 中 | 检测 Linux 系统上的内核配置信息,确保系统的关键功能(如硬件热插拔)是否开启。关闭不影响实例运行,但系统不支持内核特性(如硬件热插拔)。比如若实例属于g4、c4、ic4、m4规格族,在线变配后系统内不生效,需重启生效。 | 此项异常不影响实例运行,可镜像导入后按需配置。 |
halt | 中 | 检测是否配置halt。EBC裸金属实例关机依赖halt能力。若镜像用于创建EBC裸金属实例,建议配置halt。 | 此项异常不影响实例启动,可导入后按需配置。 |
SshPort | 低 | 检测 22 端口是否启用。22端口关闭,将无法通过该端口执行登录和数据传输等操作。 | 此项异常不影响实例启动,可导入后按需配置。 |
online resize fs | 低 | 检测镜像是否支持根分区自动扩容。例如您的镜像虚拟磁盘空间大小为10 GB,您购买实例的系统盘为 200 GB,如果您安装了cloud-init、growpart等组件,相关组件在实例初始化时会将根分区及文件系统扩容,扩容至您系统盘的大小 200 GB。 | 此项异常不影响实例运行,可导入后按需配置。 |
graphic | 低 | 检测ubuntu系统是否开启图形桌面。若ubuntu系统用于EBC裸金属实例,不建议开启图形桌面。开启可能会导致睡眠,进而影响到 ssh 登录失败。 | 若用于EBC裸金属实例,建议关闭图形桌面。 |
bsm agent | 中 | 检测是否安装bsm-agent。bsm-agent是为实现云服务器BCC、BBC等实例自动化运维打造的工具。建议您安装bsm-agent。 | 此项异常不影响实例启动,只是无法使用云助手、运维编排等能力。若需要,请镜像导入完成后创建实例后,再安装bsm-agent。 |
bcm agent | 中 | 检测是否安装bcm-agent 。BCM-Agent 作为用户侧的采集程序,承担了采集和传输重要监控数据的任务,便于用户及时感知系统状态。建议您安装 bcm-agent。 | 此项异常不影响实例启动,只是实例无法监控指标数据。若需要,请镜像导入完成后创建实例后,安装bcm-agent。 |
has agent | 中 | 检测是否安装has-agent。has-agent 能够确保硬件组件的健康状态得到实时监控,并在发现异常时上报,从而帮助运维人员快速定位问题并采取措施。建议您安装 has-agent 便于硬件监控服务。 | 此项异常不影响实例启动,只是无法及时检测到裸金属实例的硬件故障。若需要,请镜像导入完成后创建实例后,安装has-agent。 |
hosteye | 中 | 检测是否安装hosteye客户端。主机安全监控端(Hosteye)是针对用户的服务监控与行业安全的延续,提供主机安全服务,其具备高稳定性、轻部署的特点,云主机安全端更加强大的防护能力。建议您安装 hosteye 客户端,并应用相关规则。 | 此项异常不影响实例启动,只是云上安全防护性降低。若需要,请镜像导入完成后创建实例后,再安装hosteye。 |
等待检测工具检测完成,检测结果类似如下信息。
检测工具会根据检测项的等级给出OK、CRITICAL或WARNING检测结果。
检测结果说明
- OK:检测项均符合要求。
- CRITICAL:强烈建议修复项。使用该自定义镜像创建的实例会出现无法正常启动、网络异常等严重问题,建议您修复报错项后再导入镜像。
- WARNING:建议优化项。不影响使用该自定义镜像创建的实例启动,但会缺少云助手自动化运维等能力。您可忽略报错项继续导入镜像,但建议您在镜像导入创建实例后按需进行优化,以提高您云上的运维效率。
Windows系统镜像检测工具
检查项如下:
检测项 | 说明 | 修复建议 |
---|---|---|
VirtIO驱动 | 百度云支持KVM虚拟化技术,导入百度云的镜像需要安装KVM virtio驱动 | 如何为系统安装virtio 驱动,请参见安装virtio驱动 |
磁盘分区类型 | 百度云BCC默认支持MBR磁盘分区类型 | 无 |
磁盘大小 | 百度云服务器最大支持2TB系统盘 | 无 |
cloudbase-init | 建议安装cloudbase-init,用来设置hostname、密码等 | 如何为系统安装cloudbase-init,请参考安装cloudbase-init |
MLNX_WinOF2网络驱动 | 对于Windows Server 2016、2019、2022,建议安装MLNX_WinOF2网卡驱动,有些规格的实例(如bcc.ga2、bcc.ica2、bcc.ma2、bcc.la2等)需要安装该网卡驱动才能识别网络设备 | 如何为系统安装MLNX_WinOF2驱动,请参考安装MLNX_WinOF2驱动 |
下载检测工具 check-windows.ps1 到您的系统中,打开powershell窗口,执行该脚本: