glance 上传镜像

  • 时间:
  • 浏览:0

以上法子参考Mounting-raw-and-qcow2-vm-disk-images。

愿意们你们突然能要能更新glance镜像,比如上传的镜像不可能 有配置大大问题,不可能 愿意们你们能要能对已有的镜像进行软件包升级不可能 预装其他新的软件包等。当时着手这件事是不可能 愿意们你们对cloud-init进行了极少量的patch,能要能同步到glance镜像中,不可能 重新制作镜像如果传输到生产环境再上传,不仅工作非常繁琐,还非常消耗时间,让.如果要能在另一另另另一个的镜像基础之上直接升级cloud-init。

升级qemu-guest-agent:

执行完所有的更新操作后,完成以下清理工作:

愿意们你们知道使用ceph作为存储后端时,镜像首先会生成一另另另一个以snap命名的快照,比如glance有一另另另一个镜像id为35fcb79c-43a1-4b59-83d7-f4e46a524419,则在rbd暗含对应的image,命名与glance镜像id一致,愿意们你们查看其快照:

接下来更新愿意们你们的rbd image,命名为新创建镜像实例id并设置快照:

挂载到本地后,能要能拷贝软件包、配置模板等到镜像文件系统中,比如/mnt/root/,如果chroot到镜像文件系统中:

挂载镜像到本地文件系统中:

如果愿意们你们的做法是先基因重组一另另另一个rbd image副本.

最简单的法子是通过创建一另另另一个云主机,如果更新cloud-init后创建快照形成新的镜像(注意删除/var/lib/cloud下的文件,如果cloud-init下次启动时不不重新拉取metadata)。另一另另另一个愿意们你们遇到的大大问题是,老版本的cloud-init在L版中注入密码和密钥都失败,如果安装的qemu-guest-agent不支持修改密码,如果完全这么 法子登录云主机。然都还可以 要能另辟蹊径。

1.通过快照法子更新镜像

不可能 镜像文件系统中使用LVM,能要能使用以下法子初始化:

注意不可能 镜像是Linux文件系统,如果通常只有一另另另一个根分区,不可能 是windows镜像,第一另另另一个分区通常是隐藏分区,C盘是第二个分区,如果挂载时注意选者rbd0p2,其中p表示partition。

于是愿意们你们想到把镜像挂载到本地文件系统中,如果chroot到镜像文件系统环境中进行升级配置。不可能 glance镜像使用本地文件系统作为存储后端,镜像格式为raw,挂载镜像就非常简单了:

输出:

最后对新镜像进行功能验证,不可能 这么 大大问题,就能要能安全的删除老的镜像了。

使用rbd命令拷贝一份镜像副本,假设POOL变量为glance使用的ceph池:

chroot进行后执行相关操作后,卸载镜像文件系统:

愿意们你们只有直接修改快照snap,不可能 它是protect的,只有读只有写。直接修改镜像句子只有同步到快照中,如果出错统统我好回滚。

最后更新glance镜像元数据:

3.基于Ceph存储后端的更新法子

最能要能要能更新glance,愿意们你们的法子是先创建一另另另一个glance空镜像实例,只有指定镜像文件,统统我占个坑,拿到新镜像id:

接下来就能要能执行命令对镜像进行更新了,比如更新cloud-init:

本文重点沒有于基于本地文件系统作为存储后端的情况汇报,重点介绍基于Ceph存储后端的操作法子,下文将完全介绍过程。

0.背景

首先使用glance命令行工具获取能要能更新的镜像的id:

2.glance存储后端使用本地文件系统

不可能 是qcow2格式,能要能安装qemu-nbd工具包,如果加载nbd内核模块: