总24期
Technology    技术前沿
Technology    技术前沿
为了数据不丢失,新华三ONEStor层层设防
文/葛万成
分享

为响应快速变化的基础架构需求,实现IT系统的高扩展性和灵活性,云计算、虚拟化及池化技术得到了广泛的应用和普及,企业数据中心架构随之日益复杂,传统的SAN+NAS存储方案已无法应对复杂的应用需求。软件定义存储以其特有的高扩展性、弹性伸缩能力、自动化运维能力满足了企业多样化的存储需求。

作为紫光股份旗下新华三集团面向企业级用户推出的软件定义存储产品,ONEStor分布式存储系统融合了新华三集团诸多领先且有自主知识产权的核心技术,连续多年在中国区市场取得领先成绩,已成为中国软件定义存储市场的标杆级产品。

市场成绩的背后是产品能力的不断完善与提升。存储作为企业IT系统基石,其稳定性和可靠性是用户关注的核心问题。在分布式存储系统中硬件故障与运维人员的操作失误等问题交错在一起,给系统可靠性带来极大的挑战。比如,5%的年损坏率对于SATA HDD硬盘来说是小概率事件,但当系统规模变大之后,小概率事件也就成了常态。换句话说,硬件其实是不可靠的,那么怎样在不可靠的硬件上创建一个相对可靠的分布式存储系统,便是ONEStor分布式存储系统设计的重要目标。ONEStor通过四级可靠来实现这一点,为用户打造坚如磐石的数据底座。

 

四级可靠之一:方案级

有效的高可靠、高可用性方案设计,可以极大弥补因存储硬件不足而产生的问题隐患。为此,ONEStor提供了一体化备份与双活方案。

1.ONEBackup一体化备份方案

ONEStor与H3C CAS虚拟化平台紧密结合,推出了ONEBackup免客户端代理备份软件,为CAS提供了一套高性能、高可靠的备份解决方案,备份速率是业内平均水平的2倍以上。生产端存储与ONEBackup之间通过单独的复制网络进行数据传输,不占用业务网络带宽,具备LAN Free能力,而生产端也无需安装客户端代理软件,具备Server Free能力。当生产端灾难发生后,远端ONEBackup根据恢复策略将数据恢复到任意时间点的数据,再通知虚拟化平台进行恢复,间接实现对CAS业务数据连续性的保护。

图片1

图1 ServerFree + LAN Free的备份产品

2.双活方案

ONEStor还提供基于集群延伸的双活数据容灾方案,将两个站点的存储节点组建成一个逻辑集群,数据的多个冗余副本同步写入两个站点,保证数据零丢失。两站点均为活动站点,可独立承载客户业务,并支持站点之间负载均衡。多样化的备份、容灾方案,满足了用户核心和非核心业务系统的不同 RTO & RPO 要求。

图片2

图2 集群延伸双活方案架构

 

四级可靠之二:系统级

当集群规模较大时,为了能够对不同类型的数据进行隔离管理,同时也为了提高系统可靠性,ONEStor引入分区特性。通过改变数据的分布策略,如节点池、故障域、保护域等方式,确保主机或者机柜级的损坏情况下保证数据不丢失、业务不中断。

图片3

图3 节点池、故障域、保护域示意图

举例来说,有36台服务器,分6个机架。客户要求建立两个存储池,供给两个不同应用。该场景下,6个机架可划分为2个节点池,节点池之间物理隔离,一个节点池为一个应用提供存储资源池;故障域设置为机架,同一数据的多个副本跨不同的机架存储,比如A数据的三个副本分别放在三个机架上;同时,每个节点池划分成两个保护域,A数据的三个副本只能分布在一个保护域里面。

那么,以机架为故障域带来的收益是,机架1整体掉电,只会影响数据的一个副本;如配置为主机故障域,可能会出现3个副本同时掉电。

划分保护域的收益是,机架1的主机1和机架2的主机4同时故障,只会影响数据的一个副本。如果不划分保护域,则可能会影响数据的两个副本(在只划分机架故障域的情况下,同一份数据的2个副本有可能同时落在机架1的主机1、机架2的主机4)。

 

四级可靠之三:设备级

除了基本的节点分布式数据冗余、资源分区、数据重构等可靠性保护机制之外,ONEStor还针对存储集群部分组件故障,设计了不同的可靠性处理方式来保障集群的高可靠性。

ONEStor中的所有软件组件,例如Monitor监控服务、MDS元数据服务、TGT/RBD等都有冗余机制。在故障情况下,ONEStor能快速地检测故障、切换业务,上层应用感知不到故障发生,对外表现为一套可靠的存储系统。

从硬件上来讲,ONEStor内置集群亚健康的检测及处理机制,可提前检测并修复硬件故障。ONEStor研发团队总结了4类常见的硬件故障场景,并针对故障或可能的故障进行有效检测,通过有效隔离、修复、恢复来保障集群可靠性。

1.硬盘故障处理四步曲

图片4

图4 磁盘故障处理4步曲

在新版本中, ONEStor进一步完善了硬盘故障的处理机制。对于硬盘的故障处理机制,可以概括为四个步骤。

