multipath多路径显示异常

2024-02-21 11:28

本文主要是介绍multipath多路径显示异常,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、现象

使用multipath -ll显示一个磁盘多大3条路径都是active faulty running状态,而正常状态的链路应该是:active ready running,具体如下图:

二、分析

1、通过各种检查均未发现异常,检查内容包括:操作系统日志、光纤交换机、重启multipath、multipath -F

2、主机工程师建议重启操作系统。

3、通过multipathd -k进入交互界面,show paths查看各链路均是正常的。

由于multipathd交互界面是直接获取的hba状态,因此判断这些链路都是好。

4、因此将其中一个光纤交换机的微码升级并重启后,在此过程中数据库正常,因此确定这些链路均是正常状态。

三、解决

重启操作系统后 multipath -ll恢复正常。

四、相关知识

1、集中式存储经典架构图

一台服务器拥有2个HBA卡,2台SAN交换机,2个存储控制器控制1台存储(这里把RAID A和RAID B看做是同一台存储上划出来的LUN,RAID A和RAID B使用相同的2个控制器),这样就形成了4台链路,但是对于每个LUN而言,还是2条链路:

hba1 SAN1 cntrlr1 (RAID A)

hba1 SAN1 cntrlr1 (RAID B)

hba2 SAN2 cntrlr2 (RAID A)

hba2 SAN2 cntrlr2 (RAID B)

这种多条链路架构带来的好处有:

--冗余。每个存储都有2条链路,在active/standby模式下,如果HBA卡、SAN交换机、存储控制器出现了单点故障,还有另外一条链路提供服务。

--改进的性能。2条链路设置为active/active模式,实现I/O负载平衡。

当然,坏处也非常明显:

通过上面的2种架构可以发现,在SAN网络中,存储分配出来的LUN(可以理解为一个硬盘),在多条存储链路连接后,主机会将每条链路识别到的LUN当做一个硬盘,如果一个LUN被主机上的2个HBA卡各自识别了一次,那么我们会在主机上看到2个一样大小的硬盘。明明只有一个硬盘,却因链路问题主机识别为了2个硬盘,给磁盘管理带来了麻烦。

这时候,多路径设备管理软件就应运而生了。每个多路径设备都有一个全球识别符(WWID),他是一个全球唯一的无法更改的号码,通过WWID,多路径软件就可以将因路径问题重复识别到了磁盘做一个整合映射,对外提供服务。例如,LUN A在通过存储多路径后,在主机上别识别为了/dev/sdc和/dev/sdd,然而sdc和sdd有相同的WWID,所以会将sdc和sdd整合为mpath1磁盘对外提供服务,解决了主机重复识别磁盘的问题。

————————————————————————————————————————————————————————————

本人主要从事架构优化、系统建设、系统运维等方面的工作,专注于Oracle、Mysql、Redis、PG、OGG等技术和系统建设、运维、优化,欢迎留言或者加微信交流,转载请注明出处。

微信:deadknight9

这篇关于multipath多路径显示异常的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731613

相关文章

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决