【linux】多路径|Multipath I/O 技术

目录

简略

详细

什么是多路径?

Multipath安装与使用

安装

使用

Linux下multipath软件介绍

附录

配置文件说明

 其他解


简略

详细

什么是多路径?

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。

而到了分布式环境,主机和存储网络连接,中间每一层可能存在多块网卡,多个交换机可选,就构成了多对多的关系。

也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择,那么就有以下问题需要解决:

1 ) 每条路径如何表达?

2 )I/O流量如何选择路径?

3) 流量如何在多条路径之间分配?(负载均衡)

4) 其中一条路径坏掉了,如何处理? (高可用)

 第一条比较简单,每条路径,让操作系统把每条路径识别成独立的磁盘即可,这两个识别出的磁盘实际上只是通向同一个物理盘的不同路径而已,如下图:

IO 可以从两张网卡中的任意一张到达存储设备RDID A,也就是有2条路径,把这两条路径设备成/dev/hba1 /dev/hba2 两块盘. 选择其中一块盘写数据即可. 实际都是向RDID A写数据. 对磁盘/dev/hba1就是走绿色那条路径,/dev/hba2写就是走蓝色那条路径.

 lsblk 会看到下面的输出,/dev/hba1 /dev/hba2 两块盘实际指向的是同一个物理存储设备 253:2,映射为多路径设备mpatha

# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
……
hda1              8:48   0   30G  0 disk
└─mpatha        253:2    0   30G  0 mpath
hda2              8:64   0   30G  0 disk
└─mpatha        253:2    0   30G  0 mpath

 

 

那么2 )I/O流量如何选择路径?  3) 流量如何在多条路径之间分配?(负载均衡)  4) 其中一条路径坏掉了,如何处理? (高可用) 这些问题怎么解决? 这就需要多路径出场了。

 

Multipath I/O 技术

 

当服务器到某一存储设备有多条路径时,每条路径都会识别为一个单独的设备,下IO时,要写哪个设备(既走哪条路径),然后故障时的切换和恢复,IO流量的负载均衡等,都要applicantion自己选择和判断,太麻烦了,还不方便.

