【作者】康建国,省农信存储工程师。主要负责小型机、存储、数据库等方面的运维及管理工作。银行从业13年,参加过核心系统架构升级、主机下移、存储架构优化等项目,对存储双活、数据库高可用等方面有着深入的见解。
一、现状和痛点
在行内建设双活NAS架构之前,行内在文件共享存储方面有IBM GPFS、使用服务器搭建的NFS文件服务、NetAPP NAS存储、对象存储等多种解决方案,技术种类众多,运维手段不统一,管理复杂。
首先,在这些技术方案中,GPFS的稳定性较强,但是运维比较复杂,在服务器更换、存储扩容等变更过程中操作复杂,管理成本较高。其次,使用服务器搭建的NFS服务器已运行多年,面临着性能不足,扩容困难的缺点。最后,当时行内已经在使用的NAS存储都是老型号NAS设备。部分NAS设备为单点,其余为主备架构,RPO大于5分钟,且在主备切换过程中需要人为干预,不再满足当下要求越来越高的业务连续性要求。
鉴于对象存储在容量和扩展性方面的优势,当时行内开始逐步推广对象存储的使用,分批将部分应用对NAS的使用改造为使用对象存储。在改造过程中,我们发现需要使用NAS存储的场景依然存在,无法完全用对象存储来替代,这些需求场景包括对访问文件共享存储时延要求高的部分联机交易、部分批处理系统、部分数据交换系统。也就是说,NAS存储仍然是数据中心中非常重要的一类共享存储设备。
二、NAS存储架构选型与设计
1.需求
经过对行内共享文件存储现状和痛点的分析,得出结论如下:
(1)文件共享解决方案多种多样,运维技术手段复杂。
(2)NAS存储品牌众多,管理不统一。
(3)原有NAS存储架构的高可用水平已不满足业务连续性要求。
(4)联机应用和批处理应用共用同一套NAS系统,存在彼此性能影响。老NAS型号不具备QoS功能,无法限制各自对资源的使用上限。
针对以上痛点,我们整理出对新型NAS存储架构的需求。概括如下:
(1)NAS架构需要具备最佳高可用性水平,故障切换场景下RPO等于0。
(2)NAS存储发生故障后容灾自动切换,无需人工干预,提升运维效率。
(3)将当前多个文件共享方案进行整合,运维管理统一。
(4)为联机交易和数据处理系统提供文件共享服务的NAS存储独立,彼此不影响。
(5)在满足以上四点功能需求的前提下,控制新解决方案的整体成本。
2.双活NAS存储架构设计
经过对行业充分调研,使用基于NVMe全闪NAS存储搭建双活架构已经成为当下最佳解决方案。针对这个架构,我们在性能、网络、应用隔离、数据迁移等角度做了考量和设计。具体如下:
(1)性能考虑
目前主流国产高性能集中式NAS的性能已相对优秀,以一般小文件,8k或16k文件、70%读、随机读写为模型,在双活架构下,IOPS可达到10万以上,OPS可达到30万以上,可满足数据中心大部分应用场景的性能需求。
(2)网络设计
为提升NAS网络性能,避免访问NAS网络流量和业务流量互相影响,必须为新NAS设计一张专用网络。需要访问新NAS存储的新服务器需要配置对应NAS专网的网卡和IP,存量服务器能改造的尽量添加专用网卡和设置专用IP地址。
对于服务端能提供的网络带宽上限,每台NAS存储配置双控制器,每个控制器配置2张四端口的万兆网卡,即每个控制器8个万兆网口做绑定,配置负载均衡。该配置下NAS设备单控制器带宽可达到80Gbps,双控制器带宽可以达到160Gbps。
(3)应用隔离设计
应用隔离的设计包含联机应用和批量应用隔离、同一类应用内部资源使用隔离两个维度。
首先是联机应用和批量应用隔离,从不计较投入成本的角度,可以设计为使用4台NAS存储,其中2台组建双活架构为联机应用服务,另2台组建双活架构为批量应用服务。但是,控制投入成本也是本项目的一个重要考量,在这样的背景下,我们设计了在一组双活NAS架构中,一台为联机应用提供服务,另一台为批量应用提供服务,同时每一台NAS存储又作为另一台的双活备机,在故障场景下可以自动切换接管对端业务。
其次是同一类应用内部资源的使用隔离。这一点通过在NAS存储上开启QoS功能,为使用资源多的应用设置网络带宽、IOPS等性能指标的上限,控制单个应用对NAS资源的使用上限,以避免互相影响。
(4)数据迁移设计
在搭建新双活NAS的同时需要考虑到建设完成后从老NAS往新NAS的迁移性能。为了尽可能提高网络性能,在老NAS存储上增加万兆网卡,将老NAS存储接入到新NAS专用接入交换机,并为老NAS和用于迁移数据的物理机配置与新NAS同一VLAN IP地址,尽可能缩短数据传输路径。
3.双活NAS存储架构实现
在性能、网络、应用隔离、数据迁移等角度进行了考量和设计后,我们使用了2台NVMe全闪NAS存储搭建了NAS双活架构。整体架构图如下:
如上图所示,整体方案使用新采购的2台华为OceanStor Dorado 5500存储和配套万兆交换机组建一个全新的双活存储架构。两台NAS存储取名NAS1和NAS2,每台均为双控制器架构,每个控制对应4个前端万兆网口。其中NAS1的A控制器用于为批量处理应用系统提供文件存储服务,NAS2的B控制器用于为联机应用系统提供文件存储服务。两台NAS存储的另一个控制器用于作为另一台NAS主控制器的双活备用控制器。每台NAS的两个控制器的IP地址设置为一个漂移组,当一个控制器故障后,IP和负载首先自动切换到同一台NAS的另一个控制器上。每一组跨2台存储的控制器设置同一个双活组,当一台存储的2个控制器均故障或整台存储宕机后,IP地址自动切换到另一台NAS存储的备用控制器上。
该方案可以满足我们之前分析和整理的需求和目标:
(1)双活NAS存储故障切换场景下RPO等于0,满足现在业务连续性对存储高可用的要求。
(2)NAS存储发生故障后容灾自动切换,无需人工干预,提升运维效率。
(3)新的双活NAS存储架构在处理性能和容量上完全可以取代原有的老NAS、GPFS、NFS服务器的处理能力,从而实现将原有多个文件共享方案进行整合,运维管理统一。
(4)为联机交易和数据处理系统访问的NAS存储在正常状态下彼此独立,性能不影响。
三、双活NAS存储架构实施
华为双活NAS的部署实施并不复杂,下面将其中的一些要点进行简单介绍。
1.物理布局
本次双活NAS存储架构共包含2台华为OceanStor Dorado 5500存储、1台仲裁服务器、2台万兆网络交换机。所有设备部署于同一数据中心,为本地双活架构。2台NAS存储和仲裁服务器之间通过管理网络相连。
2.存储间复制网络规划
本次每台NAS存储共配置4张接口卡用于双活复制链路,每张卡配置4端口16Gb FC I/O模块,A、B控各2张。每个控制器的其中1张卡共4个端口用于双活复制链路。需要保证两台存储的每个控制器之间都有物理或逻辑链路,即本端存储控制器A与远端存储控制器A、控制器B分别都有连接,本端存储控制器B与远端存储控制器A、控制器B分别都有连接。
3.存储业务链路规划
本次每台NAS存储共配置8张接口卡用于业务数据访问,每张卡配置4端口10Gb ETH I/O模块,A、B控各4张。业务链路采用端口绑定的方式,每个控制器的其中2张卡共8个端口做链路端口绑定,交叉互连至两个交换机,用于批量处理系统访问。每个控制器的其中1张卡共4个端口做链路端口绑定,交叉互连至两个交换机,用于联机应用系统访问。
4.管理和仲裁网络规划
四、双活NAS存储架构测试
在整体架构实施完成后,我们进行了全面的测试,包括双活NAS存储的功能测试、单台和双活架构下的分别高可用测试和性能测试,总体测试结果令人满意。本章节对其中的性能测试和双活架构下的高可用性测试进行简单概述。
1. 测试环境配置
主机:共2台。一台32C、500G内存PC服务器,安装SUSE 12 SP5操作系统。另一台是一个AIX机器。
测试业务场景:
在双活NAS存储上创建用于测试的双活文件系统,文件系统目录深度为5、宽度为5,子目录文件数1000,文件大小512K,完全随机访问。
在主机上使用测试软件vdbench对挂载好的双活NAS文件系统进行持续读写测试。根据不同测试场景更换主要参数设置,包括I/O size、读写占比等。并发线程threads的数值为32,记录每种场景下的稳定OPS以及对应的平均读写延迟。
2. 性能测试结果
针对双活NAS存储架构,分别测试“8K IO+全随机+30%读”、“8K IO+全随机+70%读”、“8K IO+全随机+100%读”、“512K IO+全随机+30%读”、“8K 100%随机70%写(双机两端访问一个文件系统)”的5种业务场景。
根据测试结果,总结如下:
(1)在双活架构下,写IO需要双写到两台存储,IO在双活复制FC链路来回增加了时延,而读IO只需要从本端存储的磁盘读上来,所以所有场景下的写操作的耗时均比读操作大。
(2)由于双活架构下读操作消耗主机和存储资源小于写操作,因此在同样8K大写情况下,随着读比例从30%到100%的提高,能达到的总OPS对应提高。
(3)双活架构下,“双机两端访问一个文件系统”指的是两台主机通过挂载双活存储中的不同存储的IP地址来访问一个相同的文件系统,可以实现真正的NAS存储使用场景的端到端双活。代价是在这种使用方式下,由于文件系统中的目录和文件属性存在宿主端存储进行权限控制的过程,平均耗时会比主机只访问双活存储中的一个存储地址大。
3. 高可用测试结果
针对单存储、双活存储的各种高可用性测试场景非常多,这里只列举几个主要的高可用测试场景的数据,仅供参考。
四、数据迁移及运维
在双活NAS架构搭建完成后,老旧NAS存储上的数据往新NAS存储的迁移以及新NAS存储的日常运维规范的制定是接下来的两项重要工作。
1. 数据迁移
NAS数据迁移工作中最关键的是选择何种技术手段进行老NAS数据往新NAS存储的迁移。从大的分类上看,主要有主机迁移和存储迁移两种技术手段,各有依赖条件及优缺点。
主机迁移主要是在迁移服务器上使用系统命令或者使用封装系统命令的工具,比如华为的MD for NAS进行迁移。这类技术手段的优势有:兼容各种共享文件源端,任意采用了NFS、CIFS共享的NAS存储,也支持本地文件系统、GPFS等;自动化工具,使用方便。自动计算和启动并发拷贝进程,速度远高于手动拷贝。劣势是迁移时间受文件系统中目录和文件的分布均衡度影响。最后一次增量迁移,文件系统停机时间不可控。
存储迁移是通过将新老NAS存储级联,通过存储数据复制完成数据迁移。优势是存储底层通过数据块复制,同步速度更快,最后一次增量复制过程中文件系统停机较短。劣势是对源端和目标端NAS存储的品牌和版本有兼容性要求,源端NAS存储可能需要升版本。
在本项目中,由于源端数据存储介质多种多样,包括GPFS、NFS服务器、不同品牌老NAS存储,所以经过分析和测试,选择采用了MD for NAS工具完成了90多个文件系统从老旧存储到新双活NAS的迁移。
首先将用于数据迁移的专用服务器、老NAS存储、新NAS存储连接到专用万兆网络,配置相同VLAN地址,缩短数据传输路径。然后将90个文件系统进行了分类分批,与应用负责人协调安排停机切换窗口。最后,每批次迁移时,提前两到三天启动存量数据在线迁移,在切换当天选择一到两次增量数据同步,最后一次停止应用对NAS文件系统的访问后进行增量同步和挂载切换。整体迁移历经约半年,虽然需要安排多批次多轮次操作,但是单次迁移动作技术上并不复杂。
2. 运维规范
由于NAS提供服务直接和应用系统对接,与SAN存储和主机、数据库或虚拟化平台不一样,NAS的日常维护要比SAN存储更繁琐。要想在NAS的日常维护中提高效率减少由于应用端异常使用带来的问题,在上线之初指定相关使用规范是必要的。部分使用规范举例如下:
(1)NAS文件系统中存储的单个文件大小建议小于1MB。
(2)针对单个NAS文件系统,目录宽度建议不超过8、深度不超过5。
(3)针对单个NAS文件系统,文件数量建议不超过1000万。
(4)建议文件在每层目录及以下子目录均衡布局,不要出现某级目录下1-2个子目录集中存放文件。
(5)建议对NAS文件系统中的目录、子目录和文件在应用上线之初就制定命名规范,应用程序对NAS中目录和文件的读和写做到一步定位。禁止使用ls等遍历命令,会造成NAS文件系统访问卡顿。
(6)客户端访问权限控制。是否允许root权限。多客户端访问相同文件系统的用户属性要求一致。
(7)文件系统挂载参数设计,timeo超时重连时间,nfs版本等。
(8)应用在上线的时候必须对使用的NAS文件系统配置监控,监控使用率和挂载状态。
五、总结
本文结合我行实践经验,介绍了基于华为NAS存储搭建双活NAS架构的实施过程,详细阐述了新的双活NAS架构如何解决原有痛点、新架构的设计和各项测试、投产后如何进行老旧存储上的数据迁移以及日常运维规范的制定等方面。这套双活NAS存储上线投产使用至今已有一年多,总体使用效果良好,管理方便,很好地实现了当初的建设目标。
协作用户:
万里鹏 某银行单位
徐晓波 某银行单位
张兆营 某金融单位
何志辉 某银行单位
顾问审核专家:
刘启军 某银行单位
如有任何问题,可点击文末阅读原文,到社区原文下评论交流 觉得本文有用,请转发或点击“在看”,让更多同行看到
资料/文章推荐:
欢迎关注社区 “存储”技术主题 ,将会不断更新优质资料、文章。地址:
https://www.talkwithtrend.com/Channel/179/
长按二维码关注公众号
*本公众号所发布内容仅代表作者观点,不代表社区立场