简介
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
一、存储配置以及启动顺序
1、存储基本配置
qemu-kvm 相关参数 -hda file 作为客户机的第一个IDE(序号为0)设备,即/dev/hda或/dev/sda设备 -hdb file 作为客户机的第一个IDE(序号为1)设备,即/dev/hdb或/dev/sdb设备 -hdc file 作为客户机的第一个IDE(序号为2)设备,即/dev/hdc或/dev/sdc设备 -hdd file 作为客户机的第一个IDE(序号为3)设备,即/dev/hdd或/dev/sdd设备 -fda file 作为客户机的第一个软盘设备(序号为0),即/dev/fd0 -fdb file 作为客户机的第二个软盘设备(序号为1),即/dev/fd1 -cdrom file 作为客户机的光盘CD-ROM,客户机表现为/dev/cdrom -mtdblock file 使用file文件作为客户机自带的一个flash存储器 -sd file 使用file文件作为客户机中的SD卡 -pflash file 使用file文件作为客户机并行flash存储器
2、存储驱动器 "-dirver"详细定义一个存储驱动器
qemu-kvm相关参数: -dirve option[,option[...]] option选项如下: file=file 使用file文件作为镜像文件加载到客户机的驱动中 if=interface 指定驱动器使用的接口类型 bus=bus,unit=unit 设置驱动器在客户机中的总线编号和单元编号 index=index设置在同一种接口驱动器中的索引编号 media=media 设置驱动器中的媒介类型,其值是"disk"或"cdrom" snapshot=snapshot 设置snapshot选项,其值为"on"或"off",启用后qemu不会将磁盘数据的更改写回到镜像文件中,而是写到临时文件中。 cache=cache 设置宿主机对块设备数据(包括文件或一个磁盘)访问中的cache情况,值为none或off、wirteback、wirtethrogh(默认值)等 aio=aio 设置异步IO的方式,有"threads"(让一个线程池去处理异步IO)和"native"(只是适用于cache=none) format=format 指定使用的磁盘格式,在默认情况下是qemu自动检测磁盘格式的 serial=serial 指定分配给设备的序列号 addr=addr 分配给驱动控制器的PCI地址,该选项只有在使用virtio接口时才适用。 id=name 设置驱动器的ID,这个ID可以在QEMU monitor中用"info block"看到。 readonly=on|off 设置驱动器是否只读
3、配置客户机启动顺序的参数:
-boot[order=dirves][,once=dirves][,menu=on|off][,splash=splashfile][,splash-time=sp-time] qemu模拟的x86平台: "a" "b"分别表示第一第二软驱 "c" 表示第一个硬盘 "d" 表示CD-ROM光驱 "n" 表示从网络启动 默认是从硬盘启动; 设置从光盘启动-boot order=d once表示第一次启动的启动顺序动,boot once=d设置首次从光盘启动,系统重启以后默认就从硬盘启动了。 menu=on|off 设置交互式的启动菜单选项(需要客户机支持),off表示不启用交互式菜单 splash=splashfile和splash-time=sp-time都在menu=on以后才有效,splashfile作为logo传递给bios,sp-time是bios显示splash图片的时间。
配置实例:
qemu-kvm -m 1024 -smp 2 centos6u5.img qemu-kvm -m 1024 -smp 2 -hda centos6u5.img qemu-kvm -m 1024 -smp 2 -drive file=centos6u5.img,if=ide,cache=writethrogh
二、qemu-img工具
qemu-img command [command options]
1、qemu-img check [-f fmt] filename
对磁盘文件进行一致性检测,查找镜像文件中的错误,目前只支持qcow2和qed(virtualbox各式)以及vdi
[root@localhost kvm_demo]# qemu-img check centos6u5.img
This image format does not support checks
2、qemu-img create [-f fmt] [-o options] filename [size]
创建一个格式为fmt,大小为size,文件名为filename的镜像文件,-o选项中用逗号隔开
[root@localhost]# qemu-img create -f qcow2 -b centos6u5.img centos6u5.qcow2
Formatting 'centos6u5.qcow2', fmt=qcow2 size=17179869184 backing_file='centos6u5.img' encryption=off cluster_size=65536
[root@localhost]# qemu-img create -f qcow2 -o backing_file=centos6u5.img centos6u5-1.qcow2
Formatting 'centos6u5-1.qcow2', fmt=qcow2 size=17179869184 backing_file='centos6u5.img' encryption=off cluster_size=65536
[root@localhost]# qemu-img create -f qcow2 -o backing_file=centos6u5.img,size=20G centos6u5-2.qcow2
Formatting 'centos6u5-2.qcow2', fmt=qcow2 size=21474836480 backing_file='centos6u5.img' encryption=off cluster_size=65536
[root@localhost]# qemu-img create -f qcow2 ubuntu.qcow2 10G
Formatting 'ubuntu.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536
3、提交filename文件的更改到后端支持镜像文件
qemu-img commit [-f fmt] filename
4、将fmt各式filename镜像文件根据option参数转换成out_putfilename文件,可以进行不同文件格式之间转换。命令qemu-img convert [-c][-f fmt][-O output_fmt][-o options] filename [filename2[..]] output_filename使用如下:
-c 表示输出镜像文件进行压缩,不过只有qcow2和qcow格式镜像文件才支持压缩,并且这种压缩是只读的 -o options 可以指定后端镜像、文件大小、是否加密等 将vmware的vmdk格式镜像转换为kvm可以使用的raw格式镜像,将raw格式镜像转换为qcow2格式镜像文件 qemu-img convert my-vmware.vmdk my-kvm.img qemu-img convert -O qcow2 centos6u5.img centos6u5-super.qcow2
5、 查看镜像文件信息 #如何文件中存有客户机快照,也会显示出来,qemu-img [-f fmt] filename命令使用如下:
[root@localhost kvm_demo]# qemu-img info ubuntu.qcow2 image: ubuntu.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 136K cluster_size: 65536 [root@localhost kvm_demo]# qemu-img info centos6u5.img image: centos6u5.img file format: raw virtual size: 16G (17179869184 bytes) disk size: 16G
6、qemu-img snapshot [-l| -a snapshot|-c snapshot|-d snapshot] filename
"-l" 表示查询并列出镜像文件中的所有快照 "-a snapshot" 表示镜像文件使用某个快照 "-c snapshot" 表示创建一个快照 "-d " 表示删除一个快照
7、改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令,命令qemu-img rebase [-f fmt][-t cache][-p][-u] -b backing_file [-F backing_fmt] filename使用如下:
"-b backing_file"指定文件作为后端镜像; "-F backing_fmt"后端镜像也呗转化为后端镜像格式
8、size支持K M G T等单位,缩小的时候需要保证操作系统有空闲空间,否则数据丢失,qcow2不支持缩小镜像操作。命令qemu-img resize filename [+|-] size 改变镜像文件大小使用如下:
qemu-img resize centos6u5.img +2G resize的时候一定要做好备份,操作失败会导致镜像文件无法恢复而数据丢失。
三、qemu-img支持的镜像格式:
raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 qed vhdx parallels nbd blkdebug host_cdrom host_floppy host_device file gluster gluster gluster gluster raw:原始磁盘镜像格式,优势非常简单,便于迁移到其他模拟器上 qcow2:QEMU目前推荐镜像格式,功能最多,支持空洞(节省存储空间),支持AES加密,支持基于zlib的压缩,支持一镜像文件中有多个虚拟机快照。 qcow :较旧的QEMU镜像格式,目前很少使用了。 cow:用户模式linux的copy-on-write的镜像文件格式 vdi:兼容oracle virtualbox1.1的镜像文件格式 vmdk: 兼容vmware4版本以上的镜像文件格式 vpc:兼容微软的Virtual PC镜像文件格式
四:客户机存储方式:
1、本地存储镜像文件 2、物理磁盘或者磁盘分区 3、LVM逻辑分区 4、NFS网络文件系统 5、iSCSI基于IP的网络存储系统 6、本地或者光纤通道连接的LUN 7、GFS2文件系统
使用文件做镜像有很多优点:
存储方便,一个物理设备可以放多个镜像文件;易用性,管理多个文件比管理多个分区和磁盘要方便多;可移动性;可复制性;
空洞文件可以节省磁盘空间,仅占用时写入;网络远程访问。