原文:
注明:本文内容基于 VMware VSAN beta 版本撰写,请访问获得有关正式版本的更新信息。
有一个问题一直困扰着我,就是如果数据可以随意分布在读取缓存、写入缓冲区和磁盘任何位置,那么应该如何处理 Virtual SAN 读取 IO 呢?一位 VMTN 工程师最近对此进行了说明。我想我应该创建一个快速图表来进行阐释。它的基本工作原理是,VSAN 首先检查读取缓存,如果读取缓存中没有需要读取的块,则它会检查该块是否在写入缓冲区或磁盘上。是不是很简单?
在这种情形下,我绘制了以下两个需要读取的块。块 1 由 ESXi-01 主动提供,块 2 由 ESXi-03 主动提供。在使用 ESXi-01 时,该块驻留在读取缓存中,因此会从该缓存进行读取。在使用 ESXi-03 时,该块既不在读取缓存中,也不在写入缓冲区中,因此会从磁盘进行读取。请注意,这是 1 个虚拟机,因此从两个主机进行读取,根据哪个主机主动为该块提供 IO,该块可能驻留在该主机上的读取缓存中。不会主动为该块提供 IO 的主机也不会将该块放在读取缓存中!(当然,如果主动为某个块提供 IO 的主机发生故障,则另一个主机会进行接管。)
希望对大家有所帮助。
呼朋引伴,欢迎分享!
————————————————————————————————————————————
作者: Duncan Epping
Duncan Epping 现任 VMware R&D 的 SDDC 新兴解决方案团队首席架构师。他主要负责挖掘现有产品和功能的新机会,并通过对新解决方案或产品进行原型开发来为 VMware 探索新的业务商机。他主要致力于软件定义的存储和业务连续性/灾难恢复解决方案,目前正在申请一项专利。