kvm上的Linux虚拟机使用virtio磁盘
kvm上的Linux虚拟机使用virtio磁盘
系统:centos6.6 64位
网上的文章比较少,怎麽将Linux虚拟机的磁盘改为使用virtio磁盘
因为centos6或以上系统已经包含了virtio驱动,所以不需要再执行下面语句加载内核模块
modprobe virtio virtio_pci virtio_blk virtio_net mkinitrd --with virtio --with virtio_pci --with virtio_blk --with virtio_net -f boot/initrd-$(uname -r).img $(uname -r)
这里说一下具体方法
在物理机上先生成一台虚拟机
1、安装一台Linux机器
qemu-img create -f qcow2 /data/kvmimg/gzxtest04.qcow2 30G
virt-install --name=gzxtest04 --ram 4096 --vcpus=8 --autostart --hvm \
--disk path=/data/kvmimg/gzxtest04.qcow2,size=60,format=qcow2 \
--cdrom /data/download/CentOS-6.6-x86_64-bin-DVD1.iso \
--graphics vnc,listen=0.0.0.0,port=5907 \
--network bridge=br0,model=e1000 --force --connect qemu:///system
2、启动虚拟机并安装好centos6.6系统
3、安装好系统之后,使用poweroff命令关闭虚拟机
4、先备份虚拟机的xml文件
virsh dumpxml gzxtest04 > ~/gzxtest04.xml
5、修改虚拟机的xml文件
virsh edit gzxtest04
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data/kvmimg/gzxtest04.qcow2'/>
<target dev='hda' bus='ide'/>
<alias name='ide0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
修改为
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none' io='native'/>
<source file='/data/kvmimg/gzxtest04.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
其实就是删除address type这一行,在driver name这一行添加io='native',dev='hda' 改为vda, bus='ide' 改为virtio
6、启动虚拟机
virsh start gzxtest04
7、在虚拟机里可以看到原来是hdx的分区已经全部变为vdx
8、在虚拟机里修改grub设备映射表
sed -i "s/hda/vda" /boot/grub/device.map
大功告成
背景知识
KVM虚拟机磁盘的缓存模式
1、默认,不指定缓存模式的情况下,1.2版本qemu-kvm之前是writethough,1.2版本之后qemu-kvm, centos虚拟机默认的缓存模式就是none
2、writethough:使用O_DSYNC语义
3、writeback:不是O_DSYNC语义也不是O_DIRECT语义,虚拟机数据到达宿主机页面缓存page cache就给虚拟机返回写成功报告,页面缓存机制管理数据的合并写入宿主机存储设备
4、none:使用O_DIRECT语义,I/O直接在qemu-kvm用户空间缓存和宿主机存储设备之间发生,要求I/O方式设置为aio=native,不能使用宿主机的page cache,相当于直接访问磁盘,有优越性能
5、unsafe:跟writeback一样,但是不能发出刷盘指令,只有在虚拟机被关闭时候才会将数据刷盘,不安全
6、directsync:同时使用O_DSYNC语义和O_DIRECT语义
缓存模式的数据一致性
writethough、none、directsync
能保证数据一致性,有一些文件系统不兼容none或directsync模式,这些文件系统不支持O_DIRECT语义
writeback
不能保证数据一致性,在数据报告写完成和真正合并写到存储设备上一个时间窗口期,这种模式在宿主机故障时候会丢失数据,因为数据还存在在宿主机的page cache里
unsafe
不保证数据一致性,忽略刷盘指令,只有在虚拟机被关闭时候才会将数据刷盘,不安全
参考文章:https://easyengine.io/tutorials/kvm/enable-virtio-existing-vms/
如有不对的地方,欢迎大家拍砖o(∩_∩)o
本文版权归作者所有,未经作者同意不得转载。
kvm上的Linux虚拟机使用virtio磁盘的更多相关文章
- 如何在VMware workstation上创建Linux虚拟机
由于需要使用Linux虚拟机部署Hadoop集群,故在win10系统上安装了VMware workstation 14,现将介绍如何在VMware workstation上创建Linux虚拟机.下面以 ...
- 手把手教windows上安装linux虚拟机及环境配置
目录 版本说明 安装虚拟机 典型方式安装(推荐小白,带有图形界面,助于学习,但占用空间大) 自定义方式安装(推荐老司机) 创建快照 克隆虚拟机 windows上安装linux虚拟机不管是对于新人还是老 ...
- 在VMware上克隆Linux虚拟机及其网卡配置方法
最近在搭建Hadoop集群,1个Master,3个Workers.使用VMware workstations创建Linux虚拟机,版本是CentOS7.安装完成并做了相应的网络配置后,使用VMware ...
- kvm linux虚拟机在线扩展磁盘
说明: 1) vmware ESXi虚拟化平台也支持这台在线扩展磁盘功能. 2) kvm虚拟机也支持在线扩展磁盘功能,在线扩展有特定的使用环境,主要用于不能随便停用的生产环境中. 3) 经过测试KVM ...
- CentOS7.1 KVM虚拟化之linux虚拟机安装(2)
一.上传ISO文件到/data/iso下 这里使用CentOS-5.5-i386-bin-DVD.iso 二.安装CentOS5.5 CentOS7.1 安装KVM虚拟机默认磁盘格式为qcow2(推荐 ...
- 在 KVM 上安装 Win7 虚拟机
之前都是在用Linux 虚机,现在有需要用到Win7 虚机,才发现在 KVM 上安装 Win7 的过程远比想象中的复杂.本文就把其过程做个简单总结. 1. 在 Virtual Machine Mana ...
- 如何使用Xshell连接VMware上的Linux虚拟机
前序:最近开始研究Hadoop平台的搭建,故在本机上安装了VMware workstation pro,并创建了Linux虚拟机(centos系统),为了方便本机和虚拟机间的切换,准备使用Xshell ...
- KVM上如何让虚拟机支持虚拟化(kvm虚拟化的嵌套)
http://blog.csdn.net/swimming_in_it_/article/details/53320141http://blog.csdn.net/wickedglory/articl ...
- HyperV上的Linux虚拟机启动报panic_early_exception错误
在Windows Server 2012服务器上的HyperV安装的Oracle Linux 6.4版本,在增加内存容量后(有16G升至30G),操作系统无法启动.黑屏并报"PANIC: e ...
随机推荐
- 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!
如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATI ...
- js复杂对象和简单对象的简单转化
var course = { teacher :{ teacherId:001, teacherName:"王" }, course : { courseId : 120, cou ...
- AI人工智能系列随笔:syntaxnet 初探(1)
人工智能是 最近的一个比较火的名词,相信大家对于阿尔法狗都不陌生吧?其实我对人工智能以前也是非常抵触的,因为我认为机器人会取代人类,成为地球乃至宇宙的霸主,但是人工智能带给我的这种冲击,我个人感觉是欲 ...
- VB.NET设置控件和窗体的显示级别
前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...
- 【WPF】日常笔记
本文专用于记录WPF开发中的小细节,作为备忘录使用. 1. 关于绑定: Text ="{Binding AnchorageValue,Mode=TwoWay,UpdateSourceTrig ...
- Angular2 Hello World 之 RC6
angular2还没有发布正式版,确实有点不靠谱,变化太频繁,之前写的demo直接将js升级到最新版之后发现就不能用了……所以现在在写一篇demo——基于RC6.参考:http://web3.code ...
- 多个ul中第一个li获取定位
如果我们只是获取一个ul中的第一个li的话,那么我们可以这样写: $("ul li:first"); $("ul li").eq(0); $("ul ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- [Top-Down Approach]Take Notes
Computer Networking - A Top-Down Approach Six Edition Learn HTTP Using Browser and Proxy 2016-03-20 ...
- Android(1)—Mono For Android 环境搭建及破解
0.前言 最近公司打算开发一款Android平台的简单报表查询软件,因本人之前一直是.NET开发的,和领导商定之后决定采用Mono For Android 进行开发,暂时采用破解版进行开发: 下文是记 ...