走进 NetApp 存储操作系统之一
几年前,如果一家企业购买存储,除了预算之外,还要想好这次的投资能用多久。如果业务量突然急剧增加,可能用不了多久就要扩展存储,或者需要升级硬件。因为存储大多是不能够像PC一样换个CPU,扩展内存的。当你买来新的硬件,你要做的就是把现有的系统中的数据迁移到新系统中,以获取更好的性能。这就叫做向上扩展 — Scale-up。对于旧的设备或者淘汰,或者用作备份。而且一般这种迁移都是需要比较长的时间,还需要业务终止一段时间。这对于对业务的持续性有高要求的企业是无法承担的。比如在线购物的
这也是截至到目前的NetApp的7G或者ONTAP 8 7-mode中所采用的方式。
显然这一点在现有的IT环境中越来越难以满足客户的需求。因而,两项最重要的功能在新的集群模式的操作系统中得以实现。一个是横向扩展能力(Scale-out),一个是业务不中断能力(NDO)。
横向扩展(Scale-out):
也就是在存储系统达到性能或容量的瓶颈的时候,只需要购买新的系统并和现有系统组成集群即可。
业务不中断(NDO):
无论是横向扩展,还是日常维护,都可以持续提供业务的能力。
当然NetApp的存储操作系统能做的远远不止这两项。例如快照,数据的管理和备份,存储虚拟化,多租户,全局命名空间,NAS和SAN的统一存储,支持全闪存,混合存储,全disk存储等等等等。
接下来我就逐个对这些功能做一个小分析。
首先聊一下横向扩展。说到这个功能,就需要先了解一下NetApp的集群系统的硬件架构。
一个控制器称作一个节点。两个节点构成一个HA对,一个到多个HA对就构成了整个集群。也就是说,集群的扩展是成对的增加的。有很多人搞不清楚节点和一个存储盒子的区别,其实现代的存储系统大多为了精简机柜的空间,把两个控制器集成到了一个盒子里面,目前NetApp的存储基本都采用此类架构。FAS2500,FAS8000系列都是如此。在一个盒子里面的这两个控制器就够成了一个HA对,并不是单个的节点。把这些HA对连接起来的就是一个万兆的网络,我们称之为集群互联(Cluster Interconnect)。每个节点需要提供至少两个万兆网口通过特定的万兆交换机连接到一起。用户数据的传递,集群配置的同步都是通过这个网络。当然,如果用户只有两个节点,也可以通过直连的方式来实现。称之为Switchless。如果是单个节点的集群也不需要配置万兆的网络。另外,存储数据的盘柜是连接到HA对的,HA对之间可以实现Failover。
讲到这里就不难理解横向扩展了。当需要增加性能和容量的时候,可以通过添加一个或者多个新的HA对到现有的集群中,而且这个动作是不需要中断业务的。当然,在连接好硬件,配置好集群后,如果想马上利用到新的硬件带来的性能提升,可以通过卷迁移(vol move)功能将原有HA对中的一部分卷在线迁移到新加入的节点中。并且通过在新的节点中创建LIF(逻辑接口)来让更多的数据通过本地节点提供。无论是SAN还是NAS都可以使用这个方法来达到性能和容量的线性提升。
不足和改进建议:
-
存储的硬件连接是HA对共享的,在HA对中的两个节点都失败的情况下,该HA对连接的盘柜数据如果没有实现迁移到其他的节点,那么该部分的数据讲无法提供。期待在之后的版本中,我们能对这个架构进行改进。将控制器和存储盘柜分离开,存储不在是HA对共享。这样我们可以实现真正的Shared Nothing架构。例如Solidfire的存储架构。这样做的好处很多,硬件的连线将会非常简单,只需要连接集群互联的网线,存储集成到控制器盒子里面。当然,也可以通过存储的交换机,把所有的存储通过交换机和所有的控制器连接,这一种应该是改动最小的,但是对将来的改进不是很好。比较推崇前一种架构。
-
新加入的节点或者HA对,目前是要手动的创建LIF,对数据进行在线移动等等。如果可以将这部分自动化,那将大大简化流程和时间,并大大提升用户的体验。例如当集群添加了新的节点后,ONTAP对现有的配置分析后,进行自动的load balance,包括LIF,卷数据的迁移,最大化性能。不需要用户的干预。这应该也是下一代存储系统必备的功能之一。
如果做好以上两点,相信NetApp在技术层面将会为将来的发展打好基础。
业务不中断功能,也是无法脱离集群的架构的。通过(SFO)Storage Failover,可以在线的将聚合分配给HA对中的另一个节点。也可以通过卷迁移将卷迁移到集群中的任何一个节点。通过这些功能,可以在业务不中断的情况下对硬件进行维护。此外,集群操作系统本身的升级也是不需要中断业务的。集群系统会根据节点的数量在滚动升级(rolling upgrade)和批量升级(batch update)之间自动选择,并升级操作系统。并且已经可以通过System Manager的图形化界面来完成了。现在升级一个集群的操作系统,并不比升级一个无线路由的固件难。在掉电,硬件故障等情况下,因为从链路到硬件都有冗余。例如,如果控制器和盘柜之间的某一个模块或者链路出现故障,控制器可以通过冗余的链路继续访问盘柜,这种情况下,也不会出发Failover。用户要做的就是尽快修复另一条链路。如果发生故障的是一个控制器,那么可以通过failover通过HA对中的健康的节点接管故障节点的业务和存储。
不足和改进建议:
- 这一点和上面讲的类似,目前的盘柜因为只是和HA对连接,其他的HA对和盘柜之间没有直接的物理连接,聚合的重定位(ARL)功能,就仅仅限于HA对之间来操作。如果做到上面的改进方法,聚合就不再局限于HA对,而是可以扩展到整个集群上。
在下一部分,我会介绍存储虚拟机,全局命名空间等ONTAP中的重要概念和实现。