Symmetrix作为一个多控制器,内部安装了上千个物理磁盘的巨无霸级存储阵列,可以同时为几百台物理或者虚拟主机提供数据存取服务。而如何保证所有被服务的主机都处于最优的性能状态,除了在链接主机的时候遵循“平衡”分配的原则。实际投入生产以后,Symmetrix自身也存在多种机制,保证阵列端的数据处理资源的“平衡”,Symmetrix Optimizer就是其中之一,本文对Symmetrix Optimizer的作用和工作原理以及配置方法进行介绍,帮助读者了解高端存储内部的优化机制。
Symmetrix Optimizer的工作原理:
Symmetrix Optimizer(后文简称Optimizer)的主要作用是监控Symmetrix中的逻辑卷(Device)的访问状态,然后将逻辑卷在不同的物理磁盘之间进行迁移,从而达到优化性能,实现阵列中分布的物理磁盘之间的性能“平衡”。它解决的问题是显而易见,即使存储实施前期有比较好的规划,但是由于业务变化,可能导致某些逻辑卷的数据访问量增大,而碰巧这些逻辑卷被创建在相同的物理磁盘上面。这里有必要再提一下Symmetrix中Hyper Volumes的概念,下图显示了Symmetrix中创建逻辑卷(Device),也就是通常所说的LUN,Symmetrix的做法是以将物理磁盘切片成Hyper Volume的方式,然后将Hyper Volume根据不同的RAID保护级别,图中的八个Hyper Volume可以和其他物理磁盘上切割出来的Hyper Volume组成不同RAID级别的逻辑卷(LUN)供主机访问。Optimizer的作用就是将Hyper Volume在物理磁盘之间进行移动,平衡负载,优化性能。
Optimizer的工作组件包含两个部分:
•运行与Symmetrix阵列中管理服务器Service Processor中的引擎。
•用来控制Optimizer参数的管理接口,提供给Symmetrix的命令行SYMCLI和GUI的管理工具访问。
Optimizer的工作方式分为以下几个步骤:
1. 收集Symmetrix后端的I/O统计信息,并建立数据库。在这个阶段,Optimizer会记录以下的性能信息:
1.逻辑卷的读写数量
2.逻辑卷的预读数量
3.每秒逻辑卷的数据读写KB数量
这个过程中,Optimizer会记录下所有的物理磁盘的平均服务时间。平均服务时间 = 寻址时间(Seek Time)+ 延迟(Latency)+ 传输时间(Transfer Time)。寻址时间(Seek Time)指得是磁头移动到需要读取磁道的时间。延迟(Latency)指得是磁盘旋转所需要的时间。传输时间(Transfer Time)则指得是数据磁盘读取和写入的时间。
2. 根据上一步收集的数据,Optimizer会对物理磁盘总服务时间进行排序,确定最繁忙的物理磁盘为优先执行的候选。然后,Optimizer算法会根据逻辑卷和对应的后端物理磁盘位置,算法会尝试通过在不同的物理磁盘上平衡I/O来最小化磁盘平均服务器时间,主要的方法有三种:
•将I/O负载在不同的物理磁盘上进行平衡。
•将负载较高的逻辑卷集中在一起,缩小寻址时间。
•将负载较高的逻辑卷移动到磁盘的外圈,而加快数据传输的速度。
3. 确定候选设备以后,开始执行后端的物理磁盘位置的交换。下图演示了整个交换过程的四个步骤。这个例子中需要将011也1CF这两个逻辑卷进行交换。第一步,DRV卷会介入,第二步,011被转换到DRV卷上面。第三步,1CF转移到原来011的位置。第四步,从DRV卷将011转移到原先1CF的位置。
4. 当交换完成以后,Optimizer对下一次交换进行分析,反复这个同样的过程。
Optimizer的配置方法:
用户可以使用SYMCLI的命令来管理和配置Optimizer,而在这之前,需要有几个前提:
•Symmetrix阵列内部配置了Dynamic Reallocation Volume(DRV),DRV是一个只限阵列内部使用,用户不可访问的逻辑卷。但是用户可以手动创建这种设备。
•Symmetrix的逻辑卷上有空余的Mirror Position,Mirror Position是Symmetrix Enginuity用来操作逻辑卷的指针,每个逻辑卷默认有四个Mirror Position。
•Optimizer做设备交换的时候,需要加载配置锁(Configuration Lock)保证设备交换时候的一致性。
用户可以使用symoptmz命令来配置Optimizer,以下是一些命令的用法:
启用和禁用Optimizer的命令:
symoptmz enabler/disable
显示Optimizer的参数使用命令:
symoptmz -sid xxx show -parms –dp
显示待交换的逻辑卷列表:
symoptmz show -swap_list -sid xxx -v
清除物理磁盘的性能统计信息:
symoptmz -sid xxx clear_stats
使用symoptmz结合配置文件的方式,对Optimizer进行配置,创建opt_config.txt文件,并且在文件内输入配置命令:
set control_parms [start_mode=AUTO | MANUAL>,] [swap_mode=AUTO | USER_OK,] [min_perf_period=min_perf,] [workload_period=workload,] [max_simult_swaps=max_simult,] [swap_rate=max_swaps];
其中start_mode决定是否Optimizer会在开始以后自动运行,swap_mode指的是交换是否为自动或者用户确认的模式,min_perf_period决定性能统计信息收集的最短时间,workload_period决定两次交换的间隔时间,max_simult_swaps决定最大同时运行的交换活动,swap_rate指定每日允许的交换次数。
然后使用symoptmz命令进行提交:
symoptmz –file opt_config.txt commit
为特定的物理磁盘设置交换优先级别,创建opt_config.txt文件,在文件中键入,下面的例子中将DEV 020这个逻辑卷的交换优先级设置成HIGH。
set swap_priority HIGH for dev 020
手动进行交换动作,使用命令,比如把DEV 030和040进行交换,opt_config.txt文件中的命令为:
set dev_swap 0030 with 0040;
然后使用symoptmz命令进行提交:
symoptmz –file opt_config.txt commit
本文作者为EMC中文技术社区(https://community.emc.com/go/chinese)技术版主。如果您对本文有任何疑问和不同见解,也欢迎到EMC中文支持论坛参与讨论。