ISCSI多路径配置

一、 实战1:配置iscsi多路径实现磁盘挂载高可用
1、 实验环境
可在上一章节的环境之上,进行实验。

2、 通过vmware模拟多路径
给存储服务器添加一块网卡,模拟出来多路径形式。
ISCSI多路径配置_第1张图片
3、 配置IP地址
[root@xuegod120 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod120 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@xuegod120 network-scripts]# vim ifcfg-ens38
NAME=“ens38”
IPADDR=“192.168.1.120” #和另一块网卡配置成不同网段
PREFIX=“24”
DEVICE=“ens38”
ONBOOT=“yes”
[root@xuegod120 network-scripts]# systemctl restart network
ISCSI多路径配置_第2张图片
4、 配置target双IP地址
[root@xuegod120 ~]# targetcli
/> cd iscsi/iqn.2019-07.cn.xuegod.server/tpg1/portals/
/iscsi/iqn.20…/tpg1/portals> ls
o- portals … [Portals: 1]
o- 192.168.0.120:3260 … [OK]
/iscsi/iqn.20…/tpg1/portals> create 192.168.1.120 3260
Using default IP port 3260
Created network portal 192.168.1.120:3260.
/iscsi/iqn.20…/tpg1/portals> ls
o- portals … [Portals: 2]
o- 192.168.0.120:3260 … [OK]
o- 192.168.1.120:3260 … [OK]
/iscsi/iqn.20…/tpg1/portals>

5、 保存配置
/iscsi/iqn.20…/tpg1/portals> cd /
/> saveconfig
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

二、 配置xuegod130客户端iscsi挂载存储
1、 增加一块网卡,配置IP地址
ISCSI多路径配置_第3张图片

配置IP地址
[root@xuegod130 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod130 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@xuegod130 network-scripts]# vim ifcfg-ens38
NAME=“ens38”
IPADDR=“192.168.1.130”
PREFIX=“24”
DEVICE=“ens38”
ONBOOT=“yes”

重启网络服务
[root@xuegod130 network-scripts]# systemctl restart network
ISCSI多路径配置_第4张图片

2、 重启iscsi服务
[root@xuegod130 ~]# systemctl restart iscsi
[root@xuegod130 ~]# systemctl restart iscsid

3、 发现设备
[root@xuegod130 ~]# iscsiadm -m discovery -t st -p 192.168.0.120 #IP随便跟一个存储的IP
192.168.0.120:3260,1 iqn.2019-07.cn.xuegod.server
192.168.1.120:3260,1 iqn.2019-07.cn.xuegod.server

