Linux配置和管理设备映射多路径multipath

Linux配置和管理设备映射多路径multipath

(一)多路径管理软件的由来
在企业中,服务器和存储通常是分开放置的,服务器上的硬盘通常用于安装操作系统和应用软件,业务数据存储在单独的存储设备上,那么,服务器是如何连接到存储的呢?根据存储协议,通常有两种情况:

[En]

In an enterprise, the server and storage are usually placed separately, the hard disk on the server is usually used to install the operating system and application software, and the business data is stored on a separate storage device, so, how is the server connected to the storage? According to the storage protocol, there are often two scenarios:

  • NAS存储(Network Attached Storage,网络附加存储),NAS存储使用基于文件的协议(例如CIFS、NFS),其它计算机通过以太网访问NAS存储,类似于一个共享目录,NAS存储好处多多,网络适配性好,只要网络互通,就能访问,NAS存储价格也较为便宜,缺点是相对SAN而言,网络带宽受限、网络延迟较大,性能较差。
  • SAN存储(Storage Area Network,存储区域网络),SAN存储基于Fabric协议,分配给其它机器的是LUN,SAN存储可以来理解为一个虚拟的磁盘。通常价格昂贵,性能较好。

对于NAS存储,只要使用IP访问即可,但是对于SAN存储,需要专业的硬件支持,主要是SAN HBA卡和SAN交换机。
在SAN网络中,大企业为了业务稳定,不因硬件损坏而导致业务停滞,在硬件采购时,往往采用”双份”的策略:2个网卡做绑定、2个CPU、2个风扇、2个HBA卡、2个SAN交换机等等。为了保障存储的高可用性,存储、SAN交换机、服务器架构通常如下:
架构1:一台服务器拥有2个HBA卡,1台SAN交换机,2个存储控制器控制1台存储,这样就形成了2条链路。
hba1

Linux配置和管理设备映射多路径multipath

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

Linux配置和管理设备映射多路径multipath

这种多条链路架构带来的 好处有:
–冗余。每个存储都有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磁盘对外提供服务,解决了主机重复识别磁盘的问题。

(二)设备映射多路径问题展现
在《存储系列1-openfiler开源存储管理平台实践》文章第四节”(4.1)使用openfiler对外提供块存储(类似SAN存储)”分配存储之后,我们可以看到这样的情况:

在存储端分配了3个lv,大小分别为1GB、2GB、10GB。

Linux配置和管理设备映射多路径multipath

但是在客户机上却增加了6个磁盘,多了1倍的数量,仔细查看,发现sdb和sdc、sdd和sde、sdf和sdg大小相同。

Linux配置和管理设备映射多路径multipath

再确认磁盘路径确认磁盘分配,发现如下,客户机通过2条路径访问同一个磁盘,因为路径不同,最终同一个LUN分配了2个不同的盘符。

Linux配置和管理设备映射多路径multipath

这里整理一下存储、链路、主机之间的对应关系,如下:

Linux配置和管理设备映射多路径multipath

同一块磁盘对应2个或以上盘符,用户在使用时如果稍不注意,肯定会出问题,因此需要使用多路径软件将多个盘符映射到同一个盘符下面。

(三)常见的多路径配置管理软件
通过上面的介绍,您一定已经了解了多路径存储带来的问题。为了解决多路径问题,各系统厂商和存储厂商都开发了多路径设备管理软件。常见的多路径设备管理软件有:

[En]

Through the above introduction, you must already know the problems caused by multipath storage. In order to solve the multi-path problem, various system manufacturers and storage manufacturers have developed multi-path device management software. Common multipath device management software are:

  • EMC存储厂商的PowerPath
  • Windows系统的MPIO
  • HP-UNIX系统的Native_Multi-Path
  • Linux系统的DM Multipath

下面以Linux的DM Multipath为例,学习多路径软件的配置和管理。

(四)设备映射多路径软件安装
我使用的环境为:
–存储服务器(iSCSI target):使用openfiler提供iSCSI存储
–客户机服务器(iSCSI initiator):centos7(redhat7也一样)
存储服务器openfiler的存储分配方法不再赘述,可以参考文章:《存储系列1-openfiler开源存储管理平台实践》。接下来我们在客户机安装多路径软件

# 安装多路径软件
yum install -y device-mapper*

# 将多路径软件添加至内核模块中
modprobe dm-multipath
modprobe dm-round-robin

# 检查内核添加情况
[root@mysql8 ~]# lsmod |grep multipath
dm_multipath 27427 6 dm_round_robin,dm_service_time
dm_mod 123303 23 dm_round_robin,dm_multipath,dm_log,dm_mirror,dm_service_time

# 设置开机自启动
systemctl enable multipathd.service

