centos 配置multipaths存储多路径

  • Post author:
  • Post category:其他




一、安装multipaths软件

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



二、启动服务

启动服务并设置开机自启

systemctl enable multipathd --now

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



三、编辑配置文件

手动创建/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
        }
}

之后重启服务

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 

查看状态 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

重新扫描设备 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 和路径等信息。



版权声明:本文为m0_61069946原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。