qemu-kvm磁盘读写的缓冲(cache)的五种模式

qemu-kvm磁盘读写的缓冲(cache)模式一共有五种,分别是
writethrough, wirteback, none, unsafe, directsync
当你对VM读写磁盘的性能有不同的要求的时候,你可以在其启动的参数(cache=xxxx)
里面进行一个合理的选择.

现在来简单说一说这五种模式的各自的特点(默认的是writeback)

cache=writethrough:
  该模式对应的标志位是O_DSYNC,仅当数据被提交到了存储设备里面的时候,写操作
  才会被完整的通告。此时host的页缓存可以被用在一种被称为writethrough缓存的模式。
  guest的虚拟存储设备被告知没有回写缓存(writeback cache),因此guest不需要为了
  操纵整块数据而发送刷新缓存的指令了。此时的存储功能如同有一个直写缓存(writethrough cache)一样

cache=none:
  所对应的标志位是O_DIRECT,在 none 模式下,VM的IO操作直接
  在qemu-kvm的userspace缓冲和存储设备之间进行,绕开了host的页缓冲。
  这个过程就相当于让vm直接访问了你的host的磁盘,从而性能得到了提升。

cache=writeback:
  对应的标志位是 O_DSYNC 或者 O_DIRECT ,在writeback模式下,IO操作会经过
  host的页缓冲,存放在host页缓冲里的写操作会完整地通知给guest.
  除此之外,guest的虚拟存贮适配器会被告知有回写缓存(writeback cache),所以为了能够
  整体地管理数据,guest将会发送刷新缓存的指令.类似于带有RAM缓存的磁盘阵列(RAID)管理器.

cache=unsafe:
  该模式与writeback差不多,不过从guest发出的刷新缓存指令将会被忽视掉,这意味着使用者
  将会以牺牲数据的完整性来换取性能的提升。

cache=directsync:
  该模式所对应的标志位是O_DSYNC和O_DIRECT,仅当数据被提交到了存储设备的时候,写
  操作才会被完整地通告,并且可以放心地绕过host的页缓存。
  就像writethrough模式,有时候不发送刷新缓存的指令时很有用的.该模式是最新添加的一种cache模式,
  使得缓存与直接访问的结合成为了可能.

参考链接:
  -https://www.suse.com/documentation/sles11/book_kvm/data/sect1_1_chapter_book_kvm.html
  -http://www.ilsistemista.net/index.php/virtualization/23-kvm-storage-performance-and-cache-settings-on-red-hat-enterprise-linux-62.html?limitstart=0
  -http://smilejay.com/2012/08/qemu-kvm-cache-off/

时间: 2024-10-06 17:44:20

qemu-kvm磁盘读写的缓冲(cache)的五种模式的相关文章

QEMU/KVM磁盘在线备份

QEMU/KVM磁盘的在线完整及增量备份,是"打包"方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复. tag: qemu, kvm, disk, live, backup, incremental, bitmap 小慢哥的原创文章,欢迎转载 目录 ? 1. 本文缘由? 2. 最终能实现什么? 3. 环境说明? 4. 常用命令一览? 5. 磁盘在线备份的4种方式? 6. 查询磁盘对应的设备名? 7. 什么是bitmap? 8. 创建与

理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称

本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存储卷挂接和设备名称 这篇文章分析一下一个 Ceph RBD 卷是如何被映射到一个 QEMU/KVM 客户机的,以及客户机中设备的命名问题. 1. 遇到的设备命名问题 1.1 通过 Nova 和 Cinder 做 Ceph RDB 卷挂接和卸载步骤 挂接一个卷: #运行nova-attach 命令no

KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 快照 (Nova Instances Snapshot Libvirt)

学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机 (7)快照 本文将梳理 QEMU/KVM 快照相关的知识,以及在 OpenStack Nova 中使用 libvirt 来对 QEMU/KVM 虚机做快照的过程. 1. QEMU/KV

KVM(六)Nova 通过 libvirt 管理 QEMU/KVM 虚机

1. Libvirt 在 OpenStack 架构中的位置 在 Nova Compute 节点上运行的 nova-compute 服务调用 Hypervisor API 去管理运行在该 Hypervisor 的虚机.Nova 使用 libvirt 管理 QEMU/KVM 虚机,还使用别的 API 去管理别的虚机.        libvirt 的实现代码在 /nova/virt/libvirt/driver.py 文件中. 这里是 OpenStack Hypervisor Matrix. 这里是

KVM(七)使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照

本文将梳理 QEMU/KVM 快照相关的知识,以及在 OpenStack Nova 中使用 libvirt 来对 QEMU/KVM 虚机做快照的过程. 1. QEMU/KVM 快照 1.1 概念 QEMU/KVM 快照的定义: 磁盘快照:磁盘的内容(可能是虚机的全部磁盘或者部分磁盘)在某个时间点上被保存,然后可以被恢复. 磁盘数据的保存状态: 在一个运行着的系统上,一个磁盘快照很可能只是崩溃一致的(crash-consistent) 而不是完整一致(clean)的,也是说它所保存的磁盘状态可能相

QEMU KVM libvirt手册(2)

Administrating Virtual Machines with QEMU Monitor When QEMU is running, a monitor console is provided for performing interaction with the user. Using the commands available in the monitor console, it is possible to inspect the running operating syste

[转] KVM scalability and consolidation ratio: cache none vs cache writeback

http://www.ilsistemista.net/index.php/virtualization/43-kvm-scalability-and-consolidation-ratio-cache-none-vs-cache-writeback.html?limitstart=0 In the latest ten years, full-virtualization technologies gained much traction. While this sometime led to

QEMU KVM libvirt手册(4) – images

RAW raw是默认的格式,格式简单,容易转换为其他的格式.需要文件系统的支持才能支持sparse file 创建image # qemu-img create -f raw flat.img 10GFormatting 'flat.img', fmt=raw size=10737418240 如果我们ls则看到 ls -lh flat.img -rw-r--r-- 1 root root 10G Jun 30 22:27 flat.img 但是并不真正占用10G # du -h flat.im

QEMU KVM Libvirt手册(7): 硬件虚拟化

在openstack中,如果我们启动一个虚拟机,我们会看到非常复杂的参数 qemu-system-x86_64 -enable-kvm -name instance-00000024 -S -machine pc-i440fx-trusty,accel=kvm,usb=off -cpu SandyBridge,+erms,+smep,+fsgsbase,+pdpe1gb,+rdrand,+f16c,+osxsave,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx,+v