FlashCache write-back模式下的IO请求详述

个人简介:石云华,Exadata中国用户组联合创始人,2019年被ORACLE官方授予ACE称号。毕业后一直从事Oracle数据库第三方运维服务工作,拥有十余年电信运营商、保险、税务、电力行业核心系统数据库运维经验。现就职于北京海天起点技术服务股份有限公司,oracle数据库专家组成员,Exadata部门负责人。个人著作有《Exadata实施运维指南》,另外一本《Oracle Exadata性能优化》即将面世。

FlashCachewrite-back模式下,它的IO读操作与write-through模式完全相同,无论是数据已经缓存到FlashCache的情况,还是数据未缓存到FlashCache的情况;但它的IO写操作与write-through模式则完全不同。

下面,我们主要来介绍FlashCache配置为write-back模式时,IO写操作的请求顺序。write-back模式下整个IO写操作流程如图4.8所示。

图4.8 write-back模式的FlashCache写数据时IO请求

第一步,数据库服务器向存储管理软件发起IO写请求。

第二步,存储管理软件将这些IO写请求直接写入FlashCache中,而不是数据文件。

第三步,当数据库服务器的IO写请求完全写入FlashCache后,给数据库服务器一个IO写结束的响应。

第四步,存储管理软件后期会将FlashCache中的脏数据块慢慢地刷回数据文件中。

下面,我们以normal冗余的ASM磁盘组为例,来讲解FlashCachewrite-back模式下的工作细节。

情景一,当我们需要对如图4.9a)所示中绿色的数据块进行update更新操作时,该绿色的数据块的primary数据块和mirror数据块都会被读入到各自存储节点的FlashCache中,update更新操作提交后,数据库服务器会将脏数据块直接写入FlashCache中,此时磁盘中的数据是陈旧的,而FlashCache中的数据是最新的。

图4.9(a) write-back模式的FlashCache IO请求

此时,如果有其它的应用系统需要访问绿色的数据块时,则会从FlashCache中读取最新的数据信息。

情景二,如果我们需要修改蓝色和黄色的数据块,则蓝色和黄色的数据块的primary数据块和mirror数据块也同样都会被读入到各自存储节点的FlashCache中,update更新操作提交后,数据库服务器会将脏数据块直接写入FlashCache中,此时磁盘中的数据是陈旧的,而FlashCache中的数据是最新的。如图4.9b)所示。


图4.9(b) write-back模式的FlashCache IO请求

此时,绿色、蓝色、黄色最新的数据都存放在FlashCache中,如果此时对数据库进行备份工作,则备份进程会从FlashCache中读取绿色、蓝色、黄色最新的数据,而从磁盘中读取黑色的数据块。

情景三,在情景二的基础上,如果应用系统既要update修改绿色的数据块,同时又要读取黄色的数据块,此时该怎么办?

此时,绿色和黄色数据的primary数据块和mirror数据块都在各自存储节点的FlashCache中,绿色的数据被update修改完后,脏数据还是会被刷回到各自存储节点的FlashCache中,而黄色数据块会从primary数据块所对应的存储节点的FlashCache中读取。

情景四,在情景三的基础上,需要读取蓝色的那个数据块,同时还需要读取大量的其它的数据块(除了黄色和绿色),此时该怎么办?

图4.9(c) write-back模式的FlashCache IO请求

如图所示4.9c),由于需要访问大量的数据块,此时FlashCache的存储空间可能已经不够使用,黄色和绿色数据块对应的primary数据块和mirror数据块会被刷回磁盘中的数据文件,而蓝色的数据块,仅仅是将mirror数据块刷回磁盘中的数据文件,它的primary数据块仍然存放在FlashCache中,同时,其他的数据块会进入FlashCache中。

情景五,如果某个存储节点的PCI-E闪存卡出现损坏,如图4.9d)所示。该如何进行数据访问?

图4.9(d) write-back模式的FlashCache IO请求

当需要访问FlashCache已经损坏的存储节点的黑色数据块时,则直接从磁盘中读取黑色的数据块,因为FlashCache中不包含黑色数据块,同时FlashCache的损坏,不会导致ASM磁盘组无法访问。

当需要访问FlashCache已经损坏的存储节点的黄色数据块时,由于FlashCache已经损坏,而该存储节点磁盘上的黄色数据块的数据已经陈旧,此时会在数据库后台发出一个IO故障警告,同时还会将这个IO请求重定向到mirror数据块所对应的存储节点,访问mirror数据块存储节点的FlashCache上的数据。

未经允许不得转载:Oracle一体机用户组 » FlashCache write-back模式下的IO请求详述

相关推荐