存储多路径之linux multipath

一、何为multipath

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。

DM Multipath 是一种将服务器节点和存储阵列间的多个 I/O 路径配置为一个单一设备的技术。这些 I/O 设备是可包含「独立电缆」、 「交换器」、「控制器」的实体 SAN 链接。多路径集合了 I/O 路径,并生成由这些路径组成的新设备。

使用 multipath,不仅可以获得 链路上的冗余功能,而且可以充分发挥存储设备的性能。以下为 multipath 多路径的功能

冗余:DM Multipath 提供两种配置模式 主动 和 被动,并可以在两种模式下切换用来实现故障转移。在两种模式下,只有一半的路径在每次进行 I/O时会被使用。若一条 I/O 路径的任一元素(电缆、交换器、控制器)出现故障后,multipath 将切换到另一条正常的路径上。
性能提升:multipath 提供的两种配置模式,可以将 I/O 以轮循(round-robin) 的方式分布到所有的路径中。在某些配置中,multipath 能够检测 I/O 路径的负载,并重新动态平衡负载。

 

二、为何multipath

由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。比如EMC公司基于linux下的多路径软件,就需要单独的购买license。

其中,EMC提供的就是PowerPath,HDS提供的就是HDLM,不同的存储厂商提供不同的多路径软件。当然,LINUX使用系统自带的multipath多路径软件包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。

使用multipath多路径有以下几种策略模式:

冗余
主备模式,高可用
改进的性能
主主模式,负载均衡

使用multipath多路径特点

防止单线故障
多条线路使用相同的 共享存储
依靠 wwid (全球识别符) 辨认,减少管理混乱

三、multipath 相关组件

dm-multipath kernel:为路径和路径组重新指定 I/O 并进行故障转移。
mpathconf:配置并启用 DM Multipath。
multipath:列出并配置多路径设备,通常使用 /etc/rc.sysinit 启动,还可以在添加块设备时通过 udev 启动。
multipathd:multipath 守护进程,若出现故障路径、multipathd 可能会启动路径组切换。对 /etc/multipathd.conf 配置文件的任何修改,都需要重新启动 multipathd 服务。
kpartx:为设备分区生成设备映射器。kpartx 命令包含在自己的软件包中,但是 DM Multipath 软件包需要依赖它 。

四、配置multipath

1、安装软件包

在 Linux RedHat 系列中,multipath 的软件包可通过yum安装,安装完通过 rpm -qa | grep device-mapper查看;如果缺少 device-mapper-multipath-lib 和 device-mapper-multipath,使用yum install -y device-mapper device-mapper-multipath 安装。

安装之后,加载 下device-mapper 相关的驱动

modprobe dm_multipath dm_round_robin

2、配置配置文件

配置 multipath 有两种方式,你可以使用 mpathconf 程序设置多路径,它可以创建多路径配置文件 /etc/multipathd.conf。

使用 mpathconf 配置时,有以下几种情况

如果 /etc/multipath.conf 文件已存在, mpathconf 程序会编辑它
如果 /etc/multipath.conf 文件不存在, mpathconf 程序会使用 /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 作为初始文件
如果 /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 文件不存在, mpathconf 程序则会创建一个新的 /etc/multipath.conf 文件
如果不需要编辑 /etc/multipath.comf ,可以使用 mapthconf --enable --with_multipathd y 设置基本故障切换。

vi /etc/multipath.conf

blacklist {
devnode "vda"    #禁止使用/dev/vda 设备

}
defaults {
user_friendly_names    yes
udev_dir                        /dev            #生成 udev 设备节点的目录,默认值为 /dev。

path_grouping_policy    failover     #failover 为主备模式; multibus 为负载均衡模式
failback         immediate #指定立即恢复到包含活跃路径的最高级别路径组群                                              
no_path_retry         fail        #这个属性的数字值指定系统在禁用队列前应该试图使用失败的路径的次数.fail 值表明立即失败,无需排队。
}

#固定设备的别名
cat /etc/multipath/bindings 

# Multipath bindings, Version : 1.0
# NOTE: this file is automatically maintained by the multipath program.
# You should not need to edit this file in normal circumstances.
#
# Format:
# alias wwid
#
mpatha 360002ac00000000000000124000245a2
mpathb 360002ac00000000000000124000245a2

#编辑multipath.conf,增加以下字段,绑定设备uuid
vim /etc/multipath.conf

