古老的岷江水顺着漫漫的历史长河流淌到今天,站在都江堰渠首安澜索桥上向下看去,它依然是那么清澈。岷江上游水流湍急,进入成都平原以后,地势突然低平,水势减缓,所挟带的大量沙石沉积下来,淤塞河道,时常泛滥成灾。两千多年前,秦蜀郡郡守李冰父子创造性的提出“深淘滩、低作堰”的设计理念,并兴建了都江堰水利工程,保证了大约三百万亩良田的灌溉,使成都平原成为旱涝保收的“天府之国”。至今都江堰水利工程仍然灌溉着成都平原,是世界上少有的保存两千多年至今仍然在服务的水利工程。
华为存储操作系统
距离都江堰不到四十公里的华为存储研发中心秉承都江堰“深淘滩、低作堰”的设计理念,创新地开发出来系列的存储产品,这些产品的核心——存储操作系统则是该设计理念的集中体现。
操作系统(Operating System)是一种特殊的系统软件,它负责管理整个计算机系统的软硬件资源,一个良好的操作系统对计算机至关重要。同理,存储操作系统就是存储系统中负责管理所有存储资源的系统软件,它对于存储设备的可靠性、功能、性能起决定性作用。在存储业界,设计一个存储产品大概有两种思路,一种思路偏硬件,即采用特殊的硬件形态和存储专用芯片作为基础构件存储系统。这类系统一般设计简单可靠,单位成本的性能比较高。但是由于硬件尤其是专用的芯片改动成本较高、研发周期长,因此这种设计越来越不适应存储技术的快速发展。另一种的思路偏软件,即基于通用的硬件,比如说x86体系结构,将存储的基本功能设计为基础的系统软件,然后将这套软件部署在不同系列的硬件平台之上,快速形成丰富的产品组合。这个基础的软件就是存储操作系统,如NetApp的统一存储操作系统Data ONTAP,EMC Symmetrix的存储操作系统Enginuity。
一款存储的操作系统的生命周期很长,一款优秀的存储操作系统可能在设计之初非常领先,但是随着新技术、新功能不断涌现,由于软件架构限制,即使曾经优秀的操作系统也慢慢显现疲态。比如说Data ONTAP在设计之初即采用统一存储的设计理念,通过WAFL融合了文件系统和块设备层,同时在底层RAID技术、快照技术等关键点上具有创新性的设计,使Data ONTAP成为业界最优秀的存储操作系统。NetApp凭借这块先进的操作系统快速推出产品,成为存储市场的三强之一。时至今日,虽然Data ONTAP依然可以说一款优秀的存储操作系统,但是其弱点和限制也逐渐显现。
华为自研的存储操作系统取名XVE,它的全称是“Extreme Virtual Engine”。 研发XVE的初衷源于华为要开发一款高端存储,进而以这款存储产品的软件做为平台移植到全系列的存储产品上去。在预研的初期,正是存储虚拟化得到广泛认可的时候,业界也不断推出所谓的“虚拟化存储”。设计团队经过仔细的研究发现,发现某些厂商所谓的虚拟化只是在原来的传统技术上包装一层虚拟化的外衣,技术上没有本质变化。但是华为没有选择这条“伪虚拟化”的捷径,毅然采用了真正的虚拟化设计,实现从磁盘虚拟化到卷虚拟化从而使得彻底解决了在大容量存储下故障恢复时间的问题和性能均衡问题。图1所示是XVE的简化架构图。
图1 XVE的简化架构图
高可靠性
XVE作为一款存储操作系统,高可靠性是设计的重中之重。为实现所有代码的可控性,XVE重写了通用操作系统的硬盘管理模块,使之成为一个存储专用的硬盘管理模块。它直接和芯片驱动、硬盘交互,按照上层业务特点有针对性地处理硬盘的故障。并且,硬盘管理与华为自研的SSD硬盘相结合,最大化发挥SSD的性能优势,提高SSD的使用寿命和可靠性。
基于可靠的硬盘管理模块,XVE针对RAID技术采用大胆创新,采用了业界先进的RAID2.0+技术。从所周知,RAID重构过程中数据没有可靠性保障,如果在重构完成前再出现坏盘就将造成数据丢失,不可恢复;所以对于一个存储系统而言其可靠性的最重要标志就是其RAID重构时间越小越好。传统硬盘重构的瓶颈主要在目标盘(热备盘),因为所有成员盘将所有数据读出后全部写入到目标盘,目标盘写带宽就成了整个重构速度的关键,以一块2TB 7.2K rpm盘为例,重构时平均写入速度为30M/s左右,完成重构时间长达18个小时。华为存储RAID 2.0技术采用虚拟化RAID技术,消除RAID的重构性能瓶颈——当一个物理硬盘故障时,同时更多的目标硬盘参加重构,大大缩短重构时间,从而提高了存储系统的可靠性。同时XVE为了保证数据的一致性,XVE支持端到端的数据校验,能够监测到任何偶然的数据错误,并自动修复,从而保证了关键业务的数据一致性。
作为一款支持Scale-out多控的存储OS,XVE设计了专用的集群管理系统。通过与自研硬件、驱动的紧密结合,最大化的提高了节点间故障切换时间。比如,典型情况下,如果一个控制器发生故障,该控制器的IO能在1秒之内切换到另外一个控制器。
高性能
为了追求极致的性能,XVE对通用操作系统的线程调度、内存管理等进行了优化,使其更适合存储处理大规模IO并发处理的特点。XVE采用统一的IO线程调度机制,最大化的减少线程切换带来的时延开销。内存管理也绕开通用OS复杂的内存管理机制,直接在底层实现专用高效的内存管理机制。为了最大的利用节点间通信的性能,在底层实现了低时延高带宽的通信模块。为了保障系统端到端的QoS,线程调度、内存管理和节点通信都拥有相应的优先级控制机制。以上机制都是XVE为存储系统量身定做的,基于这些基础框架,XVE拥有了一个高性能的基础。
高效率
XVE作为一款面向海量数据、虚拟化环境的存储OS,对于存储资源实现高效管理和自动资源调配。它支持资源按需分配,数据被均匀分布到阵列内所有的硬盘上,可以防止局部硬盘过热,当存储池中的硬盘数量增加或减少,以及随业务变化硬盘读写压力发生变化后,系统通过IO记录智能分析计算,并自动调节热点Extent在同一类硬盘上的实际存储位置以确保每一块硬盘的压力均衡,从而实现均衡硬盘磨损,有效降低故障率、延长硬盘寿命。同时,XVE还可以根据数据的访问热度在不同存储介质之间实现动态分级存储,分级存储实现自动监控,分析出冷数据和热数据,将数据迁移至合适的存储介质。总而言之,XVE是一款针对存储系统的特点,端到端优化、端到端可控的存储操作系统。
展望
“深淘滩,低作堰”是都江堰的治水名言,深淘滩是指河道要深淘,深淘的标准是古人在河底深处预埋的“卧铁”。岁修淘滩要淘到卧铁为止,才算恰到好处,才能保证灌区用水。正如XVE的采用底层虚拟化技术,对创统RAID技术进行了深刻地创新,为系统的提供坚实可靠的基础。低作堰就是说飞沙堰有一定高度,高了进水多,低了进水少,都不合适,自动调节流入成都平原的水量。正如XVE的智能资源管理,使得数据能自由的流动,随需地扩展。“深淘滩,低作堰”看似平平常常、简简单单的,但却是中国古代人民智慧的结晶,XVE将这个理念运用到设计中,并且安装了XVE这颗存储之心的中端、高端存储产品已经规模应用,在市场上不断取得客户的认可。相信有一天XVE会和华为存储一道取得更大成功,成为国人自主创新的骄傲。