• 【共享服务】iscsi多路径配置


    一、安装部署

    1、前言

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

    多路径的主要功能就是和存储设备一起配合实现如下功能:

    • 故障的切换和恢复
    • IO流量的负载均衡
    • 磁盘的虚拟化

    为了主机可以使用 iSCSI 多路径访问存储设备,我们需要在主机上安装多路径设备映射器 (DM-Multipath)。多路径设备映射器可以实现主机节点和后端存储之间的多个 I/O 路径配置为一个单一逻辑设备,从而可以提供链路冗余和提高性能。主机通过访问包含多个 I/O 路径的逻辑设备,就可以有效提高后端存储系统的可靠性。

    2、部署说明

    节点主机名 节点IP 角色 系统版本
    node230 66.66.66.230 mon、osd CentOS7.2
    node231 66.66.66.231 mon、mds、osd、target CentOS7.2
    node232 66.66.66.232 mon、mds、osd、target CentOS7.2

    本次示例由分布式存储提供一个1TB大小的rbd(lun01),通过node231、node232分别创建一个target服务共享lun01出去,客户端node220通过iscsi分别与node231、node232建立连接

    注:以下操作均在initiator端node220节点下执行

    2.1、initiator与target建立连接

    node220节点分别通过节点node231、node232与lun01建立连接,映射到本地磁盘下

    lun01通过node231、node232两个节点两条链路映射到node220节点下,映射盘符为sdc和sdd

    [root@node220 ~]# iscsiadm -m discovery -t st -p 66.66.66.231
    66.66.66.231:3260,1 iqn.vcluster.com:target01
    [root@node220 ~]# iscsiadm -m discovery -t st -p 66.66.66.232
    66.66.66.232:3260,1 iqn.vcluster.com:target01
    [root@node220 ~]# iscsiadm -m node -T iqn.vcluster.com:target01 --login
    Logging in to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.231,3260] (multiple)
    Logging in to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.232,3260] (multiple)
    Login to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.231,3260] successful.
    Login to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.232,3260] successful.
    [root@node220 ~]# iscsiadm -m node ll
    66.66.66.231:3260,1 iqn.vcluster.com:target01
    66.66.66.232:3260,1 iqn.vcluster.com:target01
    [root@node220 ~]# lsblk
    NAME              MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda                 8:0    0 223.6G  0 disk  
    └─md126             9:126  0 212.4G  0 raid1 
      ├─md126p1       259:0    0   200M  0 md    /boot/efi
      ├─md126p2       259:1    0   500M  0 md    /boot
      └─md126p3       259:2    0 211.7G  0 md    
        ├─centos-root 253:0    0    50G  0 lvm   /
        ├─centos-swap 253:1    0     4G  0 lvm   [SWAP]
        └─centos-home 253:2    0 157.7G  0 lvm   /home
    sdb                 8:16   0 223.6G  0 disk  
    └─md126             9:126  0 212.4G  0 raid1 
      ├─md126p1       259:0    0   200M  0 md    /boot/efi
      ├─md126p2       259:1    0   500M  0 md    /boot
      └─md126p3       259:2    0 211.7G  0 md    
        ├─centos-root 253:0    0    50G  0 lvm   /
        ├─centos-swap 253:1    0     4G  0 lvm   [SWAP]
        └─centos-home 253:2    0 157.7G  0 lvm   /home
    sdc                 8:32   0     1T  0 disk  
    sdd                 8:48   0     1T  0 disk 

    2.2、multipath配置

    • 安装multipath软件
    [root@node220 ~]# yum install -y device-mapper-multipath
    [root@node220 ~]# rpm -qa | grep multipath
    device-mapper-multipath-0.4.9-123.el7.x86_64
    device-mapper-multipath-libs-0.4.9-123.el7.x86_64
    • 生成multipath配置
      执行命令mpathconf --enable,在/etc目录下生成配置文件multipath.conf
    [root@node220 ~]# mpathconf --enable
    • 修改multipath配置
      修改配置文件/etc/mulipath.conf信息如下,之后执行命令systemctl restart multipathd 重启服务
    [root@node220 ~]# cat /etc/multipath.conf
    defaults {
        user_friendly_names yes
    }
    

    设置黑名单列表,示例环境sda、sdb磁盘为系统RAID盘,故而排除

    blacklist {
    devnode "^sd[a-b]"
    }

    multipaths {
    multipath {
    path_grouping_policy multibus
    #path_checker readsector0
    prio "random"
    path_selector "round-robin 0"
    }
    }

    devices {
    device {
    vendor "vcluster"
    product "12.2.12"
    path_checker readsector0
    path_selector "round-robin 0"
    failback immediate
    no_path_retry fail
    }

    }
    [root@node220 ~]# systemctl restart multipathd

    • 查看multipath状态

    此时本地可以看到新增的虚拟磁盘/dev/mapper/mpathc ,该虚拟磁盘通过两条iscsi路径提供,当前配置为主备模式(同一时刻只有一条路径处于活动状态,可写入数据)

    [root@node220 ~]# multipath -ll
    mpathc (360000000000000000e00000000150001) dm-3 vcluster,VIRTUAL-DISK    
    size=1.0T features='0' hwhandler='0' wp=rw
    |-+- policy='service-time 0' prio=1 status=enabled
    | `- 45:0:0:1 sdc 8:32 active ready running
    `-+- policy='service-time 0' prio=1 status=active
      `- 46:0:0:1 sdd 8:48 active ready running
    

    [root@node220 ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 223.6G 0 disk
    └─md126 9:126 0 212.4G 0 raid1
    ├─md126p1 259:0 0 200M 0 md /boot/efi
    ├─md126p2 259:1 0 500M 0 md /boot
    └─md126p3 259:2 0 211.7G 0 md
    ├─centos-root 253:0 0 50G 0 lvm /
    ├─centos-swap 253:1 0 4G 0 lvm [SWAP]
    └─centos-home 253:2 0 157.7G 0 lvm /home
    sdb 8:16 0 223.6G 0 disk
    └─md126 9:126 0 212.4G 0 raid1
    ├─md126p1 259:0 0 200M 0 md /boot/efi
    ├─md126p2 259:1 0 500M 0 md /boot
    └─md126p3 259:2 0 211.7G 0 md
    ├─centos-root 253:0 0 50G 0 lvm /
    ├─centos-swap 253:1 0 4G 0 lvm [SWAP]
    └─centos-home 253:2 0 157.7G 0 lvm /home
    sdc 8:32 0 1T 0 disk
    └─mpathc 253:3 0 1T 0 mpath
    sdd 8:48 0 1T 0 disk
    └─mpathc 253:3 0 1T 0 mpath

    [root@node220 ~]# cat /proc/partitions
    major minor #blocks name

    8 16 234431064 sdb
    8 0 234431064 sda
    9 126 222715904 md126
    259 0 204800 md126p1
    259 1 512000 md126p2
    259 2 221997056 md126p3
    253 0 52428800 dm-0
    253 1 4194304 dm-1
    253 2 165310464 dm-2
    8 32 1073741824 sdc
    8 48 1073741824 sdd
    253 3 1073741824 dm-3

    2.3、multipath验证

    验证multipath效果,看能否实现活动路径故障,备用路径接管写入的效果

    • 将多路径设备/dev/mapper/mpathc挂载到本地目录/client下,通过vdbench持续读写数据
      查看multipath主链路为node232节点,映射磁盘为/dev/sdd

    • 停止multipath主链路node232节点的target服务,客户端读写未出现中断情况
      此时multipath主链路切换至node231节点下


    查看multipath状态,主链路切换至node231节点下

    查看/var/log/messages日志打印,multipath检测到sdd磁盘异常,标记为fail状态,当前链路数为1

    查看磁盘流量,此时磁盘读写流量切换至sdc磁盘下

    当恢复node232节点target服务之后,node232节点重新加入到multipath备链路下

    二、常用操作

    1、常用命令

    • 加载内核模块: modprobe dm-multipath; modprobe dm-round-robin
    • 刷新所有多路径配置: multipath -F
    • 查看多路径: multipath -ll
  • 相关阅读:
    hibernate 报query result offset is not supported
    MAC下 mySQL及workbench安装
    FC105 FC106 Scale功能块使用说明
    报错!!!Servlet.service() for servlet [action] in context with path [/myssh] threw exception [java.lang.NullPointerException] with root cause java.lang.NullPointerException
    PLC300寻址指令
    vscode 配置
    Integrate Intellij with Cygwin
    Configure VSCode
    Linux下安装gradle
    Linux下安装nodejs-源码安装
  • 原文地址:https://www.cnblogs.com/luxf0/p/15875760.html
Copyright © 2020-2023  润新知