# 检查开机自启动
[root@mysql8 ~]# systemctl list-unit-files|grep multipath
multipathd.service enabled

# 创建多路径参数配置文件,该语句会创建multipath的参数配置文件:/etc/multipath.conf
/sbin/mpathconf --enable

# 启动多路径软件multipathd
systemctl start multipathd.service

在安装并启动multipath之后,我们并没有做任何的参数配置,但是可以发现,主机上多了3块磁盘:/dev/mapper/mpathe、/dev/mapper/mpathf、/dev/mapper/mpathg。我们知道,多路径软件就是用来管理磁盘映射的,把主机识别到的6块磁盘映射为了3块磁盘。

[root@testserver by-id]# fdisk -l
... 略 ...

Disk /dev/mapper/mpathe: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/mpathf: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/mpathg: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

那么,这3块磁盘又和主机识别到的6块磁盘时上面关系呢?我们可以使用多路径查看命令来确认:

# 可以看到mpathe与sdc和sdb对应同一块磁盘
[root@testserver by-id]# multipath -ll
mpathe (14f504e46494c45523838576731322d526231352d73794852) dm-3 OPNFILER,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 4:0:0:1 sdc 8:32 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 3:0:0:1 sdb 8:16 active ready running
mpathg (14f504e46494c45526463737145732d426f516a2d6f4c416d) dm-5 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 4:0:0:3 sdg 8:96 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 3:0:0:3 sdf 8:80 active ready running
mpathf (14f504e46494c4552336b535576772d6f5a556b2d5844746e) dm-4 OPNFILER,VIRTUAL-DISK
size=2.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 4:0:0:2 sde 8:64 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 3:0:0:2 sdd 8:48 active ready running
</code></pre>
<p>最终,我们看到的磁盘关系就是这样的了</p>
<p><img alt="Linux配置和管理设备映射多路径multipath" src="https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20220813/823295-20201028205505245-1156123035.png" /></p>
<p><strong>总结一下</strong>:存储端划分了3个LUN(可以理解为逻辑卷lv,或者磁盘都行),在通过2条存储链路映射之后,在主机端识别到了6个磁盘,2个盘符对应同一个LUN,在使用多路径软件multipath做了映射之后,6个磁盘映射为了3个磁盘,最终结果为:存储的lvdata1对应mpathe、lvdata2对应mpathf、lvdata3对应mpathg。</p>
<p><strong>(五)设备映射多路径软件配置</strong>
在上一步中,我们并没有对multipath的参数配置文件作任何修改,启动multipath之后,就自动将重复的磁盘做了聚合映射,在这一章节。我们通过修改参数文件,了解一下multipath软件有哪些参数可以配置。
multipath软件的参数配置文件为 /etc/multipath.conf 。多路径配置文件主要分为以下几个部分:</p>
<ul>
<li>blacklist:多路径设备黑名单,该处的设备不会被多路径软件识别管理</li>
<li>blacklist_exceptions:根据blacklist部分中的参数列出不在黑名单中的设备</li>
<li>defaults:DM Multipath的常规配置</li>
<li>multipaths:各个独立多路径设备的特性设置,该部分参数会覆盖defaults和devices的参数</li>
<li>devices:各个存储控制器的设置,如果要使用非默认的存储设备,则可能需要创建devices子部份,该部分参数会覆盖defaults部分的参数</li>
</ul>
<p>如果同一个参数在defaults,devices,multipaths部分都进行了配置,则优先级从高到低为:multipaths,devices, defaults。</p>
<p>multipath默认配置文件如下:
<img alt="Linux配置和管理设备映射多路径multipath" src="https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20220813/ContractedBlock.gif" /></p>
<pre><code>[root@testserver ~]# cat /etc/multipath.conf
# This is a basic configuration file with some examples, for device mapper
# multipath.

#
# For a complete list of the default configuration values, run either
# multipath -t
# or
# multipathd show config
#
# For a list of configuration options with descriptions, see the multipath.conf
# man page

## By default, devices with vendor = "IBM" and product = "S/390.*" are
## blacklisted. To enable mulitpathing on these devies, uncomment the
## following lines.

#blacklist_exceptions {
#    device {
#    vendor    "IBM"
#    product    "S/390.*"
#    }
#}

## Use user friendly names, instead of using WWIDs as names.

defaults {
user_friendly_names yes
find_multipaths yes
}
##
## Here is an example of how to configure some standard options.

