我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

OpenStack集群镜像迁移问题排查与解决方案

来源:网络 更新时间:2024-07-03 15:36:16

在我的 OpenStack 集群上迁移了一批老旧的镜像(从其他三方云平台过来的)发现这批镜像在使用 ConfigDrive 的方式注入配置初始化时无法对非首张网卡镜像初始化(后经过测试非 ConfigDrive 的数据源也不行)。

首先检查 cloud-init 是否是正常工作的
实例化镜像查看 cloud-init 服务, 以及相关日志。

服务均正常启用。
再查看 Cloud-init 的初始化日志

可以看到有类似读取到数据源并实例化的日志。基本上可以可以排除 cloud-init 运行不正常的情况。

只能细化cloud-init初始化的流程。
关于cloud-init 运行阶段的讲述推荐这篇文章,我此处不多赘述。 https://www.cnblogs.com/frankming/p/16281447.html
此处给出快速重重跑初始化的脚本

很遗憾,在重跑初始化流程中未看出端疑,对比可以初始化多张网卡的日志(CentOS7系统上),总感觉 CentOS6 在网卡配置阶段无任务操作。于是拖下了 Cloud-init 的源码码进行静态审计+Print大发。
源码路径:

可以看到在挂载 /dev/sr0 设备后,cloud-init 0.7.5 版本使用的是 2012-08-10 数据源
手动挂载并查看

好哇,根本没有network_data.json这种东西。看相关网络配置的初始化,验证网络初始逻辑只给ubuntu做了适配。得出结果,Cloud-init 0.7.5 版本过低,centos7支持差导致。

解决方案大致有两种:

1. 升级 Cloud-init
2. 手工实现 Cloud-init 网络初始化部分的逻辑

升级的话首选需要升级Python版本,本人未采用升级的方案,所以不多赘述,但是是一定可行的,推荐手动升级Python 并源码安装 Cloud-init。

推荐像本人一样参考高版本的 cloud-init 驱动实现逻辑手工用 go 或者 C 语言这种重新写一个补丁,经测试可行。由于这个组件是为公司开发的,不方便开源,但是欢迎交流。