KVM中存储的配置
存储配置和启动顺序
QEMU提供了对多种块存储设备的模拟,包括IDE设备、SCSI设备、软盘、U盘、virtio磁盘等,而且对设备的启动顺序提供了灵活的配置。
1. 存储的基本配置选项
在qemu-kvm命令行工具中,主要有如下的参数来配置客户机的存储。
1)-hda file
将file镜像文件作为客户机中的第一个IDE设备(序号0)
在客户机中表现为:
/dev/hda设备(若客户机中使用PIIX_IDE驱动)
或/dev/sda设备(若客户机中使用ATA_PIIX驱动)
如果不指定-hda或-hdb等参数,那么在前面一些例子中提到的
"qemu-system-x86_64 /root/kvm_demo/rbel6u3.img"就与加上-hda参数来指定镜像文件的效果一样的。
另外,也可以将宿主机中的一个硬盘(如/dev/sdb)作为-hda的file参数来使用,从而让整个硬盘模拟为客户机的第一个IDE设备。
注意:如果file文件的文件名中包含有英文逗号(","),则在书写file时应该使用两个逗号(因为逗号是qemu-kvm命令行中的特殊间隔符,例如用于"-cpu qemu64,+vmx"这样的选项),如使用" -hda my,,file "将my,file这个文件作为客户机的第一个IDE设备。
( 2 ) -hdb file
将file作为客户机中的第二个IDE设备(序号1),在客户机中表现为/dev/hdb或/dev/sdb设备。
( 3 ) -hdc file
将file作为客户机中的第三个IDE设备(序号2),在客户机中表现为/dev/hdc或/dev/sdc设备。
( 4 ) -hdd file
将file 作为客户机中的第四个IDE设备(序号3),在客户机中表现为/dev/hdd或/dev/sdd设备。
( 5 ) -fda file
将file作为客户机中的第一个软盘设备(序号0), 在客户机中表现为/dev/fd0设备。也可以将宿主机中的软驱(/dev/fd0) 作为-fda的file来使用。
(6) -fdb file
将file作为客户机中的第二个软盘设备(序号1),在客户机中表现为/dev/fdl设备。
(7) -cdrom file
将file作为客户机中的光盘CD-ROM, 在客户机中通常表现为/dev/cdrom设备。也可以将宿主机中的光驱(/dev/cdrom)作为-cdrom的file来使用。
注意:-cdrom参数不能和-hdc参数同时使用,因为"-cdrom"就是客户机中的第三个IDE设备。
在通过物理光驱中的光盘或磁盘中ISO镜像文件安装客户机操作系统时一般会使用-cdrom参数。
(8) -mtdblock file
使用file文件作为客户机自带的一个Flash存储器(通常说的闪存)。
(9) -sd file
使用file文件作为客户机中的SD卡(Secure Digital Card )。
( 10 ) -pflash file
使用file文件作为客户机的并行Flash存储器(Parallel Flash Memory )。
2. 详细配置存储驱动器的-drive参数
较新版本的qemu-kvm还提供了"-driver" 参数来详细定义一个存储驱动器,该参数的具体形式如下:
-drive option[,option[,option/,...])]
为客户机定义一个新的驱动器,它有如下一些选项:
( 1) file=file
使用file文件作为镜像文件加载到客户机的驱动器中。
(2) if=interface
指定驱动器使用的接口类型,可用的类型有:ide、scsi、sd、mtd、floopy、pflash、virtio,等等。其中,除了virtio、scsi之外,其余几种类型都在本节的前面介绍过了。virtio将在第5章中介绍,而关于scsi类型的接口,QEMU目前还不支持从SCSI类型设备启动客户机系统,Launchpad上也有一个bug记录着这个问题。
(3) bus=bus,unit=unit
设置驱动器在客户机中的总线编号和单元编号。
(4) index=index
设置在同一种接口的驱动器中的索引编号
(5) media=media
设置驱动器中媒介的类型,其值为"disk"或"cdrom"。
(6) snapshot=snapshot
设置是否启用"-snapshot"选项,其可选值为"on"或"off。当snapshot启用时,QEMU不会将磁盘数据的更改写回到镜像文件中,而是写到临时文件中,当然可以在QEMU monitor中使用"commit"命令强制将磁盘数据的更改保存回镜像文件中。
(7) cache=cache
设置宿主机对块设备数据(包括文件或一个磁盘)访问中的cache情况,可以设置为"none"(或"off'')、"writeback"、"writethrough"等。
其默认值是"writethrough",即“直写模式”:它是在调用write写入数据的同时将数据写入磁盘缓存(disk cache)和后端块设备(block device)中,其优点是操作简单,其缺点是写入数据速度较慢。
而"writeback"即“回写模式”:在调用write写入数据时只将数据写入到磁盘缓存中即返回,只有在数据被换出缓存时才将修改的数据写到后端存储中,其优点是写入数据速度较快,其缺点是—旦更新数据在写入后端存储之前遇到系统掉电,数据会无法恢复。
"writethrough"和"writeback"在读取数据时都尽量使用缓存,若设置了"cache=none"关闭缓存的方式,QEMU将在调用open系统调用打开镜像文件时使用"O_DIRECT"的标识,所以其读写数据都是绕过缓存直接从块设备中读写的。
一些块设备文件(如后面即将介绍的qcow2格式文件)在"writethrough" 模式下性能表现很差,如果这时对性能要求比正确性更高,建议使用"writeback"模式。
(8) aio=aio
选择异步IO(Asynchronous IO)的方式,有"threads"和"native"两个值可选。
其默认值为"threads",即让一个线程池去处理异步IO
而"native"只适用于"cache=none"的情况,就是使用Linux原生的AIO
(9) format=format
指定使用的磁盘格式、在默认情况下是QEMU自动检测磁盘格式的。
(10) serial=serial
指定分配给设备的序列号。
(11) addr=addr
分配给驱动器控制器的PCI地址,该选项只有在使用virtio接口时才适用。
(12) id=name
设置该驱动器的ID,这个ID可以在QEMU monitor中用"info block"看到。
(13) readonly=on|off
设置该驱动器是否只读。
3. 配置客户机启动顺序的参数
前面介绍了各种存储设备的使用参数,它们在客户机中的启动顺序可以用如下的参数设定:
-boot [order=drives]
[,once=drives ] [,menu=on|off] [,splash=splashfile] [,splash-time=sp-time]
在QEMU模拟的x86 PC平台中:
order=
l 用"a"、"b"分别表示第一和第二个软驱,
l 用"c"表示第一个硬盘,
l 用"d"表示CD-ROM光驱,
l 用"n"表示从网络启动。
其中,默认从硬盘启动,要从光盘启动可以设置"-boot order=d"。
once=
"once"表示设置第一次启动的启动顺序(即仅生效一次),在系统重启(reboot)后该设置失效,如"-boot once=d"设置表示本次从光盘启动,但系统重启后从默认的硬盘启动。
memu=on|off''
用于设置交互式的启动菜单选项(前提是使用的客户机BIOS支持),它的默认值是"menu=off'', 表示不开启交互式的启动菜单选择。
"splash=splashfile" 和"splash-time=sp-time"
选项都是在"menu=on"时才有效,将名为splashfile的图片作为logo传递给BIOS来显示,而sp-time是BIOS显示splash图片的时间,其单位是毫秒(ms)。
图4-5展示了在使用"-boot order=dc,menu=on"设置后,在客户机启动窗口中按F12进入的启动菜单。
存储配置的示例
lspci | grep IDE
由于这个客户机使用的是piix_ide驱动,因此看到的是/dev/hda这样的磁盘,
而对于同样一个磁盘,如果客户机操作系统使用的是ata_piix驱动(此时无piix_ide驱动),则看到的是/dev/sda这样的磁盘,效果如下:
KVM中存储的配置的更多相关文章
- 网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍
1. 网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...
- asp.net中web.config配置节点大全详解
最近网上找了一些关于Web.config配置节点的文章,发现很多都写的都比较零散,而且很少有说明各个配置节点的作用和用法.搜索了一下发现有一篇写的不错,这里引用一下 原文地址 http://www.c ...
- 深入理解php中的ini配置(1)
这篇文章不会详细叙述某个ini配置项的用途,这些在手册上已经讲解的面面俱到.我只是想从某个特定的角度去挖掘php的实现机制,会涉及到一些php内核方面的知识:-) 使用php的同学都知道php.ini ...
- .net中SessionState相关配置
web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer. 1.off模式 从字面上就可 ...
- ASP.NET,web.config 中SessionState的配置
web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失. 于是, 状态管理就成了 ...
- asp.net中web.config配置节点大全详解【转】
web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web ...
- 在配置文件(.settings、.config)中存储自定义对象
原文:在配置文件(.settings..config)中存储自定义对象 引言 我前面曾写过一篇<使用配置文件(.settings..config)存储应用程序配置>,我在其中指出“sett ...
- JavaEE开发之SpringMVC中的路由配置及参数传递详解
在之前我们使用Swift的Perfect框架来开发服务端程序时,聊到了Perfect中的路由配置.而在SpringMVC中的路由配置与其也是大同小异的.说到路由,其实就是将URL映射到Java的具体类 ...
- Ocelot中文文档-配置
这里有一个配置的列子.其中有两个配置块.一个ReRoutes数组和一个GlobalConfiguration.ReRoutes配置块是一些告诉Ocelot如何处理上游请求的对象.Globalconfi ...
随机推荐
- P5154 数列游戏(区间dp)
传送门 果然和dp有关的东西我绝对做不出来啊-- 设\(dp[i][j]\)表示消完区间\([i,j]\)中的数之后能得到的最大分数,如果消不完则为\(-inf\),否则枚举断点.顺便如果\(a[i] ...
- Jquery Validate不是用submit按钮提交表单,使用a标签js代码都可以
不多说,上代码. $("#form").validate(); $("#btn").click(function() { if($("#form&qu ...
- Codeforces Round #513解题报告(A~E)By cellur925
我是比赛地址 A:Phone Numbers $Description$:给你一串数字,问你能组成多少开头为8的11位电话号码. $Sol$:统计8的数量,与$n$%11作比较. #include&l ...
- 关于使用IQKeyBoardManager键盘还是被遮挡的问题解决方案
今天在做一个登录界面的时候发现使用了IQKeyBoardManager键盘还是被遮挡,解决方案如下 解决方案一:在所有视图的最外层添加一个UIView作为容器即可,但在有导航栏的情况下导航栏会跟着向上 ...
- 伪元素选择器:before 以及 :after
E:after.E:before 在旧版本里是伪类,在新版本里是伪元素,新版本下E:after.E:before会被自动识别为E::after.E::before,按伪元素来对待,这样做的目的是用来做 ...
- 项目上线后出现Bug,该如何处理?
项目在上线之后又出现了Bug,这让很多测试人员和开发人员头痛.但很多时候线上Bug普遍地存在,不可避免. 任何项目都存在未发现 Bug 和 已发现 Bug 两种情况,不存在没有 Bug的情况. 即 ...
- Hdu 4778 Gems Fight! (状态压缩 + DP)
题目链接: Hdu 4778 Gems Fight! 题目描述: 就是有G种颜色,B个背包,每个背包有n个宝石,颜色分别为c1,c2............两个人轮流取背包放到公共容器里面,容器里面有 ...
- bzoj1878 [SDOI2009]HH的项链【莫队】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1878 以每个询问左端点所属的块的编号为第一关键字,右端点本身为第二关键字,排序,然后保利扫描 ...
- [洛谷P2417]课程
题目链接: 点我 题目分析: 二分图最大匹配裸题,跑完匈牙利判断\(ans\)是否等于教室数即可 多组数据请注意初始化. 代码: #include<bits/stdc++.h> #defi ...
- 18.3.2从Class上获取信息(注解)
package d18_3_1; /** * Class类上所包含的注解 * * getAnnotation(Class annotationClass) 获取该元素上指定的类型的注解 * getAn ...