详解Linux Multipath多路径配置:概念、配置、常用维护命令等

系统 Linux
在Linux平台一部分存储产品使用操作系统自带的多路径软件,包括最常见的HP和IBM的部分存储产品,在Linux自带的多路径软件叫做multipath。那么问题就来了,到底什么是多路径?

在Linux平台一部分存储产品使用操作系统自带的多路径软件,包括最常见的HP和IBM的部分存储产品,在Linux自带的多路径软件叫做multipath。

那么问题就来了,到底什么是多路径?

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?从在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题。

1. multipath介绍

在redhat中,安装操作系统的时候multipath已经默认被安装,查看安装情况

  1. # rpm -qa | grep device-mapper 

说明:

(1) device-mapper-multipath:即multipath-tools。主要提供multipathd和multipath等工具和 multipath.conf等配置文件。创建的多路径设备会在/dev/mapper中。

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

内核部分主要包括device mapper核心(dm.ko)和一些target driver(md-multipath.ko)。核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。

用户空间部分主要包括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设备的序号。通过序号,便可以判断多个路径对应了同一设备。这个是多路径实现的关键。multipath程序在创建multipath设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。在改写时,需要修改scsi_id程序的返回值为0。因为在multipath程序中,会检查该值来确定scsi id是否已经成功得到。

2. multipath详细配置

因为在安装操作系统的时候,multipath的软件包已经那装好了,所以这里就不在需要安装,如果没有安装的话,需要手动的进行安装。

1、检查安装是否正常

  1. # lsmod |grep dm_multipath 

如果模块没有加载成功,使用下面的命令初始化DM:

  1. #modprobe dm-multipath  
  2. #modprobe dm-round-robin  
  3. #service multipathd start  
  4. #multipath –v2 

2. 编辑配置文件

  1. # cat /etc/multipath.conf 
  2. blacklist { 
  3. devnode "^sda" 
  4. defaults { 
  5. user_friendly_names no 
  6. multipaths { 
  7. multipath { 
  8. wwid 3600508b4000892b90002a00000050000 #磁盘的WWID 
  9. alias comsys-dm0 #映射后的别名,自己命名 
  10. path_grouping_policy multibus #路径组策略 
  11. path_checker tur #决定路径状态的方法 
  12. path_selector "round-robin 0" #选择那一条路径进行下次IO操作 
  13. multipath { 
  14. wwid 3600508b4000892b90002a00000090000 
  15. alias comsys-dm1 
  16. path_grouping_policy multibus 
  17. path_checker tur 
  18. path_selector "round-robin 0" 
  19. multipath { 
  20. wwid 3600508b4000892b90002a00000140000 
  21. alias comsys-backup 
  22. path_grouping_policy multibus 
  23. path_checker tur 
  24. path_selector "round-robin 0" 
  25. devices { 
  26. device { 
  27. vendor "HP" #厂商名称,可通过multipath –v3获取到 
  28. product "HSV300" #产品型号 
  29. path_grouping_policy multibus #默认的路径组策略 
  30. getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序 
  31. path_checker readsector0 #决定路径状态的方法 
  32. path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法 
  33. #failback immediate #故障恢复的模式 
  34. #no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值 
  35. #rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目 

ps:其中 wwid,vendor,product, getuid_callout这些参数可以通过:multipath -v3命令来获取。如果在/etc/multipath.conf中有设定各wwid别名,别名会覆盖此设定。

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

3. 如何获取WWID

(1) 使用 /etc/multipath/bindings

/etc/multipath/bindings内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。

  1. # cat /etc/multipath/bindings 

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

(2) 通过multipath -v3命令来获取

  1. # multipath -v3 

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

4. 启动multipathd服务并设置其自动启动

  1. #service multipathd restart 
  2. #chkconfig --level 345 multipathd on 
  3. #chkconfig --list | grep multipathd 

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

5. 检查multipath聚合后的设备名,以及设备对应的链路情况

这个命令很重要

  1. # multipath -ll 

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

6. 检查配置是否成功

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

  1. # ll /dev/mapper/ 

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

用fdisk -l命令可以看到多路径软件创建的磁盘

  1. # fdisk -l 

详解Linux Multipath多路径配置--概念、配置、常用维护命令等

篇幅有限,关于Linux多路径配置方面的内容就介绍到这了。

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2021-01-20 08:16:06

异步Dotnet Core多路径

2018-10-30 13:10:34

ECMP技术数据中心网络

2011-05-13 14:55:13

负载均衡网关数据中心

2010-06-02 10:23:46

Linux mysql

2013-01-11 10:21:44

TRILL组网模型VLAN

2010-06-18 17:32:27

Linux Anacr

2010-06-07 10:41:25

2015-07-15 11:14:42

2011-10-27 10:30:55

CISCO配置命令

2022-08-12 15:41:11

神经网络架构

2016-12-12 12:00:47

MD3860i

2018-09-07 10:35:27

数据中心

2009-12-09 09:27:35

linux内核

2009-11-30 09:56:16

2009-10-22 09:20:37

Linux系统网络操作系统

2009-10-27 14:31:57

linux静态路由

2009-08-11 09:58:22

Linux命令行Linux命令svn命令

2009-12-22 14:47:24

Linux常用命令

2009-12-25 17:48:43

WPF资源路径
点赞
收藏

51CTO技术栈公众号