首页 > 其他分享 >KVM虚拟化之磁盘:磁盘缓存模式

KVM虚拟化之磁盘:磁盘缓存模式

时间:2023-02-20 21:36:20浏览次数:42  
标签:writeback 缓存 虚拟化 KVM writethrough 宿主机 磁盘 刷盘

 

虚拟化一般网络和存储都是难点。下图所示,磁盘I/O从虚拟机到宿主物理机存储的过程。

其中虚拟机镜像并不是必须的。并不一定要给虚拟机创建虚拟磁盘文件。我们可以通过逻辑映射,将SAN的块设备指定给虚拟机使用。这里我们暂讨论宿主机模拟磁盘的场景。

                               KVM虚拟化之磁盘:磁盘缓存模式

如上图,缓存模式作用在虚拟化层和宿主机文件系统或块设备之间。

性能:none>unsafe>writeback>writeththrough

数据一致性:writethrough>none>writeback>unsafe

directsync类似于writethrough,属于新增缓存模式,性能应该略强于writethrough,一致性很高。

 

缓存方式

标志位

性能

安全性

磁盘缓存属性是作用在镜像文件或块设备上的

不指定,默认

 

 

 

qemu-kvm <1.2版本

qemu-kvm >1.2版本

宿主机:CentOS

qemu-kvm >1.2版本

&IDE\SCSI\Virtio

writethrough

writeback

none

writethrough

writethrough/透写

O_DSYNC

读较快

写超慢

不使用任何缓存,直接操作磁盘写,只有数据被写入磁盘才会返回成功。虽然保持了数据一致性,但是因为磁盘的写入速度很慢,所以该模式下写速度很慢,但是读速度较高。无需刷盘。

writeback/回写

 

读写快

将数据写入宿主机页面缓存则返回写成功。页面缓存再合并数据写磁盘。虚机磁盘控制器也知道使用了back cache,所以为了保持数据一致性(虚机侧数据新,磁盘侧数据旧),在需要的时候,虚机会发送刷盘(将缓存里的数据强制持久化到磁盘。)指令。

none

O_DIRECT

随机读写快

顺序读写慢

绕过宿主机页面缓存(OS Cache),而是在qemu-kvm用户空间直接访问宿主机磁盘。这个过程就相当于让vm直接访问了你的host的磁盘,从而性能得到了提升。数据被放入宿主机磁盘写队列则返回成功。需要时刷盘。

unsafe

 

读写快

同writeback,但是unsafe忽略所有的刷盘指令。无刷盘。

directsync

O_DSYNC

O_DIRECT

读写快

应该属于writethrough和none方式的结合。无需刷盘。

 

注释:

O_DIRECT - 绕过缓冲区高速缓存 - 直接IO:Linux允许应用程序在执行磁盘IO时绕过缓冲区高速缓存,从用户空间直接将数据传递到文件或磁盘设备,称为直接IO(direct IO)或者裸IO(raw IO)

应用场景:

none:支持在线迁移,主要应用于虚拟化集群。

writeback:性能较好,不太安全(取决于刷盘周期,刷盘周期跟fs配置相关,ext4默认5秒刷一次,可以在guest fs中配置刷盘周期),可用户测试环境。

wirthrough:性能差,安全性高,可用于单机虚拟化场景。

unsafe:性能较好,最不安全,只有在虚拟机关机(虚机进程结束),才会执行一次刷盘操作。可用于安装虚机。

 

摘自:https://www.likecs.com/show-203905751.html#sc=1400

标签:writeback,缓存,虚拟化,KVM,writethrough,宿主机,磁盘,刷盘
From: https://www.cnblogs.com/sword0077/p/17138974.html

相关文章

  • kvm虚拟化之IO虚拟化
     (文章来自作者维护的社区微信公众号【虚拟化云计算】)  QEMU-KVM作为一个VMM提供了全虚拟化环境,guest不经过任何修改就能运行在KVM环境中。不过KVM在IO虚拟化方面,使......
  • kvm虚拟化之cpu虚拟化
    (文章来自作者维护的社区微信公众号【虚拟化云计算】)   讲到intel的cpu虚拟化,就不得不提到vt-x。vt-x是intel的CPU硬件虚拟化技术,但是在操作系统内部查看cpu的flag时,......
  • Windows Hyper-v 开启嵌套虚拟化的方法
     1、要实现hyper-v嵌套虚拟化,首先,我们以管理员身份打开powershell2、在命令行中输入get-vm,列出我们自己的虚拟机PSC:\Users\Windows>Get-VM3、输入Get-VMP......
  • win系统提示请插入多卷集的最后一张磁盘解决方法
    整个人嘛了,今天插上U盘,跟tmd中了病毒一样,屏幕疯狂弹出窗口,  提示请插入多卷集的最后一张磁盘!点确定之后他继续弹出,点取消它也继续弹出,关掉一个又弹出来一个,妈的,我......
  • 【操作系统】磁盘IO常见性能指标和分析工具实战
    1.磁盘读写常见的指标(1)IOPS(Input/OutputOperationsperSecond)指每秒能处理的I/O个数,表示块存储处理读写(输出/输入)的能力,单位为次,有顺序IOPS和随机IOPS比如100次/秒,那iops......
  • 磁盘 IO 读写测试
    [root@linuxcool~]#fio-filename=linuxcool-direct=1-iodepth1-thread-rw=read-ioengine=psync-bs=16k-size=10G-numjobs=10-runtime=100-group_reporting-......
  • Windows虚拟机由vmware迁移至kvm注意事项
    使用virt-v2v将Windows虚拟机从vmware迁移到kvm,需要额外注意事项,简单记录了下。安装virt-v2v运行 virt-v2v 的主机上安装virt-v2v,可以把在其它虚拟机平台上运行的虚拟机进......
  • Oracle不同机器使用nfs挂载磁盘命令
    hpunixmount-Fnfs-orw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,timeo=600,proto=tcp,suid,forcedirectio172.16.8.90:/xtts/xttsaixmount-tnfs-o......
  • Linux挂载新磁盘
    目录Linux挂载新磁盘前言检查硬盘分区格式化(创建文件系统)挂载临时挂载永久挂载结语参考Linux挂载新磁盘前言当我们在使用Linux服务器或主机的时候,遇到磁盘空间不足的......
  • 分享一个Linux-gpt分区的脚本脚本,磁盘大于2T的时候就需要使用gpt分区格式
      #!/bin/basha=0fdisk-l|egrep"^Disk/dev/sd[a-z]|^Disk/dev/nvme[0-9][a-z][0-9]"|awk-F"[]"'{print$2}'|cut-d":"-f1>listdisk.txtforiin`catl......