qemu-kvm磁盘读写的缓冲(cache)模式一共有五种,分别是
writethrough, wirteback, none, unsafe, directsync
当你对VM读写磁盘的性能有不同的要求的时候,你可以在其启动的参数(cache=xxxx)
里面进行一个合理的选择.
现在来简单说一说这五种模式的各自的特点
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