存储专栏:数据库定义存储之SAP篇

存储在线专栏文章:今天我们来聊聊数据库定义存储第三部分——SAP。说起内存数据库,大家第一个想到的就是SAP HANA。HANA(High-Performance Analytic Appliance)指的是高性能分析设备,一看这个名字就知道主要应用于实时数据分析,而且是一个软硬件一体的东东。SAP 2010年正式发布了HANA软件,但由于SAP没有硬件,因此必须联合硬件厂商一起提供。SAP HANA作为第一款商用的内存数据库产品,发展迅速,成为SAP最快的增长点之一。SAP HANA不仅适用OLAP业务,目前也在向OLTP场景推广。

大家可能会问,SAP HANA既然是内存数据库,和存储有啥关系,因为数据都在内存里进行计算了啊?

SAP内存数据库的数据并不是只在内存里,也会不停写到硬盘里。SAP HANA使用存储主要体现在下面几个方面:

1、保存安装文件;

2、日常备份;

3、数据保存。内存里面更新的数据,缺省5分钟保存到硬盘里面一次;

4、redo log存储。

因此,内存数据库也是需要存储的,但这些要求对存储只是一个性能的要求,数据量一般也不大,因此,服务器本身插一些SSD盘基本就可以满足要求了。因此,我们看到很多SAP HANA的一体机,包括华为的服务器也在兼容性列表里。

但SAP HANA横向扩展(scale out)场景,外置存储就是比较合适的了。我们先来看看SAP HANA的Scale out的原理。

SAP HANA支持多个主机同时工作,组成一个集群,主机可以很多,比如100个,其中95个工作,5个做热备。

当任何一个工作主机出现故障,备份主机需要接替工作主机。

SAP HANA架构逻辑上是一种shared-nothing架构,也就是说每个主机有自己独立的data和logs文件。当备份节点上没有数据,怎么办,只能从外置存储里面取。也就是所有的主机都可以访问一套共享存储。

主机自己的切换SPA HANA可以自己搞定,但是,数据的切换如何做?如何保证故障的主机不要再写存储,释放存储的资源给新的接管主机来独占使用。为了解决这个协调问题,SAP HANA开发了一个"Storage Connector API",硬件厂商支持这个API,就可以配合实现存储资源的共享和隔离。

我们分两种情况去看这个API的作用:

1、共享SAN的情况

这种情况应用比较广泛,性能也比较好。但由于主机只能看到自己的data和logs文件,因此,一个主机故障,备份主机需要接管这个data和logs文件,而故障主机不能再读写,否则文件就损坏了。目前,SAP HANA已经实现了在SUSE LUNIX环境下,采用SLES(SUSE Linux Enterprise Server)自带的多路径软件,对支持SCSI-3(使用Persistent Reservations)的存储可以实现存储资源的切换和隔离。由于现在比较新的存储一般都支持SCSI-3命令集,因此这种模式支持的厂商最多。因为存储这边不用编程,只要测试就可以通过SAP HANA的认证。高端存储里面目前HDS VSP在认证列表里面(配合日立的刀片服务器)。据了解,如果不是采用FC连接,采用iSCSI的话,那么存储侧可能需要一些简单的编程,比如编写脚本去支持SAP HANA的"Storage Connector API"。

2、共享NAS的情况

如果采用共享的文件系统,由于需要互锁,因此,SAP建议采用集群文件系统,如IBM GPFS。GPFS自己有机制来实现文件的共享和隔离。如果是普通的NAS,如NFS文件系统,那么SAP建议开发相应的接口和Storage Connector API配合。当SAP HANA发现某个生产主机故障后,通知硬件的管理软件,硬件的管理软件然后发出一个指令去复位故障主机,让故障主机释放存储资源。

各位看官可能为问,这个不是也需要服务器配合吗?因为实际上是要重启服务器啊。确实是这样的,而且,SAP HANA的scale out架构认证也不单独认证存储,都是和服务器一起认证的。不过这种方式西瓜哥感觉挺怪的,应该不是主流的支持方式。

总的来说,SAP HANA对存储主要的诉求在性能上,同时能够支持集群主机的切换就可以了。

我们发现,由于SAP HANA的特殊性,因此并不需要和存储有太多的配合,如I/O优先级、Cache协调等都不需要,因为工作的时候,数据基本都在内存里了。

希望大家积极反馈你的意见和建议,微信扫描如下二维码,关注微信公众号“高端存储知识”,与作者微信互动。通过掌上DOIT移动客户端,您可以订阅西瓜哥专栏,第一时间获得知名专家和业界领袖的深度剖析与趋势分析。