以Flash存储器作为硬盘阵列快取技术相比自动分层存储技术领域,相关产品相对较少。下面我们来对比一下Flash存储器硬盘阵列快取技术产品。
EMC
自发布第2代自动分层存储技术FAST VP之后,EMC也在2010年8月发布了另一款搭配CLARiiON CX4与Celerra、称为FAST Cache的产品,可通过SSD空间充作快取存储器,加速硬盘存取。
最新版的FAST Cache是搭配VNX系列整合存储设备,可支持使用2~42台、总容量100GB~2.1TB的SSD,将这些空间作为辅助DRAM的额外快取存储器,从而提高快取命中率。
FAST Cache包含政策引擎(Policy Engine)与存储器映射地图(Memory Map)两项元件。FAST Cache政策引擎负责管理经过FAST Cache区域的I/O,以及与底层硬盘之间的数据迁移。当底层硬盘LUN中的特定区块(chunk)被频繁存取时,政策引擎会将这些区块的数据复制到FAST Cache区域,以加速存取;当出现其他存取更频繁的区块时,前述区块会被清出FAST Cache区域并复制回底层硬盘,代以存取负载更大的区块。FAST存储器映射地图则以64KB的数据区块(Chunk)粒度,追踪与维持FAST Cache区域的数据。
启用FAST Cache后,当前端主机发出读取需求时,若需要的区块位于FAST Cache区域,政策引擎会将读取需求重新导向到FAST Cache区域;当前端主机发出写入需求,而需写入的区块位于FAST Cache区域时,则先写入DRAM的写入快取区域,并向前端主机回应已写入,然后写入的数据再移出DRAM快取,转到FAST Cache区域。
NetApp
NetApp现有的Flash存储器快取技术产品Flash Cache,是早先效能加速模组(Performance Accelerator Module,PAM)的后继者。
PAM与Flash Cache都是一种搭配NetApp FAS或V系列存储系统控制器的PCIe模组介面卡,目的都是通过模组内搭载的存储器,充当辅助WAFL缓冲快取(位于DRAM构成的控制器系统存储器之中)的第2层快取存储器。
不过2008年下半年推出的PAM采用的是DDR2 DRAM,受限于DRAM价格,每片只能搭载16GB容量存储器,FAS或V系列控制器最多只能安装总容量16~80GB的PAM(视控制器型号而定)。
2010年推出的第二代产品Flash Cache(最初命名为PAM II),则舍弃昂贵的DRAM,改用便宜许多的NAND Flash存储器,因此容量大增,有256GB、512GB与1TB三种容量可选,视FAS/V系列控制器型号不同,可安装总容量多达512GB~16TB的Flash Cache。
虽然采用的存储器类型不同,不过Flash Cache与PAM运作原理基本上是相同的。PAM/Flash Cache与WAFL缓冲快取一样,都是一种读取用快取,只针对读取I/O作快取,而不支持写入I/O。
NetApp独特的WAFL(Write Anywhere File Layout)备份系统写入机制,原本就采用了通过高速、且为非挥发性的NVRAM存储器来加速写入I/O,前端应用程式发出的写入要求,会同时进入存储设备控制器的快取与NVRAM,当NVRAM记录了写入I/O的log数据后,系统即可向前端回应写入完成,让前端应用程式继续进行下一个I/O操作,而无须等到数据实际写入硬盘中。接下来待满足一定条件后,WAFL档案系统才会依据NVRAM中的log与快取存储器中的数据,计算出需实际写入硬盘的区块,然后将数据写入硬盘。
通过前述这种利用NVRAM执行的NVLOG机制,NetApp存储设备便不再需要其他的快取机制来协助写入I/O操作,所以PAM/Flash Cache便只需针对读取I/O的部分作强化即可;另一方面,这也可减少Flash存储器的写入次数寿命问题(对Flash Cache而言)。
当未使用PAM/FlashCache时,若系统发出读取I/O需求,但要读取的数据区块却已被清出WAFL快取缓冲区,那就只能从慢速的硬盘中读取。
而加入PAM/ FlashCache形成双层快取存储器架构后,当快取数据区块被清出WAFL快取缓冲区时,会先转移到PAM/Flash Cache中保存(Flash Cache有一个优先排序与分类的机制,来决定是否接受这些被清出WAFL快取缓冲区的数据),因此系统可再到PAM/Flash Cache中读取所要读取数据区块。
DataONTAP操作系统会在系统存储器中,存放PAM/Flash Cache中保存的快取数据tag,用以提供查询快取数据是否符合读取指令的要求,若快取命中,只需一次DMA操作就能读出数据,从而减少I/O延迟。
如同上一代的PAM,Flash Cache也有3种运作模式可供选择–预设metadata快取、与低优先数据快取,预设模式可同时针对使用者数据与metadata作快取,metadata快取模式只针对metadata作快取,低优先数据快取模式除了对使用者数据与metadata作快取外,也会对一些通常被排除在快取之外的数据作快取。Flash Cache还可搭配使用FlexShare管理工具,来调节特定LUN的效能。
NetApp的Flash Cache还有一个特点: Flash Cache本身是一种采用PCIe汇流排的介面卡,与存储系统控制器之间是以高速的PCIe x8汇流排连接。相较下,其他厂商的Flash存储器快取技术都是使用安装在硬盘柜中、或通过硬盘介面安装的SSD,与硬盘控制器之间是通过SAS或SATA介面连接,传输频宽要比Flash Cache的PCIe小了许多。Oracle
早在2008年,Oracle的ZFS备份系统便拥有透过混合磁盘架构,利用系统内的SSD加速读写操作的功能。针对读取与写入I/O,ZFS分别采取不同运作机制。
针对读取I/O,ZFS原本就拥有利用DRAM的自适应更替快取(Adaptive Replacement Cache,ARC)功能,可利用服务器DRAM中的部分区域充当快取缓冲区,保存最常与最近存取过的数据区块。不过系统存储器容量有限,以致限制了快取命中率。
为解决这个问题,ZFS提供了L2ARC功能,可利用主存储器外的高速存储装置空间(如SSD),充当第2层的ARC快取缓冲区,透过增大可用的ARC快取缓冲区容量,来提高快取命中率。
针对写入I/O,ZFS利用ZIL(ZFS Intend Log)机制来确保写入操作的可靠性与效能,ZIL是预设配置在ZFS磁盘存储池中的一个区域,对于小数据量的写入I/O,数据会直接写入ZIL,然后系统就会向用户端应用程序回报写入完成、可进行下一个I/O操作。但实际上此时数据仍位于存储器与ZIL中,尚未真正写入存储池,接下来ZFS会以背景操作方式陆续将数据从存储器写到存储池。对于大数据量的写入I/O,ZIL则只保留Transaction Log数据。
当因断电、系统崩溃导致写入I/O失败时,系统将可从ZIL的日志数据中设法回复写入操作。
由于ZFS的数据写入流程是透过ZIL进行,因此数据写入ZIL区域的速度将会直接影响写入效能,一般情况下ZIL是动态配置在ZFS磁盘存储池中,显然的,若有其他应用程序严重耗用存储池I/O效能,连带也会影响到ZIL的运作。
为避免前述问题,ZFS提供了将ZIL存放到指定的独立存储装置上的功能,因此用户可选择将ZIL设定存放在高速存储装置如SSD上,成为log专用存储装置,如此便能加速写入操作(但并非总是有效)。