(1)故障检测,发现各类故障。比如坏盘的判断,系统会通过检测IO指令错误码等信息进行坏盘决策;再比如慢盘故障,会依靠OSD的检测机制统计IO的时延。如果时延高于正常阈值,则会认为是慢盘。

(2)故障处理,包括坏道标记、坏道修复以及隔离等动作。对于慢盘,系统会先尝试恢复(如上下电操作)否则将硬盘踢出集群、提醒管理员更换解决问题;对于坏道,系统会进行降级读和坏道修复操作。隔离机制可分为强隔离和弱隔离两种。针对已识别出的不可靠的磁盘做强隔离,诸如OSD高频震荡等,需运维人员介入,判断磁盘是否需要修复或踢出集群;对一般故障场景,短时间内隔离OSD使其不再承担IO,故障解除后,自动接入集群。

(3) 隔离后的故障主动检测,确认是否永久故障。

(4)检测后,若盘状态正常,加入到集群,恢复故障。

2.网络亚健康隔离机制

网络的稳定性对分布式存储系统的性能影响非常大,在ONEStor中各个组件的通信都依赖于网络。比如,OSD和Monitor、TGT网关之间的心跳、数据交换是通过存储前端网,而OSD和OSD之间的数据复制等动作是基于存储后端网。如果说网络时延过高的话,会影响IO响应速度,会导致Monitor反复选举等问题,严重影响存储性能。针对网络震荡、不可达、丢包、错包、时延高等问题,ONEStor引入了网络亚健康隔离机制。

以时延过高为例,OSD会统计收发报文的平均时延,如果平均时延高于阈值,OSD会上报BM(bond manager)模块启动检测。BM模块通过UDP报文进一步检测网络故障;如网络发生故障,而且链路是冗余的情况下,ONEStor会将亚健康的网络端口隔离。之后,对于被隔离掉的端口,BM模块会每隔30分钟进行一次网络时延检测。如果网络恢复,ONEStor会重新将端口加到集群。

3.CPU、内存占用率过高处理机制

由于硬件或者单节点故障等原因,可能会导致存储节点上CPU、内存占用率异常高于其他节点的场景,导致整体存储业务变慢。如果不及时处理,会有产生新故障的风险。

ONEStor采用主动机制,采集器定期采集CPU或内存占用率,并进行集群各个节点综合判断,检测出CPU或内存高的节点,通过OSD进行确认最终隔离。另外还会对于内存进行定期DropCache,防止缓存累积导致内存耗尽。

图片5

图5 CPU占用率过高处理机制

4.多级NTP机制

某些场景下会产生集群时间跳变或者节点时间不一致,从而影响到业务的正常运行,根本原因是由于分布式系统对时间的敏感度比较高,容易因时间异常而无法提供服务,比如在ONEStor中,如果集群节点时间不一致,会导致进程中的定时事件得不到响应,业务处理异常。为了预防时钟跳变的现象,ONEStor集群通过多级NTP(网络时间协议)机制来保持时间的稳定。

ONEStor存储集群外可配置多个一级外部NTP,当外部NTP故障时将自动切换至内部NTP。在内部集群中,可根据节点池(子集群)划分多级NTP,当主集群的Monitor故障时,从Monitor将自动接管。当集群内部NTP全部故障后,存储节点的内部时钟可充当NTP角色。

 

图片6

图6 多级NTP机制

 

四级可靠性之四:I/O级

在存储系统传输中,数据经过了多个部件、多种传输通道和复杂的软件处理过程,其中任意一个环节发生错误都可能会导致数据发生静默错误。静默错误在存储系统层面是显示IO成功的,而在后续应用在访问数据过程中才会发现数据已经出错。

图片7

图7 全I/O流程数据校验

为了尽可能防止静默损坏的发生,ONEStor存储系统具有全I/O流程数据校验的功能。在硬件层面,ONEStor会做网卡TCP校验、SAS芯片的数据校验和内存ECC校验。

在ONEStor存储系统层有CRC(循环冗余校验)机制。数据写入ONEStor存储集群,在返回写I/O完成之前,ONEStor会生成数据的CRC,并将校验信息作为元数据存储。在读I/O的时候会进行数据的CRC校验,确保数据是正确无误的。存储的CRC校验可以防止数据的静默损坏。通过重重的校验机制,ONEStor最大程度上避免了数据静默错误 的发生。

观点

软件定义存储最核心的一点,是将标准服务器虚拟化成统一的存储资源池。相比专有存储硬件而言,标准服务器的可靠性较差。如何在不可靠的硬件上提供相对可靠的存储服务,完全依托于软件能力。

ONEStor自2016年开始自研,在可靠性上优化的代码量累计超300万行。ONEStor将分布式存储与虚拟化平台、数据隔离管理、软件和硬件检测及处理机制以及全I/O流程数据校验技术紧密结合,从而形成方案、系统、设备、I/O四级可靠性设计,最大限度提升分布式存储可靠性。正是得益于这四级可靠性加持,到目前为止,ONEStor在中国移动、电信、太平洋保险等大规模集群部署局点,一直处于稳定可靠运行中。

分享到
关闭