Linux 7 Multipath 多路径配置
1.安装程序
yum install device-mapper-multipath -y
2、将多路径软件添加至内核模块中
modprobe dm-multipath modprobe dm-round-robin
3、检查内核添加情况
lsmod |grep multipath 显示如下即可: dm_multipath 27427 3 dm_round_robin,dm_service_time dm_mod 123303 13 dm_round_robin,dm_multipath,dm_log,dm_mirror,dm_service_time
二、启动服务
1、启动服务并设置开机自启
systemctl enable multipathd --now
2、centos6 用以下方式
查看启动级别
chkconfig --list|grep multipathd multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
配置启动级别
chkconfig --level 2345 multipathd on chkconfig --list|grep multipathd multipathd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
三、编辑配置文件
1、手动创建/etc/multipath.conf配置文件并写入如下内容:
blacklist { wwid 3600508b1001c044c39717726236c68d5 } defaults { user_friendly_names yes polling_interval 10 queue_without_daemon no flush_on_last_del yes checker_timeout 120 } devices { device { vendor "3par8400" product "HP" path_grouping_policy asmdisk no_path_retry 30 prio hp_sw path_checker tur path_selector "round-robin 0" hardware_handler "0" failback 15 } } multipaths { multipath { wwid 360002ac0000000000000000300023867 alias mpathdisk01 } } 如果有两个或者多个就再加一条即可。 multipaths { multipath { wwid 360002ac0000000000000000400023867 alias mpathdisk02 } }
2、之后重启服务
systemctl restart multipathd
centos6用以下方式重启服务
/etc/init.d/multipathd restart
可以看到已经配置成功
[root@test ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 557G 0 disk ├─sda1 8:1 0 4G 0 part /boot └─sda2 8:2 0 553G 0 part ├─centos-root 253:0 0 488.9G 0 lvm / └─centos-swap 253:1 0 64G 0 lvm [SWAP] sdb 8:16 0 2T 0 disk └─mpathdisk01 253:2 0 2T 0 mpath sdc 8:32 0 2T 0 disk └─mpathdisk01 253:2 0 2T 0 mpath sdd 8:48 0 2T 0 disk └─mpathdisk01 253:2 0 2T 0 mpath sde 8:64 0 2T 0 disk └─mpathdisk01 253:2 0 2T 0 mpath
3、查看状态 multipath -d -l
[root@fceclpdatapool1 ~]# multipath -d -l mpathdisk01 (360002ac0000000000000000300023867) dm-2 3PARdata,VV size=2.0T features='1 queue_if_no_path' hwhandler='1 alua' wp=rw `-+- policy='service-time 0' prio=0 status=active |- 1:0:0:0 sdb 8:16 failed faulty running |- 1:0:1:0 sdc 8:32 active undef running |- 3:0:0:0 sdd 8:48 active undef running `- 3:0:1:0 sde 8:64 active undef running
4、重新扫描设备 multipath -v3
四、配置文件解析
字段解析
这段代码是一个 multipath.conf 配置文件,用于配置 Linux 操作系统中的多路径设备。以下是每个字段的含义:
blacklist:定义了一些被禁用的设备,只要 WWID 匹配了列表中的任何一个,它就会被黑名单所拒绝。
wwid:唯一标识多路径设备的 32 位十六进制字符串。
defaults:定义了一些默认设置,这些设置可以在其他部分被重写。
user_friendly_names:使多路径设备更易于理解和使用。
polling_interval:检查路径状态的频率(以秒为单位)。
queue_without_daemon:定义了当 multipathd 守护程序处于未运行状态时处理 I/O 请求的行为。
flush_on_last_del:在删除最后一个路径时是否刷新 IO 缓存。
checker_timeout:指定检查器超时的时间。
devices:包含一个或多个
device 块,每个块都描述了一个特定的多路径设备。
device:描述了一个多路径设备及其属性。
vendor、product:设备的制造商和产品名称。
path_grouping_policy:指定将路径分组到哪个组中。
no_path_retry:当无法访问某个路径时进行重试的次数。
prio:指定优先级算法,如 alua、emc、hp_sw 等。
path_checker:指定 IO 路径检查器的类型。
path_selector:指定选择路径的算法。例如,“round-robin 0” 表示依次将请求分发到每个路径上。
hardware_handler:指定用于处理硬件错误的脚本或程序。
failback:指定多长时间后进行故障切换。
multipaths:包含一个或多个
multipath 块,每个块都描述了一个设备的多个路径。
alias:为指定的多路径设备定义别名。
prio 是 multipath.conf 配置文件中的一个关键字,表示优先级算法。它可以指定多路径设备使用哪种算法来选择 I/O 请求路径。例如:
prio alua
以上配置指定了使用 Asymmetric Logical Unit Access(ALUA) 算法进行路径选择。这个算法主要用于 SAN 存储环境下,能够更好地处理存储阵列并发访问的问题。
除了 ALUA,还有其他一些可用的优先级算法,如:
emc:用于与 EMC 存储阵列配合使用。
hp_sw:用于与 HP 存储阵列配合使用。
rdac:用于与 LSI 存储阵列配合使用。
如果没有指定 prio 设置,则默认为 const(优先选择第一个路径)算法,或者是上层应用程序自己控制路径选择。
可以使用以下命令来查看硬盘的 WWID:
sudo udevadm info --query=all --name=/dev/sdX | grep ID_SERIAL 将 /dev/sdX 替换为您要查看的磁盘设备,例如 /dev/sda 或 /dev/sdb。该命令将打印出设备的所有属性,然后使用 grep 命令过滤出包含 ID_SERIAL 的行,从而找到设备的 WWID。
另外,还可以使用以下命令列出系统中所有的多路径设备及其 WWID:
multipath -ll 这个命令将显示多路径设备的别名、WWID 和路径等信息。
启用 Linux 上的 MPIO
-
运行以下命令,以确保已安装多路径守护程序并将其设置为运行时启动:
chkconfig multipathd on -
确保每个 OSS/MDS 主机上的 /etc/multipath.conf 文件中存在正确的条目。为
ME4 Series
存储系统创建单独的设备条目。下表指定了应设置的四个属性。运行以下命令以获取准确的供应商和产品 ID 值:
multipath -v3属性 值 prio alua 故障恢复 即时 供应商 供应商名称 产品 产品 ID -
运行以下命令以重新加载 multipath.conf 文件:
service multipathd reload -
运行以下命令以确定多路径守护程序是否使用了 ALUA 获取最佳/非最佳路径:
multipath -v3 | grep alua您应看到输出,表明使用了 ALUA 来配置路径优先级。例如:
Oct 01 14:28:43 | sdb: prio = alua (controller setting) Oct 01 14:28:43 | sdb: alua prio = 130
| ATTRIBUTE | VALUE |
|---|---|
| prio | alua |
| failback | immediate |
| vendor | vendor-name |
| product | product-ID |
挂载磁盘
[root@acdm-db1 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Jul 1 08:21:14 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=ee3f5af2-a3ab-4bcd-847e-2f5b7c3dcd5d /boot xfs defaults 0
0
UUID=A2C3-48E8 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/mapper/mpathdisk01 /data xfs defaults 0 0
/dev/mapper/mpathdisk02 /zhongcai xfs defaults 0 0
格式化磁盘并挂载
[root@acdm-db1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.1T 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 1.1T 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 15.4G 0 lvm [SWAP]
└─centos-home 253:2 0 1T 0 lvm /home
sdb 8:16 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sdc 8:32 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath
sdd 8:48 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sde 8:64 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath
sdf 8:80 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sdg 8:96 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath
sdh 8:112 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sdi 8:128 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath
loop0 7:0 0 4.3G 0 loop /media/centos/
loop1 7:1 0 4.3G 0 loop /mnt
[root@acdm-db1 ~]# mount /data /zhongcai
[root@acdm-db1 ~]# mount /dev/mapper/mpathdisk01 /data/
mount: /dev/mapper/mpathdisk01 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/mapper/mpathdisk01,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
[root@acdm-db1 ~]#
/dev/mapper/mpathdisk01
meta-data=/dev/mapper/mpathdisk01 isize=512 agcount=7, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1753771776, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@acdm-db1 ~]# mkfs.xfs -f /dev/mapper/mpathdisk02
meta-data=/dev/mapper/mpathdisk02 isize=512 agcount=4, agsize=610176 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2440704, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@acdm-db1 ~]# mount /dev/mapper/mpathdisk01 /data/
[root@acdm-db1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.1T 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 1.1T 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 15.4G 0 lvm [SWAP]
└─centos-home 253:2 0 1T 0 lvm /home
sdb 8:16 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sdc 8:32 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath /data
sdd 8:48 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sde 8:64 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath /data
sdf 8:80 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sdg 8:96 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath /data
sdh 8:112 0 9.3G 0 disk
└─mpathdisk02 253:3 0 9.3G 0 mpath
sdi 8:128 0 6.5T 0 disk
└─mpathdisk01 253:4 0 6.5T 0 mpath /data
loop0 7:0 0 4.3G 0 loop /media/centos/
loop1 7:1 0 4.3G 0 loop /mnt
[root@acdm-db1 ~]# mount /dev/mapper/mpathdisk02 /zhongcai/
[root@acdm-db1 ~]# mount -a
[root@acdm-db1 ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=16162432k,nr_inodes=4040608,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=36427)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
/dev/sda2 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=3236100k,mode=700,uid=42,gid=42)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=3236100k,mode=700)
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/root/CentOS-7.6-x86_64-DVD-1810.iso on /media/centos/ type iso9660 (ro,relatime)
/root/CentOS-7.6-x86_64-DVD-1810.iso on /mnt type iso9660 (ro,relatime)
/dev/mapper/mpathdisk01 on /data type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/mpathdisk02 on /zhongcai type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@acdm-db1 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 11G 40G 22% /
devtmpfs devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 16G 12K 16G 1% /dev/shm
tmpfs tmpfs 16G 12M 16G 1% /run
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda2 xfs 1014M 255M 760M 26% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 1.1T 37M 1.1T 1% /home
tmpfs tmpfs 3.1G 4.0K 3.1G 1% /run/user/42
tmpfs tmpfs 3.1G 28K 3.1G 1% /run/user/0
/dev/loop0 iso9660 4.3G 4.3G 0 100% /media/centos/?
/dev/loop1 iso9660 4.3G 4.3G 0 100% /mnt
/dev/mapper/mpathdisk01 xfs 6.6T 33M 6.6T 1% /data
/dev/mapper/mpathdisk02 xfs 9.4G 33M 9.3G 1% /zhongcai
最后修改时间:2024-05-14 09:25:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