于是技术人员编写了一个中间层软件,专门解决 1 ) 每条路径如何表达? 2 )I/O流量如何选择路径?  3) 流量如何在多条路径之间分配?(负载均衡)  4) 其中一条路径坏掉了,如何处理? (高可用这几个问题,这就是多路径技术。

多路径技术其中之一就叫Multipath(linux上的主流),把选择哪条路故障时的切换和恢复,IO流量的负载均衡等Multipath帮你搞定,applicantion全程无感知,对Multipath模拟出来的设备下IO即可,就像写一个普通的盘一样,幸福.

 

 

 

 

Multipath安装与使用

(摘自:Linux下multipath安装与使用-https://blog.csdn.net/u011436427/article/details/113662832

安装

linux中大多已经默认安装了multipath,只需设置开机启动即可.

systemctl enable multipathd.service

使用

 

添加配置文件


需要multipath正常工作只需要如下配置即可,如果想要了解详细的配置,请参考Multipath

# vi /etc/multipath.conf

blacklist {

    devnode "^sda"

}

defaults {

    user_friendly_names yes
    path_grouping_policy multibus
    failback immediate
    no_path_retry fail

}

 

启动服务

systemctl start multipathd.service

查看服务

# multipath -ll

mpatha (360000000000000000e00000000010001) dm-2 IET     ,VIRTUAL-DISK
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  |- 3:0:0:1 sdd 8:48 active ready running
  `- 4:0:0:1 sde 8:64 active ready running

检查配置是否成功

如果配置正确的话就会在/dev/mapper/目录下多出mpath0、mpath1(自动分配的名称)等之类设备,不过如果在配置的时候起了别名,会使用别名来代替自动分配的名称

# ll /dev/mapper/

 

 

此时,执行lsblk命令就可以看到多路径磁盘mpatha了:

 

# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part  /boot
└─sda2            8:2    0 19.5G  0 part
  ├─centos-root 253:0    0 17.5G  0 lvm   /
  └─centos-swap 253:1    0    2G  0 lvm   [SWAP]
sdb               8:16   0   30G  0 disk
sdc               8:32   0   30G  0 disk
sdd               8:48   0   30G  0 disk
└─mpatha        253:2    0   30G  0 mpath
sde               8:64   0   30G  0 disk
└─mpatha        253:2    0   30G  0 mpath
sr0              11:0    1  603M  0 rom

此时/dev/mapper/mpatha 就是 对应下图的白色方框部分了:

由于mpatha是逻辑设备名,您应该向/dev/mapper/mpatha进行I/O操作,而不是直接向sddsde进行。这是因为mpatha是多路径软件为您抽象出来的设备,它会处理路径选择、故障切换等复杂操作,让您能够像操作一个本地磁盘一样操作远程存储设备。

 

请注意,在向/dev/mapper/mpatha进行I/O操作之前,您需要确保该设备已经正确挂载到文件系统,并且您拥有适当的权限进行读写操作。通常,这可以通过在/etc/fstab中配置自动挂载,或者使用mount命令手动挂载来完成。

此外,如果您在操作系统中执行格式化或分区操作,也应该针对/dev/mapper/mpatha进行,而不是针对sddsde。这是因为mpatha是多路径软件提供的逻辑视图,而sddsde只是物理路径的表示。对物理路径直接进行操作可能会导致数据丢失或不一致。

分区、格式化和创建逻辑卷

接下来,就可以对mpatha做分区、格式化和创建逻辑卷等各种磁盘操作了

 

# /etc/init.d/multipathd start #开启mulitipath服务

# multipath -F #删除现有路径

# multipath -v2 #格式化路径

# multipath -ll #查看多路径

如果配置正确的话就会在/dev/mapper/目录下多出mpathbp1等之类的设备,用fdisk -l命令可以看到多路径软件创建的磁盘,

如:/dev/mapper/mpathbp1

 

格式化硬盘


执行fdisk -l,可以看到存储已经识别成功,并且多路径配置也正确。信息如下:

[root@localhost ~]# fdisk -l

......

Disk /dev/mapper/mpathb: 2684.4 GB, 2684354560000 bytes
 heads, 63 sectors/track, 326354 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
             Device Boot      Start         End      Blocks   Id  System

/dev/mapper/mpathbp1               1      267350  2147483647+  ee  GPT

 

通过上面的信息可以发现已经是GPT的分区格式了,接下来就是需要对硬盘进行格式化。如果不是,需要先执行如下步骤:

 新建分区

[root@localhost ~]# pvcreate /dev/mapper/mpathb

[root@localhost ~]# parted /dev/mapper/mpathb
GNU Parted 2.1
Using /dev/mapper/mpathbp1

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel gpt                #设置分区类型为gpt
(parted) mkpart extended 0% 100%    #扩展分区,并使用整个硬盘
(parted) quit                       #退出                                              
Information: You may need to update /etc/fstab.

格式化&挂载硬盘

[root@localhost ~]# mkfs.ext4 /dev/mapper/mpathbp1
[root@localhost ~]# mount /dev/mapper/mpathbp1 /test

挂载成功后,即可使用了。

当在系统里创建了一个新的分区后,因为mount挂载在重启系统后会失效,所以需要将分区信息写到/etc/fstab文件中让其永久挂载。

[root@localhost ~]# vi /etc/fstab

/dev/mapper/mpathbp1    /test                ext4    defaults        1 2

保存退出,重启后/dev/mapper/mpathbp1 就会自动挂载到/test 目录下

Linux下multipath安装与使用_redhat 7 multipath-CSDN博客

 更多配置和维护相关:

Linux Multipath多路径配置:概念、配置、常用维护命令等-https://www.cnblogs.com/liulianzhen99/articles/17968524

Linux下multipath软件介绍

 

Linux下实现多路径的软件是multipath,centos默认已经安装了multipath:

[root@localhost ~]# rpm -qa|grep mapper

device-mapper-multipath-0.4.9-64.el6.x86_64

device-mapper-event-libs-1.02.77-9.el6.x86_64

device-mapper-multipath-libs-0.4.9-64.el6.x86_64

device-mapper-persistent-data-0.1.4-1.el6.x86_64

device-mapper-libs-1.02.77-9.el6.x86_64

device-mapper-event-1.02.77-9.el6.x86_64

device-mapper-1.02.77-9.el6.x86_64

• 解释如以下:

(1)device-mapper-multipath:即multipath-tools。主要提供multipathd和multipath等工具和 multipath.conf等配置文件。这些工具通过device mapper的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库,创建的多路径设备会在/dev /mapper中)。

(2)device-mapper:主要包括两大部分:内核部分和用户部分。

其中内核部分主要由device mapper核心(dm.ko)和一些target driver(md-multipath.ko)。核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部分通信,以指导内核驱动的行为,比如如何创建mappered device,这些divece的属性等。linux device mapper的用户空间部分主要包括device-mapper这个包。其中包括dmsetup工具和一些帮助创建和配置mappered device的库。这些库主要抽象,封装了与ioctr通信的接口,以便方便创建和配置mappered device。multipath-tool的程序中就需要调用这些库。

(3)dm-multipath.ko和dm.ko:dm.ko是device mapper驱动。它是实现multipath的基础。dm-multipath其实是dm的一个target驱动。

(4)scsi_id: 包含在udev程序包中,可以在multipath.conf中配置该程序来获取scsi设备的序号。通过序号,便可以判断多个路径对应了同一设备。这个是多路径实现的关键。scsi_id是通过sg驱动,向设备发送EVPD page80或page83 的inquery命令来查询scsi设备的标识。但一些设备并不支持EVPD 的inquery命令,所以他们无法被用来生成multipath设备。但可以改写scsi_id,为不能提供scsi设备标识的设备虚拟一个标识符,并输出到标准输出。multipath程序在创建multipath设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。在改写时,需要修改scsi_id程序的返回值为0。因为在multipath程序中,会检查该直来确定scsi id是否已经成功得到。

 

[root@bootstrap vdbench50401]# lsblk

...

sdb         8:16   0     4G  0 disk

└─mpathah 253:0    0     4G  0 mpath

sdc         8:32   0     4G  0 disk

└─mpathag 253:1    0     4G  0 mpath

sdd         8:48   0     4G  0 disk

└─mpathaj 253:2    0     4G  0 mpath

sde         8:64   0     4G  0 disk

└─mpathai 253:3    0     4G  0 mpath

sdf         8:80   0     4G  0 disk

└─mpathah 253:0    0     4G  0 mpath

sdg         8:96   0     4G  0 disk

└─mpathag 253:1    0     4G  0 mpath

sdh         8:112  0     4G  0 disk

└─mpathaj 253:2    0     4G  0 mpath

sdi         8:128  0     4G  0 disk

└─mpathai 253:3    0     4G  0 mpath

sdj         8:144  0     4G  0 disk

└─mpathah 253:0    0     4G  0 mpath

sdk         8:160  0     4G  0 disk

└─mpathag 253:1    0     4G  0 mpath

sdl         8:176  0     4G  0 disk

└─mpathaj 253:2    0     4G  0 mpath

sdm         8:192  0     4G  0 disk

└─mpathai 253:3    0     4G  0 mpath

 

附录

配置文件说明

这个配置是Linux系统中multipath的配置文件,用于设置多路径I/O(Multipath I/O)的行为。多路径I/O通常用于存储系统,允许操作系统通过多个物理路径(例如,通过不同的网络交换机或物理接口)访问同一个逻辑存储设备。这样做可以提高系统的可靠性和性能。

下面是配置文件的详细解释:

blacklist 部分

conf复制代码

blacklist { 

devnode "^sda" 

}

blacklist部分用于指定哪些设备不应该被多路径软件管理。在这个例子中,所有设备名以sda`开头的设备都不会被多路径软件处理。

defaults 部分

conf复制代码

defaults { 

user_friendly_names yes 

path_grouping_policy multibus 

failback immediate 

no_path_retry fail 

}

defaults`部分用于设置多路径I/O的默认行为。

这个配置文件的主要目的是确保multipath按照预期的方式运行,只管理那些应该被管理的设备,并且具有合适的默认行为。当然,具体的配置可能会根据实际的硬件和网络环境有所不同。

 

 

  • user_friendly_names yes:这个选项允许multipath使用更友好的设备名,而不是默认的、基于路径的设备名。
  • path_grouping_policy multibus:这个选项用于指定如何对路径进行分组。multibus意味着路径将根据它们所在的总线(或接口)进行分组。这对于具有多个接口卡的系统特别有用,因为这样可以确保数据在多个接口之间均匀分布。
  • failback immediate:当一个之前失败的路径变得可用时,这个选项决定了是否应该立即切换回这个路径。immediate表示一旦路径恢复,就应该立即使用它。
  • no_path_retry fail:当没有可用的路径时,这个选项决定了multipath的行为。fail表示当所有路径都失败时,multipath应该立即报告错误,而不是尝试重新连接。

 其他解释

mpath 是多路径(Multipath)设备的缩写。多路径I/O(Multipath I/O,简称MPIO)是一种用于提高存储系统可靠性和性能的技术。它允许一个存储设备(如磁盘或磁带驱动器)通过多个物理路径连接到主机系统。当存储设备有多个路径可用时,多路径软件将选择一个最优路径用于数据I/O。在您的情况中,所有的磁盘都被映射到了mpath设备。您可能使用了某种存储解决方案(如LVM、RAID或其他SAN/NAS设备),并且这些磁盘设备都通过多路径I/O进行了管理。

注意到mpathahmpathagmpathaj, 和 mpathai 这些设备被多次列出,但是它们的设备号(例如 253:0)是相同的,这可能是由于多路径I/O软件的工作方式造成的。尽管多个物理磁盘被列出,但在多路径I/O的上下文中,它们可能被视为单个逻辑设备。

 

 

 

Q:什么是Multipath多路径?

 

答:Multipath I/O 电脑储存技术,指利用两个以上的路径同时在CPU与储存设备之间传送讯号,以达到侦错与强化效能的目的。 简单的说当服务器到某一存储设备有多条路径时,每条路径都会识别为一个单独的设备(不便于使用),而多路径允许您将服务器节点和储存阵列间的多个I/O路径配置为一个单一设备(就是我们所说的链路聚合)即多路径聚合了I/O路径并生成由这些集合路径组成的新设备,这些I/O路径可包含独立电缆、交换器和控制器的实体SAN链接(FC / SAS / iSCSI)等;

:Multipath多路径管理基础介绍与安装配置使用_multipath命令详解-CSDN博客

华为多路径Ultrapath——原理篇 (huawei.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

普冉PY32F071单片机简单介绍,QFN64 48封装,支持 8 * 36 / 4 * 40 LCD

PY32F071单片机是一款基于32 位 ARM Cortex - M0内核的微控制器,由普冉半导体推出。PY32F071可广泛应用于各种嵌入式系统中,包括消费类电子产品、工业自动化、医疗设备等领域。PY32F071系列单片机具有低功耗、高性能和丰富的外设接口等特点,适…

生物制药企业在选择文件摆渡平台时,最应该关注哪些功能?

生物制药是以数据为核心生产力的企业,数据的重要性体现在药物研发、生产优化、销售和市场营销、决策支持以及合规要求等多个方面。有效地管理和利用数据,对于提升企业的竞争力、降低风险、提高产品质量和满足市场需求具有重要意义。 为保护数据安全&…

KEITHLEY(吉时利)2440源测量单位(SMU)数字源表

KEITHLEY(吉时利)2440源测量单位(SMU)数字源表 主要特性 50W 时性能高达 5A / 40V0.012% 基本测量精度,具有 6 位分辨率10pA / 100nV 测量分辨率与 KickStart 软件结合使用美国2440吉时利keithley数字源表特点 2400系列提供宽动…

亚信安慧AntDB:高效与稳定

亚信安慧AntDB正致力于验证数据库软硬件全自主可控的可行性,并将其应用于运营商核心的交易场景,以替代国外商业解决方案。为了实现这一目标,亚信安慧AntDB的研发团队不断进行技术创新和实践探索。 该数据库以自主研发的技术为基础&#xff0…

C语言 流程图与伪代码 缩减

本文 我们来说说流程图 伪代码和代码缩进 这些可以让我们在后面书写复杂逻辑时 不会感到 繁琐或逻辑混乱 流程图(Flowchart) 是用以算法、工作流或流程的一种框图表示,它以不同类型的框代表不同种类的步骤,每两个步骤之间则以箭头连接。 流程图是程序…

《飞吧龙骑士》新版本“龙神祭”盛大开启,引领骑士团战

热游圈消息:五一假期临近,备受瞩目的手游《飞吧龙骑士》迎来重大更新——“龙神祭”新版本正式开启。在此次更新中,首个蓄力炮UR龙——绮舞的巫女千代烬惊艳登场,为玩家们带来前所未有的燃情体验。同时,全新骑士团战玩…

当你看到一份更心仪的工作时,先冷静冷静,看看这篇文章

01 无法构建自己的城堡?那就挖一条护城河 人活一辈子,在职业生涯领域,你总得要搭建一座属于自己的城堡,否则拼死拼活,到最后你拿到一点蝇头小利,为别人做嫁衣。而当别人的梦想进行曲不需要你合奏或者伴奏时…

从现在开始:让AI写代码,你只负责敲tab键

如果你是一名程序员,你一定有过这样的经历:在编写代码的时候,突然遇到了一个棘手的问题,需要花费大量的时间去查找资料、尝试不同的解决方案,甚至有时候还需要去问同事或者在网上寻求帮助。这样的情况不仅会浪费你的时…

【算法刷题 | 贪心算法03】4.25(最大子数组和、买卖股票的最佳时机|| )

文章目录 4.最大子数组和4.1题目4.2解法一:暴力4.2.1暴力思路4.2.2代码实现 4.3解法二:贪心4.3.1贪心思路4.3.2代码实现 5.买卖股票的最佳时机||5.1题目5.2解法:贪心5.2.1贪心思路5.2.2代码实现 4.最大子数组和 4.1题目 给你一个整数数组 n…

Linux中DHCP原理与配置

目录 一.DHCP的原理 1.DHCP的简要概述 2.DHCP的优点 3.DHCP的分配方式 4.DHCP的租约过程 5.DHCP服务 6.可分配的地址信息主要包括 二.DHCP同一网段分配地址实验 windows命令 一.DHCP的原理 1.DHCP的简要概述 DHCP(Dynamic Host Configuration Protocol&a…

讯鹏智慧公厕系统解决方案新升级,大不同!

在城市建设和公共服务不断发展的今天,公厕作为重要的基础设施,其质量和管理水平直接影响着人们的生活体验。然而,当前公厕普遍存在着一些问题,如卫生状况不佳、设施老化、管理不便等。为了解决这些问题,讯鹏智慧公厕系…

牛客NC209 最短无序连续子数组【中等 数组,双指针 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/d17f4abd1d114617b51e951027be312e 思路 解题思路 1、方法1,排序对比:将数组按升序排序,然后与原数组对照,从哪里开始变化到哪里结束变化的数组就是答案。 2、 方…

图像处理技术与应用(二)

图像处理技术与应用入门 椒盐噪声 椒盐噪声,也称为脉冲噪声,是一种常见的数字图像噪声。它通常表现为图像中随机出现的白色(椒)或黑色(盐)像素点,这些像素点在图像上呈现为黑白杂点。椒盐噪声…

云计算革新:以太网 Scale-UP 网络为 GPU 加速赋能

谈谈基于以太网的GPU Scale-UP网络 Intel Gaudi-3 采用 RoCE 互联技术,促进了 Scale-UP 解决方案。业界专家 Jim Keller 倡导以太网替代 NVLink。Tenstorrent 成功应用以太网实现片上网络互联。RoCE 和以太网已成为互联解决方案的新兴趋势,为高性能计算提…

前端H5动态背景登录页面(下)

最近正好有点儿时间,把之前没整理完的前端动态背景登录页面给整理一下!这是之前的连接前端H5动态背景登录页面(上),这主要是两个登陆页面,一个彩色气泡,一个动态云朵,感兴趣的可以点…

关爱通丨从AIGC到硅基人同事:人工智能迭代重塑HR管理策略

2024年,一股创新的浪潮悄无声息地席卷了全球,推动了人工智能领域的重大突破。Sora视频模型的惊艳发布,成为了这一创新浪潮的标志性事件。 Sora这个名字源自日语中的“空”(そら sora),象征着天空的无限广阔…

机器学习作业3____决策树(CART算法)

目录 一、简介 二、具体步骤 样例: 三、代码 四、结果 五、问题与解决 一、简介 CART(Classification and Regression Trees)是一种常用的决策树算法,可用于分类和回归任务。这个算法由Breiman等人于1984年提出,它…

sorensen索伦森电源维修XRF系列程控电源XRF600-4

AMETEK直流电源产品有两种类型:固定量程类型和自动量程类型。 固定量程电源是经济型的,输出范围为传统的矩形范围。 自动量程电源,在满输出功率的基础上,扩展了电流和电压的输出范围,使其能够满足更广泛的测试需求&am…

自由场、半自由场、扩散场

按声场性质可以将声场分为三类:自由声场、半自由声场、扩散声场 分别对应着全消声室,半消声室,混响室 自由声场: 声源在均匀、各向同性媒介中传播时,不计边界影响的声场,此时声场中只有直达声没有反射声。…

数据库系统原理实验报告4 | 数据完整性

整理自博主本科《数据库系统原理》专业课自己完成的实验报告,以便各位学习数据库系统概论的小伙伴们参考、学习。 专业课本: ———— 本次实验使用到的图形化工具:Heidisql 目录 一、实验目的 二、实验内容 1、建表 2、对1题中创建的Stud…