multipaths {
  multipath {
  wwid 360002ac00000000000000124000245a2
  alias hpdisk01
  }
}

 3、multipath相关命令

#清空已有的multipath记录
multipath -F
#打印诊断信息
multipath -v3
#启用多路径守护程序以在引导时启动
mpathconf --enable
#启动多路径服务
service multipathd start
#如果在启动 multipath 守护程序后更改多路径配置文件,请运行以下命令以使更改生效。
service multipathd reload 
#查看多路径当前状态
multipath -ll

五、关于multipath常见问题

1、多路径策略是用故障切换模式还是负载均衡模式?

在 Linux 系统中,存储多路径策略可以实现主备模式和负载均衡模式。这两种模式有各自的特点和适用场景。

主备切换模式:

特点: 在主备模式下,系统中只有一条路径被用于数据传输,而其他路径则处于备用状态。当主路径失效时,系统会自动切换到备用路径,确保数据的可靠性和连通性。

优点:简单易实现,不需要额外的负载均衡算法。
可靠性高,一旦主路径失效,备用路径能够立即接管数据传输,保证系统的稳定性。

缺点:总体性能较差,因为大部分时间只有一条路径在工作,无法充分利用所有可用路径的带宽。
在故障切换时可能会出现短暂的数据传输中断,对于某些对连续性要求极高的应用可能会造成影响。

负载均衡模式:

特点: 在负载均衡模式下,系统会同时利用多条路径进行数据传输,根据不同的负载情况将数据分散到各个路径上,从而实现负载均衡。

优点:充分利用所有可用路径的带宽,提高整体系统的数据传输性能。

在负载较大时,能够有效分担单条路径的压力,保证系统的稳定性和高可用性。

缺点:实现相对复杂,需要使用负载均衡算法来动态调整数据传输路径,增加了系统的维护成本。部分负载均衡算法可能存在性能不佳或者需要较长的调整时间的情况,影响系统的实时性和响应速度。

综上所述,主备模式适用于对系统可靠性要求较高的场景,而负载均衡模式适用于对系统整体性能要求较高的场景。在实际应用中,需要根据系统的需求和实际情况选择合适的多路径策略。

2、为何要用alias自定义磁盘名称

默认情况下,multipath会根据multipath.conf.defaults中的定义,生成mpathn的设备名。当然,我们也可以自行定义。不过,更主要的原因是:当我们有多台服务器以相同的方式连接到存储时,每台服务器识别出来的mpathn顺序可能不同。为了组成集群,我们需要固定每台机器识别的设备名顺序是一致的(绑定wwid)。例如:

multipaths {

multipath {

wwid 360060e80058e980000008e9800000007

alias mpath0

}

}

重新刷新multipath映射表后,mpath0就与该wwid设备一一对应起来。除了别名alias外,还可以为该设备定义其他属性,请参考multipath.conf上的样式。把该配置赋值到其他同一集群的机器上,则每台机器识别的mpathn设备顺序将是一致的。

※ 注意:1、绑定后,需重新生成路径的映射表;2、当加入该wwid绑定后,没有绑定的设备将不能使用,用-ll 也无法看到这些设备,但/var/lib/multipath/bindings 中可见。3、重定义的alias名字不要与系统自动生成的名字一致,如mpatha、mpathb等等这些,容易造成盘符名冲突。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,动态规划(DP)金矿问题(Gold Mine Problem)的算法与源代码

1 金矿问题(Gold Mine Problem) 给定一个N*M尺寸的金矿,每个点都有一个非负数表示当前点所含的黄金数目,最开始矿工位于第一列,但是可以位于任意行。矿工只能向右,右上,右下三个方向移动。问该…

如何在Linux使用Docker部署Nexus容器并实现公网访问本地仓库【内网穿透】

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

柏映国研究员出席新型饲用酶制剂研究与产品开发演讲

演讲嘉宾:柏映国 研究员 中国农科院北京畜牧兽医研究所 演讲题目:新型饲用酶制剂研究与产品开发 简介:柏映国,2004年毕业于江南大学,获发酵工程专业工学硕士学位,2010年毕业于中国农业科学院研究生院&a…

Windows虚拟主机如何开启网页debug模式

前不久,有客户咨询想要知道如何开启网页debug模式,以便后期他网站出现异常可以自行排查。这边了解到他当前使用的是Hostease 的Windows 虚拟主机,而开启网页debug模式的操作步骤如下: 1.Hostease的Windows虚拟主机都是带Plesk面板的,因此需要…

