Linux服务管理-多路径multipath

多路径Multipath

概述

多路径(Multipath)技术,特别是在存储系统中,是一种提高可靠性和性能的重要手段。多路径技术允许服务器通过多条物理路径连接到存储设备。这些路径可以是包含独立电缆、交换机和控制器的物理SAN连接。

多路径技术主要实现以下功能:

  1. 故障切换与恢复:通过提供路径冗余,当某条路径出现故障时,系统可以自动切换到其他备用路径,确保数据访问的连续性。

  2. 负载均衡:可以将I/O操作以轮询(round-robin)或其他方式分布到所有路径中,从而优化存储设备的性能。

  3. 磁盘虚拟化:将多个物理磁盘设备虚拟化为一个或多个逻辑设备,简化存储管理。

技术原理与组件

  1. Device Mapper:Device Mapper是Linux内核中的一个组件,它提供了设备映射的框架。多路径(DM-Multipath)是Device Mapper的一个目标(target)驱动,用于实现多路径功能。

  2. multipathd守护进程:该守护进程负责监控路径状态,并根据配置文件中定义的策略进行故障切换和负载均衡。

  3. multipath.conf配置文件:该文件用于定义多路径设备的配置,包括黑名单、默认设置、多路径设备和设备设置等。

配置与管理

在Linux系统中,配置多路径通常涉及以下步骤:

  1. 安装多路径软件:在RHEL/CentOS系统中,可以使用yumdnf命令安装device-mapper-multipath软件包。在Ubuntu系统中,可以使用apt-get命令安装multipath-toolsmultipath-tools-boot软件包。

  2. 创建或修改配置文件:默认情况下,可能没有/etc/multipath.conf配置文件。可以使用mpathconf命令生成配置文件,或者从模板文件中复制。配置文件定义了哪些设备应该被多路径处理,以及如何处理它们。

  3. 启动multipathd服务:使用systemctl命令启动并设置multipathd服务为自动启动。

  4. 验证配置:使用multipath -ll命令查看多路径设备的状态和配置。

实验

在vm1和vm2上各添加一张网卡(仅主机、桥接、nat都可以)

此处添加了仅主机网卡:dhcp获取地址(实际环境静态配置)

Vm1:

Ens160:192.168.99.132

Ens224:192.168.139.136

Vm2:

Ens160:192.168.99.131

Ens224:192.168.139.137

创建iscsi共享

[root@vm1 ~]# setenforce 0
[root@vm1 ~]# firewall-cmd --set-default-zone=trusted
[root@vm1 Desktop]# du -sh /file1 
100M    /file1
[root@vm1 Desktop]#

重启服务

[root@vm1 ~]# systemctl restart target #默认监听所有网卡的3260端口

vm2使用两张网卡分别登录

[root@vm2 ~]# iscsiadm -m discovery -t st -p 192.168.99.132
192.168.99.132:3260,1 iqn.2024-04.com.test:server
[root@vm2 ~]# iscsiadm -m discovery -t st -p 192.168.139.136
192.168.139.136:3260,1 iqn.2024-04.com.test:server
[root@vm2 ~]#

注:此时一个共享,通过两个路径登录,会被识别为两个设备,但实际上是一个设备

配置设备映射器多路径

使用设备映射器多路径(DM Multipath),您可以将服务器节点和存储阵列间的多个 I/O 路径配置为单一设备。这些 I/O 路径是可包含独立电缆、交换机和控制器的物理 SAN 连接。

多路径聚合了 I/O 路径并生成由聚合路径组成的新设备。

DM 多路径提供

  • 冗余

    DM 多路径可在主动/被动(active/passive)配置中提供故障切换。在主动/被动配置中,任何时候路径的子集都只用于 I/O 。如果 I/O 路径的任何元素(如电缆、交换机或控制器)出现故障,DM 多路径会切换到备用路径。

  • 改进的性能

    可将 DM 多路径配置为主动/主动模式,其中将 I/O 以轮循(round-robin)方式分布到所有路径中。在某些配置中,DM-Multipath 可以检测 I/O 路径上的加载,并动态重新平衡负载。

vm2先登出

# 安装相应软件包
[root@vm2 ~]# yum -y install device-mapper-multipath

您可以使用 mpathconf 工具设置 DM 多路径。这个工具会根据以下情况创建或编辑 /etc/multipath.conf 多路径配置文件:

  • 如果 /etc/multipath.conf 文件已存在,则 mpathconf 实用程序将编辑该文件。

  • 如果 /etc/multipath.conf 文件不存在,则 mpathconf 实用程序将从头开始创建 /etc/multipath.conf 文件。

