原创

kvm 学习笔记之数据存储

简介

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文件系统

使用文件做镜像有很多优点:

存储方便,一个物理设备可以放多个镜像文件;易用性,管理多个文件比管理多个分区和磁盘要方便多;可移动性;可复制性;

空洞文件可以节省磁盘空间,仅占用时写入;网络远程访问。

~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信