##
#
#defaults {
#    polling_interval 10
#    path_selector    "round-robin 0"
#    path_grouping_policy    multibus
#    uid_attribute    ID_SERIAL
#    prio    alua
#    path_checker    readsector0
#    rr_min_io    100
#    max_fds    8192
#    rr_weight    priorities
#    failback    immediate
#    no_path_retry    fail
#    user_friendly_names    yes
#}
##
## The wwid line in the following blacklist section is shown as an example
## of how to blacklist devices by wwid. The 2 devnode lines are the
## compiled in default blacklist. If you want to blacklist entire types
## of devices, such as all scsi devices, you should use a devnode line.

## However, if you want to blacklist specific devices, you should use
## a wwid line. Since there is no guarantee that a specific device will
## not change names on reboot (from /dev/sda to /dev/sdb for example)
## devnode lines are not recommended for blacklisting specific devices.

##
#blacklist {
# wwid 26353900f02796769
#    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
#    devnode "^hd[a-z]"
#}
#multipaths {
#    multipath {
#    wwid    3600508b4000156d700012000000b0000
#    alias    yellow
#    path_grouping_policy    multibus
#    path_selector    "round-robin 0"
#    failback    manual
#    rr_weight    priorities
#    no_path_retry    5
#    }
#    multipath {
#    wwid    1DEC_____321816758474
#    alias    red
#    }
#}
#devices {
#    device {
#    vendor    "COMPAQ "
#    product    "HSV110 (C)COMPAQ"
#    path_grouping_policy    multibus
#    path_checker    readsector0
#    path_selector    "round-robin 0"
#    hardware_handler    "0"
#    failback    15
#    rr_weight    priorities
#    no_path_retry    queue
#    }
#    device {
#    vendor    "COMPAQ "
#    product    "MSA1000 "
#    path_grouping_policy    multibus
#    }
#}

blacklist {
}
</code></pre>
<p>View Code</p>
<p><strong>(5.1)配置文件黑名单(blacklist部分)</strong></p>
<p>如将 find_multipaths 参数设定为 yes,则您只需要将那些您不想使其具有多路径功能的多路径设备列入黑名单,通常不需要将设备列入黑名单。可以使用三种方法将设备列入黑名单。</p>
<p><strong>(5.1.1)根据WWID将设备列入黑名单</strong>
要根据WWID配置黑名单,需要在blacklist中添加WWID条目
例子:将WWID为14f504e46494c4552336b535576772d6f5a556b2d5844746e加入黑名单</p>
<pre><code>blacklist {
       wwid 14f504e46494c4552336b535576772d6f5a556b2d5844746e
}
</code></pre>
<p>实战过程:</p>
<pre><code># 1、添加黑名单之前[root@testserver ~]# multipath -ll
mpathe (14f504e46494c45523838576731322d526231352d73794852) dm-3 OPNFILER,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 4:0:0:1 sdc 8:32 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 3:0:0:1 sdb 8:16 active ready running
mpathg (14f504e46494c45526463737145732d426f516a2d6f4c416d) dm-5 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 4:0:0:3 sdg 8:96 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 3:0:0:3 sdf 8:80 active ready running
mpathf (14f504e46494c4552336b535576772d6f5a556b2d5844746e) dm-4 OPNFILER,VIRTUAL-DISK
size=2.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 4:0:0:2 sde 8:64 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 3:0:0:2 sdd 8:48 active ready running
# 2.使用wwid添加黑名单[root@testserver ~]# vim /etc/multipath.conf
blacklist {
       wwid 14f504e46494c4552336b535576772d6f5a556b2d5844746e
}
# 3.使新添加的黑名单生效
[root@testserver ~]# service multipathd reload
Reloading multipathd configuration (via systemctl):        [  OK  ]

# 4.再次查看多路径信息,mpathf磁盘已经不在了[root@testserver ~]# multipath -ll
mpathe (14f504e46494c45523838576731322d526231352d73794852) dm-3 OPNFILER,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 3:0:0:1 sdb 8:16 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 4:0:0:1 sdc 8:32 active ready running
mpathg (14f504e46494c45526463737145732d426f516a2d6f4c416d) dm-5 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 3:0:0:3 sdf 8:80 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 4:0:0:3 sdg 8:96 active ready running

NOTE:如何查看WWID