# 生成配置文件:
[root@vm2 ~]# ls /etc/multipath/
[root@vm2 ~]# find / -name "multipath.conf"
/usr/lib/tmpfiles.d/multipath.conf
/usr/share/doc/device-mapper-multipath/multipath.conf
[root@vm2 ~]# cat /usr/share/doc/device-mapper-multipath/multipath.conf #配置示例
# 可以直接将上述文件复制到/etc/下
# 也可以使用命令生成:
[root@vm2 ~]# mpathconf --enable
[root@vm2 ~]# ls /etc/multipath.conf
/etc/multipath.conf
[root@vm2 ~]# iscsiadm -m node -T iqn.2024-04.com.test:server -l 登录
[root@vm2 ~]# lsblk /dev/sd*
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100M  0 disk 
└─sda1   8:1    0   50M  0 part 
sda1     8:1    0   50M  0 part 
sdb      8:16   0  100M  0 disk 
└─sdb1   8:17   0   50M  0 part 
sdb1     8:17   0   50M  0 part 
[root@vm2 ~]#
​
# 获取设备wwid:systemd-udev包提供/usr/lib/udev/scsi_id
[root@vm2 ~]# ls /usr/lib/udev/scsi_id 
/usr/lib/udev/scsi_id
[root@vm2 ~]# ln -s /usr/lib/udev/scsi_id /usr/bin/scsi_id
[root@vm2 ~]# scsi_id --whitelisted --device=/dev/sda
36001405f6d0773377df44baaaa4ffac1
[root@vm2 ~]# scsi_id --whitelisted --device=/dev/sdb
36001405f6d0773377df44baaaa4ffac1
[root@vm2 ~]# 
# sda和sdb的wwid一致,证明是同一个设备
​
# 修改配置文件如下:
[root@vm2 ~]# vim /etc/multipath.conf 
[root@vm2 ~]# cat /etc/multipath.conf
defaults {user_friendly_names yesfind_multipaths yesenable_foreign "^$"
}
blacklist_exceptions {property "(SCSI_IDENT_|ID_WWN)"
}
blacklist {
}
multipaths {multipath {wwid      36001405f6d0773377df44baaaa4ffac1alias     blue}
}
[root@vm2 ~]#
​
# 可以使用multipathd show config或multipath -t查看默认配置的值:
[root@vm2 ~]# multipath -t 输出略
# 重启服务
[root@vm2 ~]# systemctl restart multipathd.service

验证

