为了解决三副本分布式存储面临的性能问题、稳定性及可靠性等缺陷,道熵的铁力士分布式存储采用双重RAID保护机制,在前文中我们探讨了分布式存储的基本原理,分析了三副本分布式存储的潜在隐患:
- 性能问题:三副本分布式存储受到IO分布不均匀和木桶效应的影响,导致大延迟和响应迟钝的现象;
- 稳定性问题:频繁的数据重建会导致用户业务受到影响、甚至业务中断;
- 数据丢失风险:尤其是,当硬件老化,或出现大规模掉电或节点意外宕机时,可能会导致多个机械硬盘同时出现损坏,危及三副本分布式存储的数据安全。
为了解决三副本分布式存储面临的性能问题、稳定性及可靠性等缺陷,道熵的铁力士分布式存储采用双重RAID保护机制,除了继承网络RAID(节点间副本、跨节点纠删码)和一致性哈希随机分布数据的特点,铁力士将磁盘阵列特有的节点内RAID技术和存储虚拟化(池化)管理技术, 即Storage Virtualization Manager (SVM),与分布式技术相结合,如图2所示。
图 2 OneStack分布式存储双重Raid机制
网络Raid技术
在铁力士分布式存储中,每个数据块按照一致性哈希算法,随机选择两个不同存储节点来保存数据的两个副本,保证当任何一个节点宕机时,仍有一个数据副本保证读写操作,确保业务高可用和数据安全。
节点内Raid技术
在铁力士分布式存储的每个节点内,通过SVM存储虚拟化技术实现节点内的RAID数据保护,RAID级别选择可以是镜像,也可以是存储效率更高的RAID5或6。节点内RAID保护可抵御单个或多个硬盘损坏,故障修复限制在节点内部,无需触发网络数据重建,有效地避免了网络重建风暴。
节点内RAID结合网络Raid(跨节点的副本/EC码)技术,铁力士实现了双重RAID数据保护。在三副本架构中,一旦同时出现三块磁盘故障或受损,数据就可能丢失;而在双重RAID架构中,即使每个节点同时出现一块磁盘故障,数据仍然无忧,业务仍然持续。考虑到分布式存储可能包含数十个甚至上百个存储节点,双重RAID的数据可靠性明显超过三副本架构。
存储虚拟化技术
铁力士在每个存储节点运行在存储虚拟化管理软件(SVM)上,把该节点的存储资源整合为一个统一管理的存储池,为分布式系统提供vOSD资源。SVM采用宽条带机制(见图3),将每个vOSD的工作负载均匀分布在节点的每个磁盘上,大幅提高了单个vOSD的IOPS能力,可有效抵御三副本分布式存储中的IO分布不均匀现象。
图 3 节点内Raid条带机制
SVM存储池由节点内多个RAID小组构成,通过虚拟卷为上层分布式系统提供vOSD存储服务。每个vOSD对应于三副本中由物理HDD承载的OSD。由分布式一致性哈希算法分配来的数据块,将写入SVM存储池中、由虚拟卷支撑的vOSD,而非直接写入物理硬盘。SVM 利用宽条带技术,将vOSD的工作负载均匀分布在各个物理磁盘上:每个大小为4MB的vOSD 对象数据块,被分割为32KB的数据块,依次被安排在RAID组的逻辑地址空间中;SVM 对各个RAID小组的逻辑地址空间采取顺序写优化策略:首次写按各个小组的逻辑地址分配地址空间,按顺序写入数据;后续重写,则优先填满空闲地址空间,尽可能实现硬盘顺序寻址,最大限度降低机械硬盘较慢的寻址操作次数,利用机械硬盘顺序写较快的特点来提升IO性能。
二级DRAM+Flash 缓存加速
磁盘阵列中常见的性能加速手段是共享缓存加速,中高端磁盘阵列与低端磁盘阵列的在性能方面的一个重大区别,除了控制器个数,就是缓存加速的能力。典型的中高端磁盘阵列能支持的共享缓存加速在512GB到1TB上下。铁力士借鉴了磁盘阵列的设计,通过SVM虚拟化实现DRAM与Flash相结合的二级缓存加速:通过自适应算法,自动识别动态或静态热数据(高频率读写或最近读写数据),将最热的数据保存在延迟最小的DRAM中,而将次热的数据保存在更大容量、基于Flash的固态硬盘上;并由于分布式技术的加持,形成一个容量巨大的分布式二级缓存系统。与中高端磁盘阵列相比较,铁力士分布式存储系统支持数10TB、甚至100TB以上的分布式缓存,相当于其10倍、甚至100倍的缓存容量。
数据完整性校验与数据自修复
SVM存储虚拟化管理借鉴了WAFL(NetApp) 、Btrfs(SuSE)、ZFS(Oracle)、Storage Spaces(微软)等文件系统的先进经验,对底层存储的每个数据块增加一个256比特的校验码,并单独保存在一对固态硬盘镜像中,用于快速实现在线数据完整性校验。一旦校验码检查到数据受损,通过节点内RAID功能实现数据自修复。该功能可快速定位硬件故障,并实现硬件故障自动隔离。
关于双重RAID更多信息,请关注分布式存储的技术趋势(三):双重Raid与三副本对比。