为什么在虚拟化场场景下,在host内只能用direct io不能用buffer io?

     在虚拟化场景下,从虚拟机来的io,首先被传输到存储后端,xen在dom0上,kvm在内核或者qemu上。 如果在后端走buffer io,则数据被写到page cache后就返回了,从虚拟机的角度来看,认为这个IO 已经被写到存储里去了,这时候如果掉电,虚拟机已经被写入的数据有可能被丢弃。这是不可接受的。 这和正在写时掉电IO 丢失是不同的。

     如果你不理解在虚拟化场景下,存储后端不能使用buffer IO, 你看看SAN (包括IPSAN和FCSAN)的情况就明白了,一般SAN 支持write back和write through. write back就是对应buffer IO.  数据写到SAN  的cache后,就返回IO 写入成功。那这时候SAN 断电了呢,SAN 对cache 的内存都有断电保护,当SAN 断电时,启用专门保护SAN cache的电池,保证能把cache的数据写入到磁盘。 如果SAN 的电池老化后不能使用,则不能设置write back,已经设置的也会变成write through.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值