热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[剖析]多路径ALUA技术如何优化I/O处理

什么是ALUA多路径机制      ALUA是异步逻辑单元访问(AsymmetricLogicalUnitAccess)的缩写,ALUA是SPC3(SCSIPrimarycomma


什么是ALUA多路径机制


       ALUA是异步逻辑单元访问(Asymmetric Logical Unit Access)的缩写,ALUA是SPC3 (SCSI Primary commands-3)协议中规定的目标器端口组TPGS (Target Port Group Support)访问模型中的一类子集,可用于处理A/A-A (Active/ Active-Asymmetric) 和 A/P(Active /Passive)阵列的多端口访问管理。所以通常情况下,ALUA被认为是一种多路径访问模型。但实际上ALUA需要多路径和存储阵列同时支持才能实现路径优化访问,它更是前端控制器多路径机制。


      存储前端控制器多路径机制在一定程度上决定存储的读写性能和可靠性,现有的前端控制器多路径机制大致可分为A/A-S(Active/Acivie-Symmetric)、ALUA和A/P(Active/Passive)三大类。


      先说说A/A-S(Active/Acivie-Symmetric)机制,对于特定的LUN来说,在它的路径中,多个存储控制器的目标端口均处于主动/优化(Active/optimized)状态。多个控制器之间通过PCIe或Infiniband等实现高速互联的通讯,从主机侧发送一个IO到控制器端后,多个控制器可同时参与IO处理;存储系统会自动负载均衡,当一个控制器繁忙或业务压力较大时,存储系统不需要主机端多路径负载均衡软件参与就可以自动实现负载均衡。


     对于ALUA(Active/Active-Asymmetric)机制来说,特定的LUN在控制器的路径组中,只有一个控制器的目标端口组处于主动/优化(Active/Optimized)状态,其他控制器的目标端口组处于主动/非优化(Active/Unoptimized)状态。某个时刻一个特定LUN只属于某一个优选控制器,在多路径的配合下,IO从优选控制的IO组(Active/Optimized)下发IO,多路径不会发送该LUN的IO到其他控制器,一般通过将LUN A归属控制器A,将LUNB归属给控制器B实现两边的负载均衡,归属操作可以手动或自动完成。


      还有一种是A/P(Active/Passive)机制,一般只用在低端双活存储阵列中。现在这种架构已经很少见了。对于特定的LUN来说,在对应存储的路径中只有一个控制器的目标端口处于主动/优化(Active/Optimized)状态,其他控制器的目标端口处于备用或平时不工作状态,其负载均衡处理方式与ALUA类似(即根据优选控制器来决定),但是由于多路径和存储互不相识(多路径不知道那些路径是优选路径),IO很难选到合适的路径,IO的下发可以说这完全取决于上层多路径的心情,解决方案是提供自研多路径来配合阵列选路,通过私有协议实现IO到优选路径的匹配。


ALUA在双活中如何应用


      前面在双活解决方案系列中,不知一次提到基于多路径ALUA实现IO优选路径下发,从而避免IO在主备数据中心来回转发带来的IO时延问题。多路径主要有以下几个功能。


    1、通过路径管理把SCSI上报的物理路径管理起来,对主机呈现一个虚拟的路径(SCSI设备),这样可以防止主机在读写设备时带来的数据不一致问题。

    2、基于IO策略选择物理路径,实现IO业务负载均衡和业务分担。

    3、当主路径发生故障时,可以对IO进行透明的主从切换(FailOver),当路径恢复后自动进行回切(FailBack)。


      这些特性主要是针对一个Volume或LUN而言的,那么在一套存储系统中,如何识别多个路径上报的设备是同一个LUN呢?答案其实很简单,只需要LUN在上报时采用同样的WWN或LUN ID多路径就会认为这些不同路径上报的LUN是同一个设备。


      在双活的两个存储系统中,通过在阵列侧把不同阵列LUN(双活Pair)的WWN或LUN ID设置成一样,配合可靠的冗余交叉组网上报设备时,在主机上就会把两个存储系统的LUN识别为是同一个LUN,在主机IO下发时,如果多路径支持ALUA模式 ,那就可以把本地存储路径设置成Active/optimized,把对端存储路径设置成Active/unoptimized来实现IO和性能优化。


ALUA的路径状态和相关概念

 
      Active/optimized、Active/unoptimized、Standby和Unavailable是目标端口的四种访问状态,在相应访问状态下,阵列控制器只能回应相应的命令标准(命令标准由ISO/IEC SPC-3制定),这就决定了在某一时刻是否可以通过某个目标端口访问逻辑单元。

 

 



      ALUA是一种多路径模式,包括显式ALUA(Explicit ALUA或EALUA)和隐式ALUA(Implicit ALUA或IALUA)两种模式。


      隐式ALUA支持查询LUN的端口组不对称访问状态;正常情况下,主机查询LUN的端口组信息,识别控制器的优先级,从优先级最高(Active/Optimized)的控制器下发业务,当Active/Optimized链路故障后,主机选择其他的链路下(Active/Unoptimized)发业务。


      显式ALUA支持查询和设置LUN的端口组不对称访问状态,当Active/Optimized链路断开后,主机设置其他控制器的优先级为最优;主机从新的最优的控制器下发业务(通过LUN TresPass实现优选控制器切换)。在阅读本文档前,需要知道以下多路径概念。


    Active/Active(A/A): 所有路径上的IO具有相同的性能;同时也用来表示阵列架构。

    Active/Active-Asymmetric(A/A-A): 所有路径都可以响应IO,但路径之间存在性能差异;ALUA就是用来表征这种性能差异的SCSI协议标准,同时也用来表示阵列架构。

    Active/Passive(A/P):只有主路径可以响应IO,备路上不能响应IO;同时也用来表示阵列架构。

    Path Failover: 主机多路径软件将IO路径从主路径切换到备用路径上。基本所有多路径软件都支持该项功能。

    LUN Failover: LUN的工作控制器从归属控制器切换到非归属控制器(LUN Trespass)。支持显式ALUA的多路径软件可以发起LUN Failover。

    Path Failback: 主机多路径软件将IO路径从备用路径切换回主路径上。

 

ALUA技术支持现状


      下表列出主流OS原生多路径对ALUA支持的情况,其中详细描述了隐式ALUA(EALUA)和显示ALUA(IALUA)的支持情况。

 

 



Solaris

      Solaris 9/10的原生多路径软件STMS支持隐式ALUA方式,其中Solaris 9需要安装StorEdge SAN Foundation支持ALUA;Solaris 10在Update3以后版本支持ALUA。Solaris主机通过ALUA方式连接阵列后,在相应配置文件中添加产品信息后,STMS会认为目标器阵列为A/A-A模式,则只会对Active/Optimized路径下发IO,当Active/Optimized路径不可访问时,会通过A/N路径下发IO。

 

HP UX

      HP UX 11版本的原生多路径NMP支持显式ALUA。HP UX主机通过ALUA方式连接阵列时,不需要做任何特殊设置,NMP在标准查询页中发现TPGS支持后,会下发RTPG命令获取路径信息,生成虚拟设备。HP-UX NMP 多路径生成的虚拟设备为持久设备文件,通过scsimgr 命令管理多路径属性,其中可以通过将设备文件的 “alua_enabled” 属性设置多路径的ALUA功能。


      NMP只支持向Active/Optimized路径下发IO,当Active/Optimized路径故障时,NMP会将Active/Unoptimized路径切换为Active/ Optimized来进行LUN Failover 以及 Path Failover。但NMP在不具备LUN Failback功能。所以当故障路径恢复后,需要在CLI模式下手工将工作控制器切换到归属控制器,保证LUN在控制器之间的负载均衡。

 

VMware ESX

      ESX 4.X以后系统的原生多路径NMP支显式以及隐式ALUA。ESX主机通过ALUA方式连接阵列时,不需要做任何特殊设置,NMP在标准查询页中发现TPGS支持后,会下发RTPG命令获取路径信息。ESX/ESXi在VMkernel层使用可插入存储架构 (PSA)管理存储多路径,PSA采用一个开放式模块框架协调多个多路径插件 (MPP) 的同时操作。


      ESX/ESXi默认情况下提供的 VMkernel 多路径插件是 VMware 本机多路径插件 (NMP)。NMP 是管理子插件的可扩展模块。NMP 子插件有两种类型,即存储阵列类型插件(SATP) 和路径选择插件 (PSP)。SATP和PSP可以是 VMware 提供的内置插件,也可以由第三方提供。ESX原生PSP提供固定模式(FIX)、循环模式(RR)和最近使用(MRU)三种路径选择方式 。

 

Mac OS X

       Mac OS X通常使用HBA卡自带多路径软件,其中ATTO FC HBA卡是苹果主机上最常用的FC HBA卡(两者结合较为紧密)。ATTO MulitPath Director就是ATTO FC HBA卡提供的多路径驱动,具备IO路径切换和负载均衡功能。ATTO MulitPath Director同时支持IALUA和EALUA。


      主机通过ALUA方式连接阵列时,不需要做任何特殊设置,MulitPath Director在标准查询页中发现TPGS支持后,会下发RTPG命令获取路径信息。MulitPath Director支持SCSI协议定义的四种状态,其中Active/Optimized路径作为优先路径,Active/Unoptimized以及Standby路径作为备选路径,Unavailable状态处理Disable状态。当Active/Optimized路径故障时,Active/ Unoptimized路径会立即被置为Active状态。

 

ALUA主要功能和能力


    IO路径选择: 在ALUA模式下,主机只会对A/O路径下发IO,即对LUN工作控制器下发IO。只有当A/O路径不存在时,IALUA的主机多路径会对A/N路径下发IO,阵列将IO重定向到LUN工作控制器。

    内部错误处理: 在某些错误场景下,单个LUN在单边控制器不可访问情况,这些内部错误可以转化为ALUA端口组状态,隐藏内部错误的差异,通过统一共用的接口暴露给主机。这样做的好处在于,可确保错误不扩散,提高多路径可靠性。

    路径故障和恢复: 路径故障包括光纤、HBA卡、交换机等故障,如果故障发生在LUN 的A/O路径上,且没有可用A/O路径时, IALUA会通过A/N路径下发IO,EALUA则将A/N路径切换为A/O路径。如果故障发生在A/N路径上,IO行为不受影响。

    故障路径恢复后,对于EALAU方式的连接,需要在CLI模式下确认受影响的LUN的工作控制器和归属控制器是否一致,如果不一致,需要手工将工作控制器切换到归属控制器侧,以确保LUN的负载均衡。

    控制器故障和恢复: 如果控制器发生故障时,阵列内部系统流程会自动将故障端LUN的工作控制器Failover到对端,同时会通过UA状态知会主机路径状态变化。控制器故障恢复后,阵列内部系统流程会自动将受影响的LUN进行Failback。

 

      简单总结: 阵列没有开启或实现ALUA之前,第三方多路径无法知道阵列中LUN的工作控制器在哪边,往往采用随机的方式下发IO,这就造成部分IO需要向归属控制器转发,影响IO性能(第三方多路径可以选择支持和不支持ALUA)。支持或实现ALUA后,通过Active/Optimized状态标识LUN工作控制器,通过对Active /Optimized路径下发IO,这样就可以提升IO性能。


      前面已经介绍过,ALUA是SCSI协议定义的标准多路径接口,这可以使得存储阵列在不提供自研多路径的情况下,通过支持标准ALUA的第三方多路径实现IO优化。
 ————————————————  

转自:https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/78360619



推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 1.创建目录mkdir-phomerocketmqnamesvr1data&&mkdir-phomerocketmqnamesvr1log&&mkdir-phomerocketm ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
author-avatar
mobiledu2502892183
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有