HarmonyOS—开发云数据库

您可以在云侧工程下开发云数据库资源,包括创建对象类型、在对象类型中添加数据条目、部署云数据库。 创建对象类型 对象类型(即ObjectType)用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型&#…

Java底层自学大纲_分布式篇

分布式专题_自学大纲所属类别学习主题建议课时(h)A 分布式锁001 Zookeeper实现分布式锁l-常规实现方式2.5A 分布式锁002 Zookeeper实现分布式锁II-续命&超时&羊群效应问题解决方案2.5A 分布式锁003 Zookeeper实现分布式锁III-基于Curator框架实现…

盘点6个最受欢迎的 Vue.js UI 库

在2024年,随着Vue.js的不断普及和发展,这个轻量级、易于学习的JavaScript框架在前端开发者中的受欢迎程度日益上升。Vue.js之所以受到青睐,很大一部分原因是其庞大的生态系统,特别是众多的UI库,这些库提供了预先构建的…

Cadence Allegro PCB设计88问解析(三十四) 之 Allegro 中 DDR等长处理

一个学习信号完整性仿真的layout工程师 在进行PCB设计时 ,会遇到一些单端的信号要做等长处理,比如DDR的数据线,交换机之间的数据线之类的。这时需要我们建立match group,来做等长。下面简单介绍在Allegro中怎么做等长:…

【c语言】探索联合和枚举---解锁更多选择

前言 上一篇 讲解的是结构体相关知识,接着本篇主要讲解的是 联合和枚举 相关知识 结构体、联合体和枚举都属于 自定义类型。 那么接下来就跟上我的节奏,准备发车~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误&#xf…

Django前后端分离之后端基础3

12 案例:登录_哔哩哔哩_bilibili 参考大佬的B站视频教程笔记 目录 登录接口的实现会话机制成功后的信息保存: 中间件的使用,解决登录保护使未登录过的用户进行登录 Form组件 - 主要作用: Form组件信息的配置 ModelForm组件…

【MySQL】MySQL数据管理——DDL数据操作语言(数据表)

目录 创建数据表语法列类型字段属性SQL示例创建学生表 查看表和查看表的定义表类型设置表的类型 面试题:MyISAM和InnoDB的区别设置表的字符集删除表语法示例 修改表修改表名语法示例 添加字段语法示例 修改字段语法示例 删除字段语法示例 数据完整性实体完整性域完整…

Pikachu 漏洞练习平台pika~pika~

一、Burte Force(暴力破解) “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率&am…

使用Fragments(片段)提升你的Vue.js开发体验

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:1.掌握ap上线的配置方式和上线过程。ac配置验证 步骤 2 掌握隧道模式和旁挂模式下ac的配置。步骤 3 掌握查看ap…

女生是漂亮重要还是学历重要?

在经济上升期,漂亮更重要。 比如2012-2018年这六年,因为互联网和房地产的繁荣造就了一大堆有钱人。 因为这些大哥钱来得快,愿意给女人花钱。稍微有点颜值的女人,只要愿意,那几年在大哥身上捞个上百万问题不大吧&…

【Vue3】回顾watch,学习watchEffect

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

mount命令最新详细教程

背景 需要在设备上面,自动化运行u盘里面的脚本,并且进入一个产测模式。因此实际使用了这个mount命令,所以,写了这么一篇供大家参考。 一. 定义 mount命令在Linux和类Unix系统中用于挂载文件系统,即将存储设备…

数仓模型设计方法论

在当今大数据时代,数据已经成为企业最重要的资产之一。而数据仓库作为企业数据管理和分析的核心基础设施,其设计方法论对于企业的数据治理和决策分析至关重要。本文将探索数仓模型设计的方法论,帮助读者更好地理解和应用数仓模型设计。 一、…

从零开始手写RPC框架(1)

学习java后端也有一段时间了,在网上寻一些教程和github上的开源库,学习从零开始手写一个RPC,学习各位大牛的代码适当修改,并贴上自己的一些见解和注释。 目录 RPC简介RPC和HttpClient的区别和共同点常见RPC框架 RPC框架设计常见序…

ISP代理是什么?怎么用?

在跨境出海业务中,代理IP对于您的在线任务至关重要,尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要,劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重,其中…