存储多路径实践

作者:【吴业亮】

博客:https://wuyeliang.blog.csdn.net/

什么是多路径?

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

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

1)、故障的切换和恢复

2)、IO流量的负载均衡

3)、磁盘的虚拟化

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

一、服务端

1、安装epel源

# yum --enablerepo=epel -y install scsi-target-utils

2、修改配置文件/etc/tgt/targets.conf

<target iqn.2019-01.test:volume00> 
    # provided devicce as a iSCSI target
    backing-store /dev/sdb #卷的路径
    # iSCSI Initiator's IP address you allow to connect
    initiator-address 10.10.10.31#允许连接的IP
    # authentication info ( set anyone you like for "username", "password" )
#    incominguser username "b021191eb4fb613a" #用户名及密码,注意密码长度
</target>

3、配置selinux

# chcon -R -t tgtd_var_lib_t /iscsi_disks 
# semanage fcontext -a -t tgtd_var_lib_t /iscsi_disks

4、配置防火墙

# firewall-cmd --add-service=iscsi-target --permanent 
# firewall-cmd --reload

5、重启tgtd并设置开机启动

# systemctl restart tgtd 
# systemctl enable tgtd

6、查看状态

# tgtadm --mode target --op show

二、客户端

安装软件包

# yum -y install iscsi-initiator-utils

修改InitiatorName(可不改)

# vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2014-07.test.com

修改配置文件/etc/iscsi/iscsid.conf

node.session.auth.authmethod = CHAP
node.session.auth.username = username
node.session.auth.password = password

发现目标

# iscsiadm -m discovery -t sendtargets -p 192.168.8.101
# iscsiadm -m discovery -t sendtargets -p 192.168.8.102

确认状态

# iscsiadm -m node -o show

登录

# iscsiadm -m node --login

查看会话

# iscsiadm -m session -o show

以下步骤也在客户端操作

安装

yum install device-mapper-multipath

设置开机启动

systemctl enable multipathd.service

添加配置文件
需要multipath正常工作只需要如下配置即可,如果想要了解详细的配置,请参考Multipath

# vi /etc/multipath.conf
blacklist {
    devnode "^sd[a-e]" #过滤磁盘,哪些不做多路径
}
defaults {
    user_friendly_names yes
    path_grouping_policy multibus
    failback immediate
    no_path_retry fail
}

加载内核模块

# modprobe dm-multipath

启动服务

#  systemctl start multipathd.service

查看服务

# multipath -ll
mpatha (360000000000000000e00000000010001) dm-2 IET     ,VIRTUAL-DISK
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  |- 3:0:0:1 sdd 8:48 active ready running
  `- 4:0:0:1 sde 8:64 active ready running

此时,执行lsblk命令就可以看到多路径磁盘mpatha了:

# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part  /boot
└─sda2            8:2    0 19.5G  0 part
  ├─centos-root 253:0    0 17.5G  0 lvm   /
  └─centos-swap 253:1    0    2G  0 lvm   [SWAP]
sdb               8:16   0   30G  0 disk
sdc               8:32   0   30G  0 disk
sdd               8:48   0   30G  0 disk
└─mpatha        253:2    0   30G  0 mpath
sde               8:64   0   30G  0 disk
└─mpatha        253:2    0   30G  0 mpath
sr0              11:0    1  603M  0 rom

格式化磁盘

mkfs.xfs /dev/mapper/mpathf  -f

挂载磁盘

mount  /dev/mapper/mpathf  /mnt/

查看分区

[root@localhost mnt]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   98G  891M   97G   1% /
devtmpfs                  16G     0   16G   0% /dev
tmpfs                     16G     0   16G   0% /dev/shm
tmpfs                     16G  8.6M   16G   1% /run
tmpfs                     16G     0   16G   0% /sys/fs/cgroup
/dev/sda1                497M  120M  377M  25% /boot
tmpfs                    3.2G     0  3.2G   0% /run/user/0
/dev/mapper/mpathf       500G   33M  500G   1% /mnt

配置自动挂载,修改/etc/fstab

/dev/mapper/mpathf /mnt/ xfs  _netdev 0 0

在服务端down一个网卡

[root@localhost ~]# ifdown eno33559296
Device 'eno33559296' successfully disconnected.

在客户端测试读写

[root@localhost mnt]# dd if=/dev/zero  of=test bs=4M count=1024
1024+0 records in
1024+0 records out
4294967296 bytes (4.3 GB) copied, 5.77562 s, 744 MB/s

在服务端恢复刚才down的网卡,然后down另一个网卡

[root@localhost ~]# ifup eno33559296
Device 'eno33559296' successfully disconnected.
[root@localhost ~]# ifdown eno16780032
Device 'eno33559296' successfully disconnected.

在客户端测试

[root@localhost mnt]# dd if=/dev/zero  of=test1 bs=4M count=1024
1024+0 records in
1024+0 records out
4294967296 bytes (4.3 GB) copied, 5.93495 s, 724 MB/s
  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值