华为云国际站个人账号 国际华为云服务器私有镜像制作

华为云国际 / 2026-04-25 15:10:17

国际华为云服务器私有镜像制作:不是复制粘贴,是精密外科手术

别被“制作镜像”四个字骗了——它听起来像给手机截图,实际是给一台漂洋过海的云服务器做全身CT+基因编辑+冷冻保存。你在新加坡Region配好一套完美运行的Java+Redis+Nginx生产环境,想一键复刻到法兰克福或墨西哥城?恭喜,你已踏入华为云国际站镜像世界的灰色地带:文档没写全、控制台藏按钮、CLI报错像谜语、跨Region共享镜像?先烧三炷香再点“复制”。本文不讲理论,只掏真金白银的操作链路,附赠三个我凌晨三点砸键盘后总结的血泪口诀。

第一步:别急着装软件,先给服务器“洗个澡”

镜像不是快照,快照是快照,镜像是镜像——华为云官方文档里这句废话,是无数人翻车的起点。快照只能同Region恢复,而私有镜像可跨Region分发(但有限制!后面撕)。所以,你的源服务器必须是“干净体”:

  • 卸载所有临时挂载:检查mount输出,删掉/dev/sdb这种非系统盘挂载;否则镜像导入后可能卡在启动界面黑屏——因为目标Region根本没有那块磁盘。
  • 清空历史命令与敏感日志:执行history -c && echo '' > /root/.bash_history,顺手rm -f /var/log/secure /var/log/messages*(注意:别删/var/log/audit/audit.log,否则SELinux会暴走)。
  • 停掉所有非常驻服务:比如systemctl stop docker nginx mysql,只留sshd和cloud-init活着。镜像启动时,这些服务该拉起时自然拉起,硬编码开机自启反而导致多Region兼容性崩坏。

记住口诀一:“镜像不记事,启动才认命”——镜像里不该存运行时状态,只存初始化逻辑。

第二步:国际站专属“整容手术”:时区、语言、网络三把刀

国内用户常忽略这点:华为云国际站Region默认时区是UTC,而非CST;语言包默认是en_US.UTF-8,而非zh_CN.UTF-8。你以为改个timedatectl set-timezone Asia/Shanghai就完事?错!镜像导入法兰克福后,系统仍会固执地用UTC,因为cloud-init会在首次启动时重置时区。

解法粗暴有效:

  1. 编辑/etc/cloud/cloud.cfg,找到timezone字段,改为timezone: Asia/Shanghai(或你目标Region常用时区);
  2. 执行localectl set-locale LANG=zh_CN.UTF-8(如需中文),并确保/etc/default/locale同步更新;
  3. 最关键的一步:sed -i 's//etc/default/grub.*//etc/default/grub/g' /etc/cloud/cloud.cfg.d/99-custom.cfg,再手动追加disable_root: false——否则某些Region的cloud-init会强行禁用root登录,而你根本没配SSH密钥。

网络更魔幻:国际站ECS默认启用cloud-init网络配置,但如果你在镜像里手动写死了/etc/sysconfig/network-scripts/ifcfg-eth0,导入后可能直接失联。正确姿势是:删掉所有静态IP配置,让cloud-init接管,只保留BOOTPROTO=dhcpONBOOT=yes

第三步:GRUB引导——国际站最阴险的坑

在法兰克福Region导出镜像,到墨西哥城导入,启动失败?90%概率是GRUB2配置惹的祸。华为云国际站部分Region(尤其较老的)使用Legacy BIOS启动,而新Region强制UEFI。你的源服务器若用UEFI安装,镜像导入Legacy环境会直接卡在“Loading initial ramdisk…”。

验证方法:ls /sys/firmware/efi/efivars有输出=UEFI,无输出=Legacy。解决方案分两步:

  • 统一为UEFI启动(推荐):在源服务器执行grubby --set-default /boot/vmlinuz-$(uname -r),再grub2-mkconfig -o /boot/grub2/grub.cfg
  • 双模式兼容(保命):安装grub2-efi-x64-modulesgrub2-pc-modules,然后grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=centos + grub2-install --target=i386-pc /dev/vda(vda是系统盘)。

口诀二:“UEFI是亲儿子,Legacy是干儿子,镜像得认俩爹”

第四步:导出镜像——不是点“创建镜像”,是“打包托运”

华为云控制台里那个“制作镜像”按钮,只适用于同Region快照转镜像。国际站跨Region,必须走OBS(对象存储)中转:

  1. 在源Region创建OBS桶,权限设为“公共读”(仅临时,导出后立刻关);
  2. 在ECS上安装qemu-utilsyum install -y qemu-img(CentOS)或apt install -y qemu-utils(Ubuntu);
  3. 华为云国际站个人账号 停机状态下执行:qemu-img convert -f qcow2 -O raw /dev/vda /tmp/system.img(注意:/dev/vda是系统盘,用lsblk确认);
  4. 压缩上传:gzip /tmp/system.img && aws s3 cp /tmp/system.img.gz s3://your-bucket-name/image-20240515.img.gz --region ap-southeast-3(华为云OBS支持AWS CLI兼容模式)。

别信“在线导出”——那是营销话术。真实世界里,30GB镜像上传耗时2小时起,建议夜间操作,顺便给自己泡杯咖啡。

第五步:导入镜像——国际站的“海关通关”

目标Region控制台→镜像服务→私有镜像→从OBS导入。此时出现三大拦路虎:

  • “OBS文件格式不支持”:因为你传的是.gz,华为云只认.raw/.vhd/.qcow2。解法:上传前不压缩,或用qemu-img convert -f raw -O vhd /tmp/system.img /tmp/system.vhd
  • “架构不匹配”:源Region是x86_64,目标Region选了ARM实例类型?控制台不会报错,但镜像列表里显示“不可用”。务必在导入页面手动选择“x86_64”;
  • “导入超时”:OBS桶和ECS不在同一Region?华为云国际站OBS跨Region访问延迟极高。必须确保OBS桶Region与目标ECS Region完全一致(比如都在eu-west-10)。

导入成功后,别急着启动!先检查镜像详情页里的“操作系统类型”是否自动识别为“CentOS 7.9”或“Ubuntu 22.04”——若显示“Other Linux”,说明GRUB或内核模块有问题,启动必跪。

终极避坑口诀:三不三要

三不
— 不用快照直接转镜像(跨Region无效);
— 不在镜像里写死IP、hostname、SSH密钥(cloud-init会覆盖);
— 不跳过GRUB双模式验证(尤其涉及欧洲→拉美迁移)。

三要
— 要用qemu-img info system.img确认格式与大小;
— 要在目标Region用最小规格ECS(如t6.small.1)测试镜像启动;
— 要在首次启动后立刻执行cloud-init status --long,看是否完成初始化。

最后说句大实话:华为云国际站镜像机制,本质是“带着镣铐跳舞”。它不开放raw镜像直传,不提供跨Region一键复制,不自动同步cloud-init版本……但正因如此,当你看到法兰克福ECS从你亲手打磨的镜像里亮起SSH登录提示符时,那种掌控感,比喝十杯冰美式还提神。

毕竟,云不是魔法,是代码、耐心和三次重启换来的确定性。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系