[root@testserver ~]# lsscsi -i
[0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda -
[2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 -
[3:0:0:1] disk OPNFILER VIRTUAL-DISK 0 /dev/sdb 14f504e46494c45523838576731322d526231352d73794852
[3:0:0:2] disk OPNFILER VIRTUAL-DISK 0 /dev/sdd 14f504e46494c4552336b535576772d6f5a556b2d5844746e
[3:0:0:3] disk OPNFILER VIRTUAL-DISK 0 /dev/sdf 14f504e46494c45526463737145732d426f516a2d6f4c416d
[4:0:0:1] disk OPNFILER VIRTUAL-DISK 0 /dev/sdc 14f504e46494c45523838576731322d526231352d73794852
[4:0:0:2] disk OPNFILER VIRTUAL-DISK 0 /dev/sde 14f504e46494c4552336b535576772d6f5a556b2d5844746e
[4:0:0:3] disk OPNFILER VIRTUAL-DISK 0 /dev/sdg 14f504e46494c45526463737145732d426f516a2d6f4c416d

(5.1.2)根据设备名称将设备列入黑名单
要根据设备名称配置黑名单,需要在blacklist中添加devnode条目
例子:将磁盘sdb和sdc加入黑名单

blacklist {
       devnode "sdb,sdc"
}

实战过程:

# 1.在上一步wwid的基础上添加设备名称黑名单,把sdb、sdc加入黑名单[root@testserver ~]# vim /etc/multipath.conf
blacklist {
       wwid 14f504e46494c4552336b535576772d6f5a556b2d5844746e
}

# 在上面的基础上多添加一个blacklist模块
blacklist {
       devnode "sdb|sdc"
}

# 2.使添加的黑名单生效[root@testserver ~]# service multipathd reload
Reloading multipathd configuration (via systemctl):        [  OK  ]

# 3.确认mpathe磁盘,已经识别不到了[root@testserver ~]# multipath -ll
Oct 23 15:24:49 | /etc/multipath.conf line 97, duplicate keyword: blacklist
mpathg (14f504e46494c45526463737145732d426f516a2d6f4c416d) dm-5 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 3:0:0:3 sdf 8:80 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 4:0:0:3 sdg 8:96 active ready running
</code></pre>
<p><strong>NOTE</strong>:默认情况下,以下 devnode 条目将会被列入默认黑名单中;因为这些条目而被列入黑名单的设备通常不支持 DM Multipath。如需在这些设备中启用 multipath,则需要在配置文件的 blacklist_exceptions 部分指定这些设备。</p>
<pre><code>blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^(td|ha)d[a-z]"
}
</code></pre>
<p><strong>(5.1.3)根据设备类型将设备列入黑名单</strong>
要根据设备类型配置黑名单,需要在blacklist中添加device条目
例子:将IBM 3S42存储和惠普的所有存储放入黑名单</p>
<pre><code>blacklist {
       device {
               vendor  "IBM"
               product "3S42"       #DS4200 Product 10
       }
       device {
               vendor  "HP"
               product "*"
       }
}
</code></pre>
<p><strong>(5.2)黑名单之外的设备(blacklist_exceptions部分)</strong>
如果有大量的设备,但只有一个设备想要设置为多路径,这是可以考虑将所有设备添加到黑名单blacklist中,然后在blacklist_exceptions中单独添加该设备。当在配置文件的 blacklist_exceptions 指定设备时,您必须以指定黑名单的相同方法来指定例外情况。
例子:把所有设备加入黑名单,然后将wwid为14f504e46494c4552336b535576772d6f5a556b2d5844746e的设备添加到黑名单之外</p>
<pre><code>blacklist{
       wwid *
}

blacklist_exceptions {
       wwid 14f504e46494c4552336b535576772d6f5a556b2d5844746e
}
</code></pre>
<p>实战过程:</p>
<pre><code># 1.将所有设备添加到黑名单blacklist中,然后在blacklist_exceptions中单独添加wwid为14f504e46494c4552336b535576772d6f5a556b2d5844746e的设备[root@testserver ~]# vim /etc/multipath.conf
blacklist{
       wwid *
}

blacklist_exceptions {
       wwid 14f504e46494c4552336b535576772d6f5a556b2d5844746e
}

# 2.使配置信息生效[root@testserver ~]# service multipathd reload
Reloading multipathd configuration (via systemctl):        [  OK  ]
# 3.可以看到,只有该wwid的设备能够识别到
[root@testserver ~]# multipath -ll
mpathf (14f504e46494c4552336b535576772d6f5a556b2d5844746e) dm-3 OPNFILER,VIRTUAL-DISK
size=2.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 3:0:0:2 sdd 8:48 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 4:0:0:2 sde 8:64 active ready running

(5.3)配置文件默认(defaults部分)
defaults部分时DM Multipath的常规属性配置,通常格式如下:

defaults {
        user_friendly_names     yes
        path_grouping_policy    multibus
}

defaults部分有较多的参数,主要参数有(这里主要记录常用的):
参数 解释

polling_interval 以秒(s)为单位指定两次路径检查的时间间隔 find_multipaths

设定多路径设备的模式。如果这个参数为yes,多路径将不会尝试为不在黑名单中的每个路径都创建设备,而是满足一下3个条件之一才创建设备:

  • 对于相同WWID设备,在黑名单指定的路径外还有2个或以上的路径
  • 用户通过使用multipath命令指定设备强制创建该设备
  • 路径拥有与之前创建的多路径设备相同的WWID。无论何时使用 find_multipaths 组件创建多路径设备后,多路径都会记住该设备的 WWID 以便在再次看到使用那个 WWID 的路径时自动创建设备。这可让您自动选择正确的所路径创建多路径设备而无需编辑多路径黑名单。

默认为no。 path_selector 指定I/O所使用路径算法,可能的值包括

  • round-robin 0:在路径中循环使用每个路径,像每个路径发送同样的I/O,默认;
  • queue-length 0:将下一组I/O请求发送到I/O队列最短的路径;
  • service-time 0:将下一组 I/O 发送到具有最短预计服务时间的路径

path_grouping_policy 用于指定分组策略,我的理解为指定多路径为active/active还是active/standby模式

  • failover:每个优先组群有一个路径。默认
  • multibus:所有有效路径在一个优先组中
  • group_by_serial:每个检测到的系列号有一个优先组群
  • group_by_prio:每个优先组群有一个路径优先值。优先权根据指定为 global、per-controller 或者 per-multipath 选项的调用程序决定
  • group_by_node_name:每个目标节点名有一个优先组

failback

管理路径群组出错切换,值有:

  • immediate:立即恢复到包含活跃路径的最高级别路径组群
  • manual:不需要立即恢复,只有在操作者干预的情况下发生恢复。默认
  • followover:指定当路径组的第一个路径成为活跃路径时应执行自动恢复。这可让节点在另一个节点请求故障修复时不会自动恢复。
  • 大于0的数字值指定推迟出错切换时间,以秒(s)表示。

user_friendly_names

  • 如果设置为yes,则该操作系统会使用文件/etc/multipath/bindings为该多路径分配一个持久且唯一的别名,格式为mpath n
  • 如果为no,则该系统使用WWID作为多路径的别名。默认
  • 在这两种情况下,你在这里指定的数值将被你在配置文件multipaths部分指定的别名覆盖

NOTE:如果为yes,多路径别名与wwid的关系:

[root@testserver ~]# cat /etc/multipath/bindings
... 略 ...

mpathe 14f504e46494c45523838576731322d526231352d73794852
mpathf 14f504e46494c4552336b535576772d6f5a556b2d5844746e
mpathg 14f504e46494c45526463737145732d426f516a2d6f4c416d

checker_timeout 路径检查器和排序器执行带显式超时SCSI命令的超时时间,以秒(s)为单位。默认是/sys/block/sdc/device/timeout的值 force_sync 如果将其设置为yes,则会阻止路径检查程序在异步(async)模式下运行。默认值为no。

NOTE:path_grouping_policy这个参数我的理解是用来做多路径的路径访问方式的,简单来说就是多条路径是以active/active这种负载均衡的方式工作,还是以active/standby这种链路冗余的方式工作,我们不妨测试一下具体值的效果:

(1)当 path_grouping_policy=failover时,路径为active/standby

[root@testserver lib]# multipath -ll
Oct 23 16:49:17 | /etc/multipath.conf line 96, duplicate keyword: defaults
mpathe (14f504e46494c45523838576731322d526231352d73794852) dm-4 OPNFILER,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| - 3:0:0:1 sdb 8:16 active ready running
-+- policy='service-time 0' prio=1 status=enabled
  - 4:0:0:1 sdc 8:32 active ready running
</code></pre>
<p>(2)当 path_grouping_policy=multibus时,路径为active/active</p>
<pre><code>[root@testserver lib]# multipath -ll
Oct 23 16:49:47 | /etc/multipath.conf line 96, duplicate keyword: defaults
mpathe (14f504e46494c45523838576731322d526231352d73794852) dm-4 OPNFILER,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
-+- policy='service-time 0' prio=1 status=active
|- 3:0:0:1 sdb 8:16 active ready running
- 4:0:0:1 sdc 8:32 active ready running
</code></pre>
<p><strong>(5.4)多路径设备配置属性(multipaths部分)</strong>
在multipath.conf配置文件multipaths部分可为每个多路径设备设置(可以理解为一个多路径磁盘)的属性,这些属性只适用于一个特定的multipath。这部分有较多的参数属性,其中大部分参数都与上面的defaults部分重合,这里只介绍2个参数。
<strong>参数</strong> <strong>解释</strong></p>
<p>wwid 指定使用multipath属性的多路径设备的符号名称,这个参数在multipath部分是必须的。 alias</p>
<p>指定使用multipath属性的多路径设备的符号名称,如果使用了user_friendly_names,这里不要将别名设置为mpath n,这样可能会与自动分配的友好用户名冲突,进而给出不正确的设备节点名称。</p>
<p>实战过程:</p>
<p>将wwid为14f504e46494c45523838576731322d526231352d73794852的存储名称从mpathe改为datadisk1,以便于用户识别,将路径选择方式改为failover</p>
<pre><code># 1.添加multipaths之前的多路径信息[root@testserver device]# multipath -ll
Oct 28 14:29:48 | /etc/multipath.conf line 96, duplicate keyword: defaults
mpathe (14f504e46494c45523838576731322d526231352d73794852) dm-3 OPNFILER,VIRTUAL-DISK
size=1.0G features='0' hwhandler='0' wp=rw
-+- policy='service-time 0' prio=1 status=active
  |- 3:0:0:1 sdb 8:16 active ready running
  - 4:0:0:1 sde 8:64 active ready running
mpathg (14f504e46494c45526463737145732d426f516a2d6f4c416d) dm-5 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
-+- policy='service-time 0' prio=1 status=active
  |- 3:0:0:3 sdd 8:48 active ready running
  - 4:0:0:3 sdg 8:96 active ready running

# 2.添加multipaths部分信息
[root@testserver ~]# vim /etc/multipath.conf
multipaths {
       multipath {
              wwid                  14f504e46494c45523838576731322d526231352d73794852
              alias                 datadisk1
              path_grouping_policy  failover
              path_selector         "round-robin 0"
              failback              manual
              rr_weight             priorities
              no_path_retry         5
       }
}

# 3.使配置信息生效
[root@testserver ~]# service multipathd reload
Reloading multipathd configuration (via systemctl):        [  OK  ]
[root@testserver ~]# vim /etc/multipath.conf

# 4.查看修改之后的多路径信息
[root@testserver device]# multipath -ll
Oct 28 14:42:45 | /etc/multipath.conf line 96, duplicate keyword: defaults
datadisk1 (14f504e46494c45523838576731322d526231352d73794852) dm-3 OPNFILER,VIRTUAL-DISK
size=1.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| - 3:0:0:1 sdb 8:16 active ready running
-+- policy='round-robin 0' prio=1 status=enabled
  - 4:0:0:1 sde 8:64 active ready running
mpathg (14f504e46494c45526463737145732d426f516a2d6f4c416d) dm-5 OPNFILER,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
-+- policy='service-time 0' prio=1 status=active
  |- 3:0:0:3 sdd 8:48 active ready running
  - 4:0:0:3 sdg 8:96 active ready running

# 5.通过fdisl -l也可以看到磁盘名称已经发生变化
[root@testserver device]# fdisk -l
...

Disk /dev/mapper/datadisk1: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

(5.5)多路径存储设备属性(devices部分)
在multipath.conf配置文件devices部分可为每个存储设备设置(可以理解为存储厂商的一款存储产品)的属性。多路径配置中默认包含许多的存储产品,要查看已经包含了哪些存储产品,可以使用以下查看:

multipathd show config
# 或者
multipath -t

正常情况下,无需修改这些存储设备的默认值,如果想要修改可以在配置文件的devices部分添加条目来覆盖修改。对于不在multipath默认里面的存储设备,也可以在devices部分手动添加一个设备。

这部分有较多的参数属性,其中大部分参数都与上面的defaults、multipaths部分重合,这里只介绍几个参数。
参数 解释

ventor 存储设备厂商名称,可查看/sys/block/sdc/device/vendor product

存储设备产品名称,可查看/sys/block/sdc/device/model

alias_prefix

这个设备使用的user_friendly_name前缀,而不是默认的mpath。

参考配置:

device {
        vendor            "COMPAQ"
        product            "MSA1000"
        path_grouping_policy    multibus
        path_checker        tur
        rr_weight        priorities
    }

(六)设备映射多路径软件管理及故障排除
(6.1)multipathd启动与关闭

multipathd启动与关闭命令如下:

[root@testserver mapper]# service multipathd
Usage: /etc/init.d/multipathd {start|stop|force-stop|status|restart|force-restart|condrestart|reload}

# 启动
service multipathd start

# 关闭
service multipathd stop

# 重新启动
service multipathd restart

# 不重启multipathd使修改的参数生效
service multipathd reload

(6.2)multipath命令
选项 描述

-l 显示来自 sysfs 和设备映射器的当前多路径配置 -ll 显示来自 sysfs 、设备映射器以及系统中其他所有可用组件的当前多路径配置 -f device 删除命名的多路径设备 -F 删除所有不使用的多路经设备 -w device 从 wwids 文件中删除指定设备的 wwid。 -W 重新设定 wwids 文件使其只包含当前 multipath 设备

(6.3)multipathd命令
可以使用multipathd命令管理multipathd守护进程。关于multipathd命令的使用,可以使用命令”man multipathd”查看手册,或者使用”multipathd show”命令也会有提示。

[root@testserver mapper]# multipathd show maps format "%n %w %d %s"
name uuid sysfs vend/prod/rev
datadisk1 14f504e46494c45523838576731322d526231352d73794852 dm-3 OPNFILER,VIRTUAL-DISK
mpathf 14f504e46494c4552336b535576772d6f5a556b2d5844746e dm-4 OPNFILER,VIRTUAL-DISK
mpathg 14f504e46494c45526463737145732d426f516a2d6f4c416d dm-5 OPNFILER,VIRTUAL-DISK

multipath -k命令是multipathd守护进程的交互式界面,使用help命令帮助,使用Ctrl+D命令退出交互

[root@testserver mapper]# multipathd -k
multipathd> help
multipath-tools v0.4.9 (05/33, 2016)
CLI commands reference:
list|show paths
list|show paths format $format
... 略 ...

map|multipath $map unsetprkey
forcequeueing daemon
restorequeueing daemon
multipathd> show maps    #查看映射关系
name sysfs uuid
datadisk1 dm-3 14f504e46494c45523838576731322d526231352d73794852
mpathf dm-4 14f504e46494c4552336b535576772d6f5a556b2d5844746e
mpathg dm-5 14f504e46494c45526463737145732d426f516a2d6f4c416d

(6.4)使用dmsetup命令查看设备映射条目
使用dmsetup找出操作系统内存设备映射条目与多路径设备的映射关系。以下命令显示所有映射设备及其主副号码,副号确定dm设备的名称,例如datadisk1的副号码为3,则datadisk1与/dev/dm-3对映。

[root@testserver ~]# dmsetup ls
datadisk1    (253:3)
centos-home    (253:2)
mpathg    (253:5)
mpathf    (253:4)
centos-swap    (253:1)
centos-root    (253:0)

设备映射关系也可以从这查看:

[root@testserver block]# cd /dev/mapper/
[root@testserver mapper]# ll
total 0
lrwxrwxrwx. 1 root root 7 Oct 28 15:48 centos-home -> ../dm-2
lrwxrwxrwx. 1 root root 7 Oct 28 15:48 centos-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Oct 28 15:48 centos-swap -> ../dm-1
crw-------. 1 root root 10, 236 Oct 28 15:48 control
lrwxrwxrwx. 1 root root 7 Oct 28 15:54 datadisk1 -> ../dm-3
lrwxrwxrwx. 1 root root 7 Oct 28 15:54 mpathf -> ../dm-4
lrwxrwxrwx. 1 root root 7 Oct 28 15:54 mpathg -> ../dm-5

【完】

Original: https://www.cnblogs.com/lijiaman/p/13893346.html
Author: gegeman
Title: Linux配置和管理设备映射多路径multipath

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10320/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • github使用ssh

    背景 我想使用jekins+github自动化部署,奈何因为墙的原因拉不下来 听闻大佬们说 使用ssh可以破解此问题,所以试一下。 生成本地git证书 1、配置本地git帐户 gi…

    2022年8月30日
    0320
  • [Git专题] 环境搭建

    环境搭建 在正式使用 Git 之前,首先应当安装 Git 并完成一些基础配置,本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法。 如果你使用的是基于 De…

    Linux 2022年9月10日
    0330
  • Ubuntu 自带 ffmpeg 截取视频

    ffmpeg -i RAW.mp4 -ss 00:03:40 -t 00:06:00 CLIP.mp4 从 00:03:40开始,截取时长 00:06:00 Original: h…

    Linux 2022年8月26日
    0240
  • 案例三:shell统计ip访问情况并分析访问日志

    题目要求 有日志 1.log,部分内容如下: 112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com&q…

    Linux 2022年8月20日
    0330
  • linux下的nginx重启命令常见以下3种:

    systemctl restart nginx service nginx restart /usr/sbin/nginx -s reload Original: https://…

    Linux 2022年8月8日
    0250
  • Linux文件属性详述

    一、文件属性信息概述 文件属性信息组成如下: 文件索引属性信息——inode编号; 文件类型权限信息; 文件链接属性信息——硬链接数; 文件属主信息——文件所有者; 文件属组属性信…

    Linux 2022年9月10日
    0250
  • linux指定cpu运行程序,linux:如何指定进程运行的CPU

    coolshell最新的文章《性能调优攻略》在”多核CPU调优”章节,提到”我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我…

    Linux 2022年8月11日
    0810
  • openEuler 20.03/21.03 – 华为欧拉开源版(CentOS 8 华为版开源版)下载

    开始 openEuler 之旅吧 openEuler 通过社区合作,打造创新平台,构建支持多处理架构、统一和开放的操作系统,推动软硬件应用生态繁荣发展。 好玩的活动停不下来 ope…

    Linux 2022年9月10日
    0650
  • github生成person access token

    github生成person access token目录github生成person access token1. 登录 github,点击右上角选择setting2. 左侧列表…

    Linux 2022年8月30日
    0260
  • Linux命令:ps -ef |grep java 一、ps -ef |grep java

    一、ps -ef |grep java 查看包含”java”的所有进程 二、涉及命令详解 ps命令将某个进程显示出来(是LINUX下最常用的也是非常强大的进…

    2022年8月26日
    0800
  • 解决 .gitignore(git文件忽略)idea

    发现.idea文件夹下的文件还有变更被提交,这是因为在使用gitignore之前,此文件就以及被跟踪了,这样的话需要移除跟踪,如下命令: 移除指定文件夹即文件夹下所有文件: 移除指…

    Linux 2022年8月30日
    0300
  • ubuntu20.04安装PyCharm Professional Edition

    ubuntu20.04安装PyCharm Professional Edition 1.PyCharm官网下载链接(选择2020.1版本下载):https://www.jetbra…

    2022年8月26日
    0330
  • linux之cp/scp命令+scp命令详解(转)

    姓名:CP [En] Name: cp 权限:所有用户 [En] Permissions: all users 使用方式: [En] Mode of use: cp [option…

    2022年8月8日
    0600
  • Linux内核机制—percpu

    定义percpu的变量并导出符号 DEFINE_PER_CPU(struct percpu_test, pt);EXPORT_PER_CPU_SYMBOL(pt); Origina…

    Linux 2022年8月26日
    0440
  • http代理连接

    基于Linux服务器的http代理连接 1. 准备工作 &#x76EE;&#x6807;&#x670D;&#x52A1;&#x5668; &…

    Linux 2022年9月10日
    0210
  • ubuntu16.04 server 安装经典桌面环境 Gnome 桌面

    由于新安装的系统,So第一步: cpp;gutter:true;</p> <h1>升级系统</h1> <p>sudo apt-get…

    Linux 2022年8月26日
    0270
  • Linux怎么查看一个文件夹的大小

    Linux怎么查看一个文件夹的大小 转载 wx5e46005fc4d212021-08-15 16:19:12©著作权 文章标签 当前目录 文件夹大小 子目录 指定目录 文章分类 …

    2022年8月11日
    01330
  • Linux休眠与唤醒—wakelock唤醒锁与autosleep功能使用

    一、Linux系统休眠在嵌入式设备中由于省电功耗等原因我们需要让系统在不忙的时候进入休眠模式,Linux pm core提供给我们wakelock及autoslepp内核休眠机制。…

    Linux 2022年8月26日
    0420
  • firewalld dbus接口使用指南

    Overview firewalld,一个基于动态区的iptables/nftables守护程序,自2009年左右开始开发,CentOS7基于 firewalld-0.6.3 , …

    Linux 2022年9月10日
    0200
  • linux 学习一:安装jdk和tomcat

    使用secureCRT 一、首先安装centos的rzsz、 1.yum自动安装:(yum安装rzsz) yum install lrzsz 2.手动安装方法如下:(包有问题,还是…

    Linux 2022年8月26日
    0290
  • Git 更新操作

    修改现有函数 [tom@CentOS ~]$ git clone gituser@git.server.com:project.git 上面的命令会产生以下结果。 Initiali…

    Linux 2022年8月30日
    0260
  • git 创建分支并切换

    git checkout -b fix/base //创建分支 git branch -av 查看所有分支 git checkout master //切换分支 Original:…

    Linux 2022年8月30日
    0250
  • Tomcat 介绍及使用教程

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 1. Tomcat 介绍 Apache Tomcat 是由 Apache Software Foundation(ASF)开发的…

    Linux 2022年9月10日
    0260
  • Redis之事务

    一.是什么 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 [En] You can execute …

    Linux 2022年9月14日
    0300
  • deepin linux学习笔记

    linux给一般用户的感觉就是黑客使用的系统。但是国产deepin在家用市场作得还不错,我现在使用下来,写博客,看B站,查找资料貌似没有什么障碍。这个deepin创新的地方是自带了…

    Linux 2022年8月20日
    0280
  • 记一次 GitLab 的迁移过程

    1. 迁移背景 2. GitLab 整体架构介绍 3. GitLab 安装 配置选择 安装方式选择 安装的网络区域 安装 GitLab GitLab 常用命令 配置管理员账号密码 …

    Linux 2022年8月30日
    0300

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部