努力
加油

在华为云上如何选择CentOS作为系统镜像?

在华为云上选择 CentOS 作为 ECS(弹性云服务器)或 BMS(裸金属服务器)的系统镜像时,首先需要明确一个核心前提:CentOS 8 已于 2021 年底停止维护(EOL),CentOS 7 也将于 2024 年 6 月 30 日彻底停止支持。

因此,目前的“选择”策略需要分两种情况讨论:一是存量业务迁移/过渡期使用,二是新建业务推荐方案。以下是基于当前国内云计算环境(特别是华为云控制台实际操作逻辑)的详细指南。

一、 为什么现在还要选 CentOS?现状认知

很多老项目因为依赖包兼容性、运维习惯等原因,短期内无法切换至 Ubuntu 或 Debian。但在华为云控制台中,你需要注意以下几点:

  1. 官方镜像状态:

    • CentOS 7:华为云仍提供官方维护的 CentOS 7.9 镜像,但已标注为“历史版本”或“停止维护”,部分新创建的资源可能默认隐藏该选项,需手动勾选“显示所有镜像”或搜索特定版本。
    • CentOS 8:由于上游社区停止更新,华为云已逐步下线或不再主动推广 CentOS 8 官方镜像。若必须使用,通常建议通过自定义镜像方式导入。
    • CentOS Stream:这是 CentOS 的新方向,属于滚动更新发行版,适合开发测试,但不适合追求长期稳定性的生产环境。华为云提供 CentOS Stream 8/9 镜像,可作为过渡替代。
  2. 合规与安全提醒:

    • 使用停止维护的系统意味着你将无法获得安全补丁更新,存在已知漏洞风险。在生产环境中,强烈建议制定迁移计划,转向 openEuler(华为主推)、Ubuntu LTS 或 Alibaba Cloud Linux(阿里系,兼容 CentOS)。

二、 如何在华为云控制台正确选择/创建 CentOS 实例?

场景 A:直接使用现有镜像(仅限 CentOS 7)

  1. 登录华为云控制台,进入 ECS > 实例 > 购买弹性云服务器。
  2. 在 “操作系统” 步骤中,选择 “公共镜像”。
  3. 在操作系统类型中选择 “Linux”。
  4. 在镜像列表中搜索 CentOS:
    • 你会看到类似 CentOS 7.9 64bit 的选项。
    • 注意:如果未显示,请检查是否开启了“显示所有镜像”或筛选条件是否正确。
  5. 点击该镜像,查看详细信息,确认其内核版本和预装软件是否符合需求。

⚠️ 警告:此方法仅适用于 CentOS 7。对于 CentOS 8,华为云公共镜像中可能已不可见,或仅存留极旧版本,不建议直接使用。

场景 B:通过自定义镜像导入 CentOS 8/Stream(推荐做法)

由于 CentOS 8 EOL,最稳妥的方式是自行构建镜像并上传至华为云 OBS,再注册为私有镜像。

步骤如下:

  1. 本地准备系统:

    • 使用 VMware/VirtualBox 安装一个纯净的 CentOS 8 或 CentOS Stream 9。
    • 执行最小化安装,避免冗余包。
  2. 系统优化(关键):

    • 关闭防火墙: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/*。
  3. 导出为 VMDK/OVA 格式:

    • 推荐使用 qemu-img convert 将虚拟磁盘转换为 RAW 或 QCOW2 格式,再通过工具转为 VMDK。
    • 或使用专业镜像制作工具(如 virt-v2v, Clonezilla 等)生成标准镜像文件。
  4. 上传至华为云 OBS:

    • 登录华为云控制台,创建 OBS 桶。
    • 上传你的 .vmdk 或 .ova 文件。
  5. 注册为私有镜像:

    • 进入 ECS > 镜像 > 私有镜像 > 创建私有镜像。
    • 选择从 OBS 导入,指定文件路径。
    • 填写镜像名称、描述、架构(x86_64/aarch64)。
    • 等待注册完成(通常几分钟到十几分钟)。
  6. 使用该镜像创建 ECS:

    • 在购买 ECS 时,切换到 “我的镜像” 标签页,选择刚注册的 CentOS 自定义镜像。

三、 更优替代方案:使用 openEuler 或 Alibaba Cloud Linux

如果你正在规划新项目,或者愿意进行小幅适配,强烈建议放弃原生 CentOS,转而使用以下两个在华为云上体验极佳、完全兼容 CentOS API 的发行版:

特性 openEuler (华为) Alibaba Cloud Linux (阿里)
兼容性 RPM 包兼容 CentOS/RHEL RPM 包兼容 CentOS/RHEL
性能优化 针对鲲鹏 ARM 和 x86 深度优化 针对阿里云及通用云环境优化
安全性 长期支持,持续更新 长期支持,持续更新
华为云支持 ✅ 官方主推,镜像丰富,驱动完善 ✅ 支持良好,但非华为原生
适用场景 华为云首选,尤其鲲鹏服务器 多云通用,跨云迁移友好

在华为云中选择 openEuler 的方法:

  1. 购买 ECS 时,操作系统选择 “公共镜像” → “Linux”。
  2. 找到 openEuler 22.03 LTS SP2 或更高版本。
  3. 优点:开箱即用,无 EOL 焦虑,与 CentOS 命令体系一致,迁移成本几乎为零。

四、 常见坑点与排查建议

  1. 启动后无网络 IP 或 SSH 连不上:

    • 检查是否安装了 cloud-init。华为云依赖 cloud-init 配置网络和密钥注入。
    • 如果是自定义镜像,确保 cloud-init 已安装并启用:yum install -y cloud-init,并在 /etc/cloud/cloud.cfg.d/ 中确认配置正确。
    • 检查安全组规则:入方向放行 22 端口。
  2. 磁盘空间不足:

    • CentOS 默认分区可能未充分利用云盘容量。
    • 解决:安装 cloud-utils-growpart,然后在首次启动后运行 growpart /dev/vda 1 和 xfs_growfs /(XFS)或 resize2fs /dev/vda1(EXT4)。
  3. 内核版本过旧导致驱动问题:

    • 华为云最新硬件可能需要较新的内核。
    • 建议在使用 CentOS 7 时,手动升级内核至 kernel-ml 或通过华为云提供的内核更新脚本进行升级。
  4. 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 生。 这不是口号,而是当前国内云计算环境的现实趋势。