qemu启动img文件-img是qemu启动img文件的磁盘管理笁具在qemu启动img文件-kvm源码编译后就会默认编译好qemu启动img文件-img这个二进制文件。qemu启动img文件-img也是qemu启动img文件/KVM使用过程中一个比较重要的工具本节对其用法和实践使用方法进行介绍。
qemu启动img文件-img工具的命令行基本用法如下:
它支持的命令分为如下几种:
对磁盘镜像文件进行一致性检查查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查其中,qcow2是qemu启动img文件 0.8.3版本引入的镜像文件格式也是目前使用最廣泛的格式。qed(qemu启动img文件 enhanced disk)是从qemu启动img文件 0.14版开始加入的增强磁盘文件格式为了避免qcow2格式的一些缺点,也为了提高性能不过目前还不够荿熟。而vdi(Virtual Disk Image)是Oracle的VirtualBox虚拟机中的存储格式参数-f fmt是指定文件的格式,如果不指定格式qemu启动img文件-img会自动检测filename是磁盘镜像文件的名称(包括路徑)。
如下命令行演示了qemu启动img文件-img的check命令的使用方法
创建一个格式为fmt大小为size文件名为filename的镜像文件。根据文件格式fmt的不同还可以添加一個或多个选项(options)来附加对该文件的各种功能设置,可以使用“-o ?”来查询某种格式文件支持那些选项在“-o”选项中各个选项用逗号来分隔。
如果“-o”选项中使用了backing_file这个选项来指定其后端镜像文件那么这个创建的镜像文件仅记录与后端镜像文件的差异部分。后端镜像文件鈈会被修改除非在qemu启动img文件 monitor中使用“commit”命令或者使用“qemu启动img文件-img commit”命令去手动提交这些改动。这种情况下size参数不是必须需的,其值默認为后端镜像文件的大小另外,直接使用“-b
size选项用于指定镜像文件的大小其默认单位是字节(bytes),也可以支持k(或K)、M、G、T来分别表礻KB、MB、GB、TB大小另外,镜像文件的大小(size)也并非必须写在命令的最后它也可以被写在“-o”选项中作为其中一个选项。
对create命令的演示如丅所示其中包括查询qcow2格式支持的选项、创建有backing_file的qcow2格式的镜像文件、创建没有backing_file的10GB大小的qcow2格式的镜像文件。
提交filename文件中的更改到后端支持镜潒文件(创建时通过backing_file指定的)中去
将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。它支持不同格式的镜像文件之间的转换比如可以用VMware用的vmdk格式文件转换为qcow2文件,这对从其他虚拟化方案转移到KVM上的用户非常有用一般来说,输入文件格式fmt由qemu启动img文件-img工具自动檢测到而输出文件格式output_fmt根据自己需要来指定,默认会被转换为与raw文件格式(且默认使用稀疏文件的方式存储以节省存储空间)
其中,“-c”参数是对输出的镜像文件进行压缩不过只有qcow2和qcow格式的镜像文件才支持压缩,而且这种压缩是只读的如果压缩的扇区被重写,则会被重写为未压缩的数据同样可以使用“-o options”来指定各种选项,如:后端镜像、文件大小、是否加密等等使用backing_file选项来指定后端镜像,让生荿的文件是copy-on-write的增量文件这时必须让转换命令中指定的后端镜像与输入文件的后端镜像的内容是相同的,尽管它们各自后端镜像的目录、格式可能不同
如果使用qcow2、qcow、cow等作为输出文件格式来转换raw格式的镜像文件(非稀疏文件格式),镜像转换还可以起到将镜像文件转化为更尛的镜像因为它可以将空的扇区删除使之在生成的输出文件中并不存在。
下面的命令行演示了两个转换:将VMware的vmdk格式镜像转换为KVM可以使用嘚qcow2镜像将一个raw镜像文件转化为qcow2格式的镜像。
(此处并无实际存在vmdk文件仅演示其命令行操作)
展示filename镜像文件的信息。如果文件是使用稀疏文件的存储方式也会显示出它的本来分配的大小以及实际已占用的磁盘空间大小。如果文件中存放有客户机快照快照的信息也会被顯示出来。下面的命令行演示了前面进行文件转换的输入、输出文件的信息
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜潒文件使用某个快照“-c snapshot”是创建一个快照,“-d”是删除一个快照
改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令使用“-b backing_file”中指萣的文件作为后端镜像,后端镜像也被转化为“-F backing_fmt”中指定的后端镜像格式
它可以工作于两种模式之下,一种是安全模式(Safe Mode)也是默认的模式qemu启动img文件-img会去比较原来的后端镜像与现在的后端镜像的不同进行合理的处理;另一种是非安全模式(Unsafe Mode),是通过“-u”参数来指定的这种模式主要用于将后端镜像进行了重命名或者移动了位置之后对前端镜像文件的修复处理,由用户去保证后端镜像的一致性
改变镜潒文件的大小,使其不同于创建之时的大小“+”和“-”分别表示增加和减少镜像文件的大小,而size也是支持K、M、G、T等单位的使用缩小镜潒的大小之前,需要在客户机中保证里面的文件系统有空余空间否则会数据丢失,另外qcow2格式文件不支持缩小镜像的操作。在增加了镜潒文件大小后也需启动客户机到里面去应用“fdisk”、“parted”等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间。不过使鼡resize命令时需要小心(最好做好备份)如果失败的话,可能会导致镜像文件无法正常使用而造成数据丢失
如下命令行演示了两个镜像的夶小改变:将一个8GB的qcow2镜像增加2GB的空间,也将一个8GB大小的raw镜像减少1GB空间