更改镜像内容、转换镜像格式


http://docs.openstack.org/zh_CN/image-guide/content/ch_modifying_images.html#d6e611


更改镜像内容:

1、guestfish

guestfish并不直接mount镜像文件到本地文件系统,而是提供一个shell接口,你可以通过这个shell接口对镜像内文件做查看,编辑,删除操作,诸如 touchchmod, 和 rm的 guestfish 命令,就像普通bash命令一样。


2、guestmount

对于某些类型的修改,你可以使用更简单的方式直接挂载镜像内文件系统。 guestmount  程序,同样出自于 libguestfs 项目。

3、 virt-* tools

libguestfs项目还有其他一堆有用的工具,包括

  • virt-edit 用于编辑镜像内的文件。

  • virt-df 用于显示镜像内的空闲空间。

  • virt-resize 用于伸缩镜像文件大小。

  • virt-sysprep 用于做镜像分发前的准备工作(例如,删除SSH 主机秘钥,删除MAC地址信息,或者删除用户账号)。

  • virt-sparsify 用于使镜像文件稀疏化。

  • virt-p2v 用于转换物理机系统到一个运行在KVM上的镜像文件。

  • virt-v2v 用于转换 Xen 和 VMware 镜像到 KVM 镜像。


转换镜像格式:
qemu-img convert  命令可以转换多种格式的镜像文件,包括qcow2, qed, raw, vdi, vhd, and vmdk.。

表 7.1. qemu-img 格式字符列表
镜像格式 qemu-img 参数
QCOW2 (KVM, Xen) qcow2
QED (KVM) qed
raw raw
VDI (VirtualBox) vdi
VHD (Hyper-V) vpc
VMDK (VMware) vmdk

这个示例将转换换一个裸格式镜像文件 centos7.img 到qcow2镜像文件。

$ qemu-img convert -f raw -O qcow2 centos7.img centos7.qcow2

运行以下命令转换 VMDK 镜像文件到裸格式镜像文件,

$ qemu-img convert -f vmdk -O raw centos7.vmdk centos7.img

运行以下命令转换 VMDK 镜像文件到qcow2镜像文件,

$ qemu-img convert -f vmdk -O qcow2 centos7.vmdk centos7.qcow2
注:
注意

-f format参数是可选的,如果忽略,qemu-img将尝试推断镜像格式。

当转换一个Windows系统的镜像文件时,需确保镜像内系统已安装好virtio驱动。否则,在你启动虚拟机时会由于缺少virtio驱动遇到蓝屏死机。另外避免这个问题的方法是按如下命令通过更新glance服务中镜像属性,但是这个方法会明显的降低磁盘性能。

$ glance image-update --property hw_disk_bus='ide' image_id

 VBoxManage: VDI (VirtualBox) 转换为 raw

如果你使用 VirtualBox 创建了一个 VDI 镜像,你可以使用VirtualBox附带的 VBoxManage 工具转换它为raw格式,在 Mac OS X和Linux 上,VirtualBox 默认存放镜像在 ~/VirtualBox VMs/ 目录,以下示例在当前目录中从一个VirtualBox VDI镜像创建一个 raw 镜像。

apt-get install virtualbox

$ VBoxManage clonehd ~/VirtualBox\ VMs/fedora21.vdi fedora21.img --format raw






你可能感兴趣的:(更改镜像内容、转换镜像格式)