欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Multipath多路径

程序员文章站 2024-01-30 15:22:34
...

前言:

最近整理一些以前的学习笔记。
过去都是存储在本地,此次传到网络留待备用。\


 

Multipath多路径

  • 软件: device-mapper-multipath
  • 配置文件: /etc/multipath.conf

1.多路径概述

  • 当服务器到某一存储设备有多条路径时,每条路径都会识别为一个单独的设备;
  • 多路径允许您将服务器节点和储存阵列间的多个I/O路径配置为一个单一设备;
  • 这些I/O路径是可包含独立电缆、交换机和控制器的实体SAN链接;
  • 多路径集合了I/O路径,并生成由这些集合路径组成的新设备;

 

2.多路径主要功能

  • 冗余
    • 主备模式,高可用
  • 改进的性能
    • 主主模式,负载均衡

 

3.多路径特点

  • 防止单线故障
  • 多条线路使用相同的 共享存储
  • 依靠wwid(全球识别符)辨认,减少管理混乱

 

Multipath多路径实例

  • 拓扑: 利用iscsi实现多路径

Multipath多路径

  • 关闭selinux与防火墙

    	]# systemctl stop firewalld ; systemctl disable firewalld
    	]# setenforce 0 ; sed -i "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
    

一、iscsi服务端:

1.准备共享介质(分区、LV或磁盘镜像)

]# lsblk /dev/vdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb  252:16   0  20G  0 disk

2.安装targetcli(7)|scsi-target-utils(6)

]# yum -y install targetcli

3.配置target

]# targetcli
/> backstores/block create storage /dev/vdb                         #创建后端存储
/> iscsi/ create iqn.2222-11.com.example:server                     #创建iqn
/> iscsi/iqn.2222-11.com.example:server/tpg1/luns create /backstores/block/storage      #绑定iqn与存储
/> iscsi/iqn.2222-11.com.example:server/tpg1/acls create iqn.2222-11.com.exampl:client  #设置acl
/> saveconfig       #保存配置
/> exit             #退出

4.启动target服务

]# systemctl restart target ; systemctl enable target

 

二、iscsi客户端:

1.安装客户端软件

]# yum -y install iscsi-initiator-utils

2.客户端访问共享存储

  • 因为到达共享存储有两条路径,所以需要在两条路径上都执行发现命令
    ]# iscsiadm  --mode discovery  --type sendtargets  --portal 192.168.1.20  --discover
    ]# iscsiadm  -m discovery  -t st  -p 192.168.2.20  --discover
    
  • 设置开机自启
    ]# systemctl enable iscsi
    ]# systemctl enable iscsid
    

3.多路径设备

  • 若没有 DM Multipath,从服务器节点到储存控制器的每一条路径都会被系统视为独立的设备,即使I/O路径连接的是相同的服务器节点到相同的储存控制器也是如此;
  • DM Multipath提供了有逻辑的管理I/O路径的方法,即在基础设备顶端生成单一多路径设备

4.多路径配置(客户端)

  • 安装软件包

    ]# yum -y install device-mapper-multipath
    
  • 使用mpathconf命令创建配置文件并启用多路径

    ]# mpathconf  --user_friendly_names n       #不使用系统自动友好命名,而是使用自定义命令
    
  • 若无需编辑该配置文件,可使用此命令启动多路径守护进程

5.多路径设备识别符

  • 每个多路径设备都有一个WWID(全球识别符),他是全球唯一的、无法更改的号码
  • 默认情况下会将多路径设备的名称设定为它的WWID
  • 可以在多路径配置文件中设置user_friendly_names选项,该选项可将别名设为mpathn格式的节点唯一名称,
  • 也可以自定义存储设备名称

6.获取WWID(客户端)

  • 假如共享存储在本地被识别为/dev/sdb和/dev/sdc,那么获取它的WWID方法是: ]# /lib/udev/scsi_id --whitelisted --device=/dev/sdb ]# /lib/udev/scsi_id --whitelisted --device=/dev/sdc
  • 因为两个设备虽然名称不一样,但是实际上是一个设备,所以他们的WWID是相同的

7.指定获取WWID(全球唯一标识)的方法

  • 在配置文件中声明获取WWID的方法
    ]# vim /etc/multipath.conf
    ...
    defaults {
        user_friendly_names no
        getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"   #centos7可不写,保持默认
    }
    

8.为多路径设备配置别名

  • 根据得到WWID,为多路径设备配置别名
    ]# vim /etc/multipath.conf
    #//在尾部添加以下内容:
    multipaths {
        multipath {
            wwid    "设备的wwid值"
            alias   "自定义设备别名"
        }
    }
    

9.启动服务并验证

  • 启动服务
    ]# systemctl start multipathd
    ]# systemctl enable multipathd
    
  • 验证
    ]# ls /dev/mapper        #mpatha即为多路径设备
    ]# multipath -rr         #重新加载多路径信息
    ]# multipath -ll         #查看多路径信息
    

10.本地使用

  • 分区
    • 为/dev/mapper/mpatha分区,得到的第一个分区名为/dev/mapper/mpathap1
  • 格式化
    ]# mkfs.ext3 /dev/mapper/分区
    ]# blkid /dev/mapper/分区
    /dev/mapper/分区: UUID="2492b8c4-efd5-488f-ba13-a77b61b544fe" SEC_TYPE="ext2" TYPE="ext3"
    ·挂载
    ]# mount /dev/mapper/分区 /var/www/html/
    
  • 测试
    ]# echo $HOSTNAME > /var/www/html/a.html    #编辑测试文件
    ]# systemctl restart httpd
    ]# ifdown eth2                              #dwon一条线路
    访问测试文件
    

转载于:https://my.oschina.net/xinsui1314x/blog/3072560