[root@vm2 ~]# lsblk /dev/sd*
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda         8:0    0  100M  0 disk  
└─blue    253:3    0  100M  0 mpath └─blue1 253:4    0   50M  0 part  
sdb         8:16   0  100M  0 disk  
└─blue    253:3    0  100M  0 mpath └─blue1 253:4    0   50M  0 part  
[root@vm2 ~]#
​
# 使用多路径设备挂载测试:
[root@vm2 ~]# ll /dev/mapper/blue
lrwxrwxrwx. 1 root root 7 Apr 29 09:28 /dev/mapper/blue -> ../dm-3
[root@vm2 ~]# ll /dev/mapper/blue1 
lrwxrwxrwx. 1 root root 7 Apr 29 09:28 /dev/mapper/blue1 -> ../dm-4
[root@vm2 ~]# mount /dev/mapper/blue1 /mnt
[root@vm2 ~]# ls /mnt/
vm2.txt
[root@vm2 ~]# multipath -ll
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 2:0:0:0 sda     8:0   active ready running
`-+- policy='service-time 0' prio=50 status=enabled`- 3:0:0:0 sdb     8:16  active ready running
[root@vm2 ~]#
​
# 测试关闭vm2的ens224网卡:
[root@vm2 ~]# nmcli connection down ens224
Connection 'ens224' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@vm2 ~]#
[root@vm2 ~]# multipath -ll
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 2:0:0:0 sda     8:0   active ready running
`-+- policy='service-time 0' prio=50 status=enabled`- 3:0:0:0 sdb     8:16  active ready running
[root@vm2 ~]#
[root@vm2 ~]# touch /mnt/test.txt 可以正常读写
[root@vm2 ~]# echo 123 > /mnt/test.txt
[root@vm2 ~]# cat /mnt/test.txt
123
[root@vm2 ~]# nmcli connection down ens160
[root@vm2 ~]# multipath -ll
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:0 sda     8:0   failed faulty running
`-+- policy='service-time 0' prio=0 status=enabled`- 3:0:0:0 sdb     8:16  active faulty running
[root@vm2 ~]#
[root@vm2 ~]# nmcli connection up ens224
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@vm2 ~]# multipath -ll
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 2:0:0:0 sda     8:0   failed faulty running
`-+- policy='service-time 0' prio=50 status=active`- 3:0:0:0 sdb     8:16  active ready running
[root@vm2 ~]#
[root@vm2 ~]# nmcli connection up ens160 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
[root@vm2 ~]# multipath -ll
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=enabled
| `- 2:0:0:0 sda     8:0   active ready running
`-+- policy='service-time 0' prio=50 status=active`- 3:0:0:0 sdb     8:16  active ready running
[root@vm2 ~]#
# 此时默认是主备的状态

配置算法为轮询

[root@vm2 ~]# cat /etc/multipath.conf | grep -v ^# | grep -v ^$
defaults {user_friendly_names yesfind_multipaths yesenable_foreign "^$"
}
blacklist_exceptions {property "(SCSI_IDENT_|ID_WWN)"
}
blacklist {
}
multipaths {multipath {wwid      36001405f6d0773377df44baaaa4ffac1alias     bluepath_grouping_policy    multibuspath_checker            readsector0path_selector           "round-robin 0"rr_weight               prioritiesno_path_retry           5}
}
[root@vm2 ~]# systemctl restart multipathd.service
[root@vm2 ~]# multipath -ll
Apr 29 14:12:20 | /etc/multipath.conf line 28, invalid keyword in the multipath section: path_checker
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='round-robin 0' prio=50 status=enabled|- 2:0:0:0 sda     8:0   active ready running`- 3:0:0:0 sdb     8:16  active ready running
[root@vm2 ~]#
[root@vm2 ~]# cat /etc/multipath.conf | grep path_grouping_policy#path_grouping_policy    multibus 注释此行
[root@vm2 ~]#
[root@vm2 ~]# multipath -ll
Apr 29 14:13:45 | /etc/multipath.conf line 28, invalid keyword in the multipath section: path_checker
blue (36001405f6d0773377df44baaaa4ffac1) dm-3 LIO-ORG,file1
size=100M features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=enabled
| `- 2:0:0:0 sda     8:0   active ready running
`-+- policy='round-robin 0' prio=50 status=enabled`- 3:0:0:0 sdb     8:16  active ready running
[root@vm2 ~]#

具体配置含义参考:配置设备映射器多路径 | Red Hat Product Documentation

作业

准备两台虚拟机vm1、vm2,各两张网卡,vm1添加一块20G的硬盘

  1. vm1创建1个200M的文件,创建一个分区(用第二块硬盘) 配置iscsi target目标,共享文件和分区,acl自定义

  2. 在客户端,配置多路径,发现并登录共享,要求共享的文件识别为mpatha,以主备的形式存在,共享的分区识别为mpathb,path_grouping_policy使用multibus,path_selector使用round-robin 0 格式化并挂载mpatha到自己创建的目录中,测试目录可写 格式化并挂载mpathb到指定目录中,使mariadb的数据存储在vm1中。

  3. 配置mpatha和mpathb的持久挂载。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

省级绿色金融指数数据(1990-2021年)

绿色信贷是指银行在信贷业务中采纳环境标准,对污染企业的资金进行限制,同时对环保企业给予扶持。这种模式旨在促使贷款企业承担环境责任,实现节能减排,优化产业结构,以及改变经济增长方式。 1990-2021年省级绿色金融指…

【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 select 语句是 Go 的一种控制结构,用于等待多个通道操作。它类似于 s…

Unity资源打包Addressable AA包

从零到一 很多资料都是通过一步步设置讲解的,有时很想先快速实现,再了解细节。 下面就是远程加载Cube.prefab然后实例化简单的代码。 代码中可以不需要远程的网址,不需要资源下载的位置,不需要判断是否已经下载到本地。 那是如…

Microsoft Visual C++ 安装失败 0x80070666

“0x80070666”错误通常在尝试安装 Microsoft Visual C、Lumberyard 或类似的分发包时发生。该错误信息通常在安装过程的开始阶段就被报告。此问题并非特定于某一Windows版本,已经确认在Windows 7、Windows 8.1和Windows 10中均会发生。 0x80070666 错误在安装 Micr…

netcat工具安装和使用

netcat是一个功能强大的网络实用工具,可以从命令⾏跨⽹络读取和写⼊数据。 netcat是为Nmap项⽬编写的,是⽬前分散的Netcat版本系列的经典。 它旨在成为可靠的后端⼯具,可⽴即为其他应⽤程序和⽤户提供⽹络连接。 一,下载安装 1&a…

带隙基准学习笔记一

1.带隙基准原理: 带隙基准电压源采用BJT,利用其基极-发射极电压的负温度系数和两个不同的BJT基极-发射极电压之差的正温度系数用于获得温度系数为零的基准电压源,因为最终计算的输出电压接近硅晶体的一个带隙电压,所以被称为带隙…

使用 Node.js 了解 MVC 模式

模型-视图-控制器 (MVC) 模式是 Web 开发中最流行的架构模式之一。通过将应用程序划分为三个相互关联的组件(模型、视图和控制器),MVC 促进了有组织、可维护和可扩展的代码。Node.js 具有异步处理和庞大的生态系统&…

35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具

PhotoPrism 简介 PhotoPrism[1] 是一个为去中心化网络设计的AI照片应用,它利用最新技术自动标记和查找图片,实现自动图像分类与本地化部署,你可以在家中、私有服务器或云端运行它。 项目特点 主要特点 浏览所有照片和视频,无需担心RAW转换、重复项或视频格式。 使用强大的…

VMware虚拟机安装Win7专业版保姆级教程(附镜像包)

一、Win7镜像下载: 链接:https://pan.baidu.com/s/1tvN9hXCVngUzpIC6b2OGrA 提取码:a66H 此镜像为Win7专业版(收藏级镜像 已自用几年),官方纯净系统没有附带任何其他第三方软件。 二、配置虚拟机 1.创建新的虚拟机。 这里我们以最新的VMware…

中国前首富胡志标受邀出席创客匠人“全球创始人IP领袖高峰论坛”

创客匠人正式官宣!原爱多VCD创始人、中国前首富胡志标受邀出席创客匠人5000人“全球创始人IP领袖高峰论坛”,将与我们携手共赴这场商业巅峰盛宴。 由创客匠人打造的“全球创始人IP领袖高峰论坛”将在2024年12月26日-28日在厦门市国际博览会议中心如期举…

TCP可靠连接的建立和释放,TCP报文段的格式,UDP简单介绍

TCP连接的建立(三次握手) 建立连接使用的三报文 SYN 报文仅用于 TCP 三次握手中的第一个和第二个报文(SYN 和 SYN-ACK),用于初始化连接的序列号。数据传输阶段不再使用 SYN 标志。 SYN 报文通常只携带连接请求信息&a…

flink 同步oracle11g数据表到pg库

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalldvi /etc/selinux/config 修改为disabled2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署postgresql 看需求安装pg库…

012_SSH_Mysql网上订餐系统(论文+程序)_lwplus87

摘 要 本文讲述了基于JSP技术构建的网上订餐系统的设计与实现。所谓的网上订餐系统是通过网站推广互联企业的商品和技术服务,并使客户随时可以了解企业和企业的产品,为客户提供在线服务和订单处理功能。 从长期的战略目标来说,网站不仅是…

ASR 点亮闪光灯和后摄对焦马达

ASR翱捷科技 ASR kernel 5.10 android14 ASR EVB平台 ASR 原理图 闪光灯是gpio控制 1.驱动 路径:asr\kernel\linux\drivers\media\platform\asr-mars11\flash\leds-gpio-flash.c 驱动加载后生成设备节点/sys/class/leds/torch 和/sys/class/leds/flash。 Makefile Kconfig…

Linux中线程的基本概念与线程控制

Linux操作系统中线程 1、进程指的是加载进内存的程序,进程 内核数据结构 进程代码和数据 2、进程在执行ABCD四个函数时是一个单执行流,而如果想让AB函数和CD函数并发执行,我们通常会创建一个子进程,但这意味着需要创建新的进程…

初级数据结构——单向链表

前言 单向链表示最基础的数据结构之一,它也是我们学习开始学习数据结构的第一个必须要掌握的数据结构,学习数据结构一定是由浅到深,所以我们最好是先学习简单的在学习有难度的,因为直接学习难的数据结构很容易劝退,让…

RTMP推流H264和AAC

使用 librtmp 库实现推流h264和aac文件,rtmp服务器使用SRS搭建,拉流端使用VLC。其中用到的h264和aac文件解析部分代码在我其它博客中有写:C/C AAC文件解析-CSDN博客、C/C H264文件解析-CSDN博客。 推流部分源码(C)如下…

中国药品注册审批数据库- 药品注册信息查询与审评进度查询方法

药品的注册、审评审批进度信息是医药研发相关人员每天都会关注的信息,为了保证药品注册申请受理及审评审批进度信息的公开透明,CDE药审中心提供药品不同注册分类序列及药品注册申请受理的审评审批进度信息查询服务。但因CDE官网的改版导致很大一部分人不…

代数插值实验

实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握Lagrange插值算法、Newton插值算法,提高编程能力和解决插值问题的实践技能。 实验报告:根据实验情况和结果撰写并递交实验报告。 实验报告打印和装…

物联网智能技术的深入探讨与案例分析

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…