KVM guest caching modes
kvm中host和guest各自维护自己的page caches,使得内存中有两份缓存数据。host的缓存为page cache可以理解为读缓存,guest的缓存为disk write cache,可以理解为写缓存,前者优化读性能,后者优化写性能。如果disk write cache开启,那么一旦数据存在disk write cache中,写操作认为已经完成,即使真正的数据尚未在物理磁盘上。因此如果掉电,则存在数据丢失风险,数据完整性得不到保障。除非用户手动指定fsync(同步内存中所有已修改的文件数据到储存设备),或者disk wriet cache中的内容发生了变化,才会把数据写到物理磁盘上。
kvm/qemu支持以下缓存模式:
1.writethrough
qemu-kvm1.2版本下为默认缓存模式,the host page cache is enabled, but the disk write cache is disabled,数据完整性得到保障(不经过写缓存,而是直接写到物理磁盘),读操作性能较好,写操作性能较差。
2.writeback
qemu-kvm1.2版本以上为默认缓存模式,both the host page cache and the disk write cache are enabled,读写操作性能都很优异,唯一的缺点就是写操作的数据掉电可能丢失,无法保证数据完整性。
3.none
the host page cache is disabled, but the disk write cache is enabled. 读操作性能较差,写操作性能较好,同样数据完整性得不到保障。
4.unsafe
Caching mode of unsafe ignores cache transfer operations completely. 应该是guest发出的刷新缓存指令被忽视,意味着以牺牲数据的完整性来换取性能的提升。
5.directsync
两种缓存均关闭,读写操作性能较差。
| cache mode | host page cache | disk write cache |
| writethrough | on | off |
| writeback | on | on |
| none | off | on |
| unsafe | on | ignore |
| directsync | off | off |
reference:
https://www.suse.com/documentation/sles11/book_kvm/data/sect1_1_chapter_book_kvm.html
http://www.bubuko.com/infodetail-1070877.html
http://blog.chinaunix.net/uid-26000137-id-3957726.html
http://www-01.ibm.com/support/knowledgecenter/linuxonibm/liaat/liaatbpkvmguestcache.htm
http://blog.csdn.net/jollyjumper/article/details/12374415
KVM guest caching modes的更多相关文章
- QEMU命令创建KVM Guest(bridge桥接)
1. Check QEMU version [root@pqsfc018 ~]# /usr/bin/qemu-system-x86_64 -version QEMU emulator version ...
- 挂载KVM Guest操作系统磁盘
使用虚拟机时, 发现想要修改虚拟机中的文件非常麻烦, 需要启动虚拟机, 然后再登录进去修改. 对于已经关闭的虚拟机, 为了修改一个文件而启动, 非常耽误时间. 对于一个无法启动的虚拟机(比如启动文件损 ...
- 使用spice连接kvm guest主机
spice技术已经出来很久了,其是优于VNC的一种远程桌面协议,之所以这里记录下,是由于某些加密视频文件(如以vpy结尾的超时代视频加密),会识别主机的特征吗,一旦主机重启后这些视频又没法查看了,所以 ...
- kvm guest usb mapping
http://www.linux-kvm.org/page/USB#Input_devices http://www.linux-kvm.org/page/USB_Host_Device_Assign ...
- [转] KVM I/O slowness on RHEL 6
KVM I/O slowness on RHEL 6 http://www.ilsistemista.net/index.php/virtualization/11-kvm-io-slowness-o ...
- kvm 创建新虚拟机命virt-install 使用说明
virt-install 命令说明 1.命令作用 建立(provision)新虚拟机 2.语法 virt-install [选项]... 3.说明(DESCRIPTION) vi ...
- Configure a bridged network interface for KVM using RHEL 5.4 or later?
environment Red Hat Enterprise Linux 5.4 or later Red Hat Enterprise Linux 6.0 or later KVM virtual ...
- KVM 介绍(2):CPU 和内存虚拟化
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- QEMU/KVM功能测试
最近在对QEMU/KVM在HP服务器进行功能测试,项目刚刚启动,遇到不少问题,从Git上拿到最新的source build进行测试,在RHEL7.0a3 + Kernel version3.10 + ...
随机推荐
- poj1475Pushing Boxes
N - Pushing Boxes Time Limit:2000MS Memory Limit:131072KB 64bit IO Format:%I64d & %I64u ...
- VS2012下基于Glut OpenGL glScissor示例程序:
剪裁测试用于限制绘制区域.我们可以指定一个矩形的剪裁窗口,当启用剪裁测试后,只有在这个窗口之内的像素才能被绘制,其它像素则会被丢弃.换句话说,无论怎么绘制,剪裁窗口以外的像素将不会被修改.有的朋友可能 ...
- c语言栈的链表实现
#include <stdio.h> #include <stdlib.h> #include"PublicDS.h" typedef int ElemTy ...
- memcached缓存技术
初学memcached缓存技术,如果文章写得不好还请谅解 应用环境:win7 实现环境:cmd,eclipse Memcached简洁而强大.它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存 ...
- MemoryStream和FileStream
一,FileStream对象的数据来自文件,而MemoryStream对象的数据来自内存缓冲区.这两个类都继承自Stream类. 二,抽象基类System.IO.Stream代表流,它提供Read和W ...
- typeJavaScript笔记----字符串,参数,函数,表达式,循环
一.字符串新特性--双丿(撇)号声明字符串 .多行字符串 var myName = `fang my hao li jsk c sdf` //这样不会报错. .字符串模板 console.log(`q ...
- flume 以 kafka 为channel 的配置
#此配置以kafka的一个topic为channel,相比其他channel类型 file和cache 兼并了快和安全的要求!# Define a kafka channel a1.channels. ...
- android下拉刷新控件 android-pulltorefresh
运行效果: 介绍:ListView.ViewPager.WevView.ExpandableListView.GridView.(Horizontal)ScrollView.Fragment上下左右拉 ...
- Saltstack Master 配置文件详解
#主配置 /etc/salt/master interface 默认值:0.0.0.0(所有的网络地址接口) 绑定到本地的某个网络地址接口 interface: 192.168.30.131 publ ...
- CodeForces 676D Theseus and labyrinth
最短路. $dis[i][j][k]$记录到点$(i,j)$,门的状态为$k$时的最短路.转移的时候有$8$种方案,即直接走向周围四个点,或者进行旋转.比较烦的是判断两个相邻的点在状态$k$下是否连通 ...