在华为云上选择 CentOS 作为 ECS(弹性云服务器)或 BMS(裸金属服务器)的系统镜像时,首先需要明确一个核心前提:CentOS 8 已于 2021 年底停止维护(EOL),CentOS 7 也将于 2024 年 6 月 30 日彻底停止支持。
因此,目前的“选择”策略需要分两种情况讨论:一是存量业务迁移/过渡期使用,二是新建业务推荐方案。以下是基于当前国内云计算环境(特别是华为云控制台实际操作逻辑)的详细指南。
一、 为什么现在还要选 CentOS?现状认知
很多老项目因为依赖包兼容性、运维习惯等原因,短期内无法切换至 Ubuntu 或 Debian。但在华为云控制台中,你需要注意以下几点:
-
官方镜像状态:
- CentOS 7:华为云仍提供官方维护的 CentOS 7.9 镜像,但已标注为“历史版本”或“停止维护”,部分新创建的资源可能默认隐藏该选项,需手动勾选“显示所有镜像”或搜索特定版本。
- CentOS 8:由于上游社区停止更新,华为云已逐步下线或不再主动推广 CentOS 8 官方镜像。若必须使用,通常建议通过自定义镜像方式导入。
- CentOS Stream:这是 CentOS 的新方向,属于滚动更新发行版,适合开发测试,但不适合追求长期稳定性的生产环境。华为云提供 CentOS Stream 8/9 镜像,可作为过渡替代。
-
合规与安全提醒:
- 使用停止维护的系统意味着你将无法获得安全补丁更新,存在已知漏洞风险。在生产环境中,强烈建议制定迁移计划,转向 openEuler(华为主推)、Ubuntu LTS 或 Alibaba Cloud Linux(阿里系,兼容 CentOS)。
二、 如何在华为云控制台正确选择/创建 CentOS 实例?
场景 A:直接使用现有镜像(仅限 CentOS 7)
- 登录华为云控制台,进入 ECS > 实例 > 购买弹性云服务器。
- 在 “操作系统” 步骤中,选择 “公共镜像”。
- 在操作系统类型中选择 “Linux”。
- 在镜像列表中搜索
CentOS:- 你会看到类似
CentOS 7.9 64bit的选项。 - 注意:如果未显示,请检查是否开启了“显示所有镜像”或筛选条件是否正确。
- 你会看到类似
- 点击该镜像,查看详细信息,确认其内核版本和预装软件是否符合需求。
⚠️ 警告:此方法仅适用于 CentOS 7。对于 CentOS 8,华为云公共镜像中可能已不可见,或仅存留极旧版本,不建议直接使用。
场景 B:通过自定义镜像导入 CentOS 8/Stream(推荐做法)
由于 CentOS 8 EOL,最稳妥的方式是自行构建镜像并上传至华为云 OBS,再注册为私有镜像。
步骤如下:
-
本地准备系统:
- 使用 VMware/VirtualBox 安装一个纯净的 CentOS 8 或 CentOS Stream 9。
- 执行最小化安装,避免冗余包。
-
系统优化(关键):
- 关闭防火墙:
systemctl disable firewalld && systemctl stop firewalld(华为云有安全组,无需主机防火墙)。 - 禁用 SELinux:编辑
/etc/selinux/config,设置SELINUX=disabled,然后重启。 - 安装华为云插件:
yum install -y cloud-utils-growpart qemu-guest-agent systemctl enable qemu-guest-agent systemctl start qemu-guest-agent - 配置网络:确保网卡配置为 DHCP 或静态 IP 格式符合华为云规范(通常由 metadata 服务管理)。
- 清理日志和临时文件:
journalctl --vacuum-time=1s,rm -rf /tmp/*。
- 关闭防火墙:
-
导出为 VMDK/OVA 格式:
- 推荐使用
qemu-img convert将虚拟磁盘转换为 RAW 或 QCOW2 格式,再通过工具转为 VMDK。 - 或使用专业镜像制作工具(如 virt-v2v, Clonezilla 等)生成标准镜像文件。
- 推荐使用
-
上传至华为云 OBS:
- 登录华为云控制台,创建 OBS 桶。
- 上传你的
.vmdk或.ova文件。
-
注册为私有镜像:
- 进入 ECS > 镜像 > 私有镜像 > 创建私有镜像。
- 选择从 OBS 导入,指定文件路径。
- 填写镜像名称、描述、架构(x86_64/aarch64)。
- 等待注册完成(通常几分钟到十几分钟)。
-
使用该镜像创建 ECS:
- 在购买 ECS 时,切换到 “我的镜像” 标签页,选择刚注册的 CentOS 自定义镜像。
三、 更优替代方案:使用 openEuler 或 Alibaba Cloud Linux
如果你正在规划新项目,或者愿意进行小幅适配,强烈建议放弃原生 CentOS,转而使用以下两个在华为云上体验极佳、完全兼容 CentOS API 的发行版:
| 特性 | openEuler (华为) | Alibaba Cloud Linux (阿里) |
|---|---|---|
| 兼容性 | RPM 包兼容 CentOS/RHEL | RPM 包兼容 CentOS/RHEL |
| 性能优化 | 针对鲲鹏 ARM 和 x86 深度优化 | 针对阿里云及通用云环境优化 |
| 安全性 | 长期支持,持续更新 | 长期支持,持续更新 |
| 华为云支持 | ✅ 官方主推,镜像丰富,驱动完善 | ✅ 支持良好,但非华为原生 |
| 适用场景 | 华为云首选,尤其鲲鹏服务器 | 多云通用,跨云迁移友好 |
在华为云中选择 openEuler 的方法:
- 购买 ECS 时,操作系统选择 “公共镜像” → “Linux”。
- 找到
openEuler 22.03 LTS SP2或更高版本。 - 优点:开箱即用,无 EOL 焦虑,与 CentOS 命令体系一致,迁移成本几乎为零。
四、 常见坑点与排查建议
-
启动后无网络 IP 或 SSH 连不上:
- 检查是否安装了
cloud-init。华为云依赖 cloud-init 配置网络和密钥注入。 - 如果是自定义镜像,确保
cloud-init已安装并启用:yum install -y cloud-init,并在/etc/cloud/cloud.cfg.d/中确认配置正确。 - 检查安全组规则:入方向放行 22 端口。
- 检查是否安装了
-
磁盘空间不足:
- CentOS 默认分区可能未充分利用云盘容量。
- 解决:安装
cloud-utils-growpart,然后在首次启动后运行growpart /dev/vda 1和xfs_growfs /(XFS)或resize2fs /dev/vda1(EXT4)。
-
内核版本过旧导致驱动问题:
- 华为云最新硬件可能需要较新的内核。
- 建议在使用 CentOS 7 时,手动升级内核至
kernel-ml或通过华为云提供的内核更新脚本进行升级。
-
ARM 架构(鲲鹏)用户特别注意:
- 如果你使用的是鲲鹏 ECS(aarch64),不要尝试导入 x86_64 的 CentOS 镜像。
- 必须在 ARM 环境下重新编译或下载对应的 aarch64 版本 CentOS/openEuler 镜像。目前华为云对 openEuler ARM 的支持远优于 CentOS ARM。
总结建议
- 老项目维护:继续使用华为云公共镜像中的 CentOS 7.9,但务必加固安全策略,定期备份,并尽快规划迁移。
- 新项目/重构:直接选择 openEuler 22.03 LTS 或 24.03 LTS。它在华为云上拥有最佳兼容性、安全性和性能表现,且完全兼容 CentOS 生态,是目前最理性的选择。
- 必须用 CentOS 8:通过自定义镜像导入 CentOS Stream 8 或自行构建的 CentOS 8 镜像,并做好安全防护。
记住:CentOS 已死,openEuler 生。 这不是口号,而是当前国内云计算环境的现实趋势。
云技术博客