4、 登录设备
[root@xuegod130 ~]# iscsiadm -m node --login
[root@xuegod130 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 Jul 16 17:02 /dev/sda
brw-rw---- 1 root disk 8, 1 Jul 16 17:02 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jul 16 17:02 /dev/sda2
brw-rw---- 1 root disk 8, 16 Jul 20 09:29 /dev/sdb
brw-rw---- 1 root disk 8, 32 Jul 20 10:25 /dev/sdc

5、 挂载磁盘
[root@xuegod130 ~]# mkdir /test
[root@xuegod130 ~]# mount /dev/sdc /test
mount: wrong fs type, bad option, bad superblock on /dev/sdc,
missing codepage or helper program, or other error

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

注意:挂载提示错误,文件系统类型错误、选项错误、/dev/sdc 上有坏超级块、
缺少代码页或助手程序,或其他错误
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
原因:/dev/sdb和/dev/sdc这两块设备的UUID值相同,所以不能挂载。可以使用-o参数,跳过UUID进行挂载
[root@xuegod130 ~]# blkid /dev/sdb /dev/sdc
/dev/sdb: UUID=“c59a1537-5df9-401a-b540-cc225f0b38a5” TYPE=“xfs”
/dev/sdc: UUID=“c59a1537-5df9-401a-b540-cc225f0b38a5” TYPE=“xfs”

跳过UUID挂载
[root@xuegod130 ~]# mount -t xfs -o nouuid /dev/sdc /test

6、 查看挂载磁盘
[root@xuegod130 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk /opt
sdc 8:32 0 20G 0 disk /test
sr0 11:0 1 4.2G 0 rom

7、 对比数据
ISCSI多路径配置_第5张图片

8、 查看服务器端的连接状态
ISCSI多路径配置_第6张图片
9、 使用tree命令,查看连接结构
[root@xuegod130 ~]# yum -y install tree
[root@xuegod130 ~]# tree /var/lib/iscsi/
ISCSI多路径配置_第7张图片

三、 实战2:在存储客户端xueggod130上配置多路径
1、 多路径软件Device Mapper Multipath概述
多路径软件Device Mapper Multipath(DM-Multipath)可以将服务器节点和存储阵列之间的多条I/O链路配置为一个单独的设备。这些I/O链路是由不同的线缆、交换机、控制器组成的SAN物理链路。Multipath将这些链路聚合在一起,生成一个单独的新的设备。
(1)数据冗余
DM-Multipath可以实现在active/passive(主动/被动)模式下的灾难转移。在active/passive模式下,只有一半的链路在工作,如果链路上的某一部分(线缆、交换机、控制器)出现故障,DM-Multipath就会切换到另一半链路上。
(2)提高性能
DM-Multipath也可以配置为active/active模式,从而I/O任务以round-robin的方式分布到所有的链路上去。通过配置,DM-Multipath还可以检测链路上的负载情况,动态地进行负载均衡。

2、 安装多路径软件
[root@xuegod130 ~]# yum -y install device-mapper-multipath

3、 使用默认配置文件启动
[root@xuegod130 ~]# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/

[root@xuegod130 ~]# systemctl start multipathd
[root@xuegod130 ~]# systemctl enable multipathd

4、 查看连接数
[root@xuegod130 ~]# multipath -ll
查看连接数,没有消息。是因为我们使用iscsi客户端已经挂载了两个块设备,需要卸载
[root@xuegod130 ~]# umount /dev/sdb
[root@xuegod130 ~]# umount /dev/sdc

5、 重启iscsi和multipath服务
[root@xuegod130 ~]# systemctl restart iscsi
[root@xuegod130 ~]# systemctl restart multipathd

6、 再次查看连接
[root@xuegod130 ~]# multipath -ll
mpatha (3600140541e6828aaa674e52aeb138109) dm-2 LIO-ORG ,sun1
size=20G features=‘0’ hwhandler=‘0’ wp=rw
|-± policy=‘service-time 0’ prio=0 status=active
| - 33:0:0:0 sdb 8:16 active undef running-± policy=‘service-time 0’ prio=1 status=enabled
`- 34:0:0:0 sdc 8:32 active ready running

说明:
3600140541e6828aaa674e52aeb138109(远程存储设备id)dm-2 LTO-ORG(厂商) ,sun1(产品ID)

size=5.0G features=‘0’ hwhandler=‘0’ wp=rw
|-± policy=‘service-time 0’ prio=1 status=active #默认使用active的链路
| - 34:0:0:1 sdb 8:16 active ready running-± policy=‘service-time 0’ prio=1 status=enabled #有效的链路,但不是活动链路
`- 35:0:0:1 sdc 8:32 active ready running
#默认配置并不会实现负载均衡,只会实现高可用的效果。

#每个多路径设备都具备一个 全局标识(WWID,World Wide Identifir)。这个 (36001405c98cebda0dbf4ceeb0f5160dc) 就是WWID,远程存储设备的产品信息,由于sdb和sdc对应的都是远端同一个存储,所以产品信息是一样的,最后被多路经驱动发现,所以为他们生成了一个设备文件/dev/mapper/mpatha

7、 查看客户端设备的路径
[root@xuegod130 ~]# ll /dev/mapper/mpatha
lrwxrwxrwx 1 root root 7 Jul 20 10:52 /dev/mapper/mpatha -> …/dm-2

8、 挂载使用
[root@xuegod130 ~]# mount /dev/mapper/mpatha /opt
[root@xuegod130 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─mpatha 253:2 0 20G 0 mpath /opt
sdc 8:32 0 20G 0 disk
└─mpatha 253:2 0 20G 0 mpath /opt
sr0 11:0 1 4.2G 0 rom

9、 查看数据和写入测试
原始盘数据也在,写入新的数据库
ISCSI多路径配置_第8张图片

10、 模拟故障,停止存储服务器的一块网卡,测试客户端能否正常使用
[root@xuegod120 ~]# ifdown ens38
Device ‘ens38’ successfully disconnected.

[root@xuegod130 opt]# multipath -ll
[root@xuegod130 opt]# multipath -ll
mpatha (3600140541e6828aaa674e52aeb138109) dm-2 LIO-ORG ,sun1
size=20G features=‘0’ hwhandler=‘0’ wp=rw
|-± policy=‘service-time 0’ prio=1 status=active
| - 33:0:0:0 sdb 8:16 active ready running-± policy=‘service-time 0’ prio=0 status=enabled #一块盘已经是faulty running
`- 34:0:0:0 sdc 8:32 failed faulty running

11、 测试数据写入和读取
[root@xuegod130 opt]# ls
a.txt b.txt c.txt
[root@xuegod130 opt]# echo aabbcc > d.txt
[root@xuegod130 opt]# ls
a. txt b.txt c.txt d.txt

实验完毕,记得启动停止的网卡,下面实验还需要使用。
[root@xuegod120 ~]# ifup ens38
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

以上测试,说明多线路配置成功,但是两台线路不能同时运行,一条使用中,另外一条在等待中。

12、 启动multipath高可用负载均衡模式
[root@xuegod130 ~]# vim /etc/multipath.conf
60 multipaths {
61 multipath {
62 wwid 3600140541e6828aaa674e52aeb138109 #填写自己的iscsi存储的WWID号
63 alias webdate #映射后的别名,可以随便取
64 path_grouping_policy multibus #路径组策略
65 path_selector “round-robin 0”
66 failback manual
67 rr_weight priorities
68 no_path_retry 5
69 # }
70 # multipath {
71 # wwid 1DEC_____321816758474
72 # alias red
73 # }
74 }

13、 卸载之前挂载的盘
[root@xuegod130 ~]# umount /dev/mapper/mpatha

14、 重启multipathd和iscsi服务
[root@xuegod130 ~]# systemctl restart multipathd
[root@xuegod130 ~]# systemctl restart iscsi

15、 查看映射的盘,并挂载
[root@xuegod130 ~]# multipath -ll
webdate (3600140541e6828aaa674e52aeb138109) dm-2 LIO-ORG ,sun1
size=20G features=‘1 queue_if_no_path’ hwhandler=‘0’ wp=rw
-+- policy='round-robin 0' prio=1 status=active |- 33:0:0:0 sdb 8:16 active ready running #两条线路都是running- 34:0:0:0 sdc 8:32 active ready running
之前的相当于主备模式,现在是负载均衡

[root@xuegod130 ~]# ll /dev/mapper/webdate
lrwxrwxrwx 1 root root 7 Jul 20 11:07 /dev/mapper/webdate -> …/dm-2

挂载
[root@xuegod130 ~]# mount /dev/mapper/webdate /opt
ISCSI多路径配置_第9张图片

16、 模拟故障测试
停止一块网卡
在这里插入图片描述

一条线路故障
在这里插入图片描述

测试数据读取和写入
ISCSI多路径配置_第10张图片

四、 实战3:使用udev规则为每个target创建固定名字的软连接(了解)
udev概述
udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。udev会根据用户添加/删除硬件的行为,自处理/dev目录下所有设备文件。
主配置文件:/etc/udev/udev.conf
设备文件名字规则目录:
[root@xuegod64 ~]# ls /lib/udev/rules.d/10-dm.rules
命名规律: 开头为数字, 结尾是 .rules
运行机制和注意事项:
1、udev按照规则文件名的数字顺序来查询全部规则文件,然后为匹配规则的设备,创建其设备文件或文件链接。
2、通常情况下,建议让自己想要的规则文件最先被解析。比如,创建一个名为 /etc/udev/rules.d/10-myrule.rules的文件,并把你的规则写入该文件,这样udev就会在解析系统默认的规则文件之前解析到你的文件。
3、在规则文件里,除了以“#”开头的行(注释),所有的非空行都被视为一条规则,但是一条规则不能扩展到多行。

4、规则都是由多个键值对(key-valuepairs)组成,并由逗号隔开,键值对可以分为条件匹配键值对(以下简称“匹配键”)和赋值键值对(以下简称“赋值键”),一条规则可以有多条匹配键和多条赋值键。
5、匹配键是匹配一个设备属性的条件,当一个设备的属性匹配了该规则里所有的匹配键,就认为这条规则生效,然后按照赋值键的内容,执行该规则的赋值。

说明:如果有一个设备被内核实别sdb1,则该条件生效,执行后面的赋值:在/dev下产生一个名为my_ disk的设备文件,并把设备文件的权限设为0666。
详细参数说明

udev规则的匹配键

  1. ACTION: 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )。
  2. KERNEL: 内核设备名称,例如:sda, cdrom。
  3. DEVPATH:设备的 devpath 路径。
  4. SUBSYSTEM: 设备的子系统名称,例如:sda 的子系统为 block。
  5. BUS: 设备在 devpath 里的总线名称,例如:usb。
  6. DRIVER: 设备在 devpath 里的设备驱动名称,例如:ide-cdrom。
  7. ID: 设备在 devpath 里的识别号。
  8. SYSFS{filename}: 设备的 devpath 路径下,设备的属性文件“filename”里的内容。
  9. ENV{key}: 环境变量。在一条规则中,可以设定最多五条环境变量的 匹配键。
  10. PROGRAM:调用外部命令。
  11. RESULT: 外部命令 PROGRAM 的返回结果。
    udev重要的赋值键
  12. NAME:在 /dev下产生的设备文件名。只有第一次对某个设备的 NAME 的赋值行为生效,之后匹配的规则再对该设备的 NAME 赋值行为将被忽略。如果没有任何规则对设备的 NAME 赋值,udev 将使用内核设备名称来产生设备文件。
  13. SYMLINK:为 /dev/下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件,所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接。
  14. OWNER, GROUP, MODE:为设备设定权限。
  15. ENV{key}:导入一个环境变量
    udev规则操作符
  16. “==”:比较键、值,若等于,则该条件满足;
  17. “!=”: 比较键、值,若不等于,则该条件满足;
  18. “=”: 对一个键赋值;
  19. “+=”:为一个表示多个条目的键赋值。
  20. “:=”:对一个键赋值,并拒绝之后所有对该键的改动。目的是防止后面的规则文件对该键赋值。

KERNEL是匹配键,NAME和MODE是赋值键。

仅当操作符是“==”或者“!=”时,其为匹配键;若为其他操作符时,都是赋值键。

6.3.2 在应用服务器xuegod64上定义udev规则
对iscsi多路径共享的设备设备,让内核识别成:my_disk
在进行udev绑定的时候,可以是一个未分区的磁盘,也可以是磁盘的一个分区。
查看共享设备磁盘的UUID:
[root@xuegod64 ~]# cd /lib/udev/rules.d/
[root@xuegod64 rules.d]# /usr/lib/udev/scsi_id -g -u /dev/sdb
36001405c98cebda0dbf4ceeb0f5160dc
[root@xuegod64 rules.d]# vim /etc/udev/rules.d/10-sda.rules #写入以下内容
KERNEL==“sdb”,SUBSYSTEM==“block”,PROGRAM="/usr/lib/udev/scsi_id -g -u /dev/sdb",RESULT==“36001405c98cebda0dbf4ceeb0f5160dc”,SYMLINK+=“my-disk”,MODE=“0660”
注:上面要写入的内容中,逗号和后面的参数之间不能有空格
参数:

KERNEL是匹配键, SUBSYSTEM:设备的子系统名称,例如:sda 的子系统为block。udevadm info -a -p /sys/block

PROGRAM:调用外部命令;

RESULT: 外部命令 PROGRAM 的返回结果。

SYMLINK:为/dev/下的设备文件产生符号链接。由于udev 只能为某个设备产生一个设备文件,所以为了不覆盖系统默认的udev 规则所产生的文件,推荐使用符号链接。

MODE:为设备设定权限

通知内核磁盘信息的变化
[root@xuegod64 rules.d]# /sbin/partprobe /dev/sdb
或者:
[root@xuegod64 rules.d]# systemctl restart systemd-udev-trigger
注:/sbin/partprobe /dev/sd* 通常使用该命令让新的规则文件立即生效

udev 的日志一般没有标准输出,所有的udev 相关信息都按照配置文件(udev.conf)的参数设置,由/var/log/messages记录。

查看:
[root@xuegod64 rules.d]# ll /dev/my-disk
lrwxrwxrwx 1 root root 3 9月 17 16:08 /dev/my-disk -> sdb
[root@xuegod64 rules.d]# mount /dev/my-disk /opt/ #发现无法挂载使用,提示已经挂载
解决办法:
[root@xuegod64 rules.d]# systemctl stop multipathd && systemctl disable multipathd #把多路径软件服务关了,就可以使用udev了
[root@xuegod64 rules.d]# mount /dev/my-disk /opt/ #挂载成功
注:multipathd本身就可以给存储设备起一个名字了,有了multipathd就不需要udev来起名字了。所以两者是冲突的,只能同时使用一种方法给存储设备命名。

总结:所以一般情况,我们直接使用iscsi存储+多路径就可以了。 udev相关的知识,大家了解一下就可以了。

你可能感兴趣的:(第三阶段-集群类)