纵观存储的发展,从最原始的DAS架构发展到NAS和SAN并存的架构,从NAS&SAN并存的架构发展到基于互联网基因和云计算基因的云平台存储架构,其架构变得越来越复杂。这必然带来性能上的损耗,这与我们大部分数据业务场景追求性能的目标是相悖的,那么如何解决这个矛盾呢?
企业存储主要包括集中式架构的SAN存储和NAS存储。企业经历集中式存储的时间相对而言比较长,那么在面临性能优化的问题也有一套相对比较完善的思路,总结来看主要从以下几个方面实现:
1. 规划时的优化配置
大部分的性能优化问题都归根于规划设计不够精细准确,所以解决性能的非常关键的因素就在于规划,存储卷的数量、分布、分区(Zone)映射等相关配置。如果DBA对数据库数据文件使用的存储卷规划不够均衡准确,必然造成某些卷的高热点IO访问,如果这个卷所依附的分区映射又不是非常合理均衡,那么这个问题就会无限放大。因此传统存储实践前的规划,需要架构师在上层应用的存储使用容量、数目、负载等各方面进行梳理和分析,本着均衡分布的原则将卷的使用映射到存储资源上,这样才能最大限度减少后续性能优化问题。
2. 存储引擎硬件配置
主要通过观察存储运行过程当中关键指标(CPU、Cache)的峰值以及平均值的情况,来衡量当前控制器内的硬件配置是否已经成为系统性能的瓶颈,通常传统集中式存储支持单独升级CPU、Cache硬件的场景较少,一般都是通过增加Cache卡或者控制器扩展的方式来解决。当然,在具体分析的时候需要根据其他指标的评估来判断是否因为其他特殊状况引起的资源占用问题,这种情况并非需要增加硬件资源。
3. 存储引擎端口资源
主要通过观察存储运行过程当中每一个前端端口和后端端口的使用情况(使用率、均衡性、吞吐量)等相关指标在一定周期内的平均数值,来评估板卡端口容量以及配置是否有性能问题。如果端口数量容量没有问题,只是出现了负载不均衡的状况,那么就需要手动调整Zone映射的配置来调整其平衡性。
4. 存储软件参数策略
所谓与性能问题息息相关的存储软件策略,主要是指存储产品开放出来的一系列软件参数以及分层策略。通常是通过观察存储运行过程当中的系列关键指标(IOPS、Latency、Throughout等),来判断软件层面的队列参数、存储单元参数、读写控制参数、缓存控制参数等来实现一部分优化。如果是针对个别存储卷的问题,可能需要将数据反馈到系统管理员和DBA层面进行操作系统及数据层面的优化。所谓分层策略是指存储资源池当中有SSD、SAS、SATA等多种磁盘的资源池的自动平衡策略,一般通过观察预留资源池容量大小、分层时间窗口策略、分层容量阈值策略、SSD磁盘数量增加等手段实现分层的优化。