IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    不启动虚拟机情况下修改glance镜像内容的方法

    龙幽发表于 2016-06-21 10:55:00
    love 0

    背景

    当前glance镜像通过虚拟机安装好系统后,一般静态的放在glance的镜像服务器上。但是如果因为应用或者镜像制作有点小的偏差,比如修改/etc下软件的配置等,一般的方法是从新把镜像拷贝到openstack计算节点上,用该镜像文件创建虚拟机,修改完成后,再把镜像拷贝到镜像服务器上,如果镜像很大,整过过程会有很大的人力和资源开销。
    现在提供一种非常简便的方法,因为一般在kvm环境中,glance的镜像格式一般为raw或者qcow2,qemu工具链中提供了qemu-nbd,qemu-nbd可以将镜像文件与内核nbd设备关联,这样把nbd设备mount,就可以看到镜像内部的全部信息,将需要修改的文件进行修改,完成后进行umount,然后用qemu-nbd将nbd设备与镜像文件解关联,省去了镜像拷贝,虚拟机启动等一系列操作。

    方法

    环境说明:系统:CentOS-7.2,内核版本:3.10.0-327.el7.x86_64
    1、内核nbd设备支持
    当前在CentOS-7.2中,默认是没有nbd的内核模块,可以通过 modinfo nbd 查看一下,如果没有,可参考 http://purplepalmdash.github.io/blog/2015/08/13/build-nbd-kernel-module-on-centos7/ 进行手动编译nbd内核模块,这里就不在叙述.
    2、qemu-nbd工具
    查看一下系统中是否有qeme-nbd命令,如果有则跳过该步,因为qemu-nbd在qemu-img包中,可通过yum安装

    # yum install qemu-img -y
    

    3、设备关联
    将镜像与nbd设备关联

    # ls -al /var/lib/glance/images/
    

    image2016-5-5 14-48-40.png

    选取第一个镜像053ca6a0-8268-4a4a-84ab-5850b4dbaf13为例

    # qemu-nbd --connect=/dev/nbd0 /var/lib/glance/images/053ca6a0-8268-4a4a-84ab-5850b4dbaf13
    

    查看关联的设备,如果镜像中有存在分区,那么会出现/dev/nbd0p1的分区设备,如下图:
    image2016-5-5 14-50-58.png

    挂在分区

    # mount /dev/nbd0p1 /mnt/
    # ls -al /mnt
    

    image2016-5-5 14-53-1.png

    会发现/mnt目录下的内容均是镜像文件中的内容,接下来就是去修改想要修改的文件即可
    完成后umount

    # umount /mnt
    

    解关联nbd设备与镜像文件

    # qemu-nbd -d /dev/nbd0
    

    整个过程操作完成,是不是很方便 :-)



沪ICP备19023445号-2号
友情链接