不啓動虛擬機情況下修改glance鏡像內容的方法

背景

當前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

整個過程操作完成,是不是很方便 :-)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章