第九章:多路径¶
多路径简单来说就是通过多个路径、也就是多块网卡去连接存储,比如我们通过目标存储上的两块网卡上的两个ip去连接目标的iscis存储,那么我们本地会得到sda和sdb,然后我们把sda和sdb做多路径,整成一块盘。
这样不仅在与后端服务器的进行数据的传输的时候,是通过两块网卡,可以提高速度,而且当其中一块网卡网络出故障的时候,我们还有另一块网卡,也就是另一条线路,存储依然可以使用,一种高可用的效果。
本次学习中,我们依然用node4作为后端存储,node4用两个ip,我们来做多路径。
为node4配置第二个IP地址¶
nmcli connection modify 'System eth0' +ipv4.address '192.168.122.41/24'
nmcli connection up 'System eth0'
Note
node4当前是已经配置好了iscsi的,在 上一章节配置的。
各个节点通过新ip连接iscsi¶
这里我们在server1上通过3node命令吧,由于许久还是觉得在文档里这样写,3node是我写的一个脚本,3node后面接的命令,会通过ssh在node1 node2 node3上都执行。
[root@server1 ~]# 3node iscsiadm -m discovery -t st -p 192.168.122.41 #在三个节点上通过新ip去发现target
192.168.122.41:3260,1 iqn.2018-08.com.example:node4
192.168.122.41:3260,1 iqn.2018-08.com.example:node4
192.168.122.41:3260,1 iqn.2018-08.com.example:node4
[root@server1 ~]#
[root@server1 ~]# 3node iscsiadm -m node -l #登录
Logging in to [iface: default, target: iqn.2018-08.com.example:node4, portal: 192.168.122.41,3260] (multiple)
Login to [iface: default, target: iqn.2018-08.com.example:node4, portal: 192.168.122.41,3260] successful.
Logging in to [iface: default, target: iqn.2018-08.com.example:node4, portal: 192.168.122.41,3260] (multiple)
Login to [iface: default, target: iqn.2018-08.com.example:node4, portal: 192.168.122.41,3260] successful.
Logging in to [iface: default, target: iqn.2018-08.com.example:node4, portal: 192.168.122.41,3260] (multiple)
Login to [iface: default, target: iqn.2018-08.com.example:node4, portal: 192.168.122.41,3260] successful.
root@server1 ~]# 3node "hostname && lsblk|grep sd" #查看是否挂载了新的磁盘sdb
node1
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
node2
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
node3
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part /var/www/html
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
通过上面的操作和结果反馈,我们看到ndoe1 node2 node3上都连接了新的sdb。
这里的sda和sdb实际上是同一个盘,通过wwid可以确认。 执行下面的命令,确认这两个磁盘的wwid是一样的,所以这两个盘是同一个盘。
/usr/lib/udev/scsi_id -u -g /dev/sda1
/usr/lib/udev/scsi_id -u -g /dev/sda2
然后,我们就来给这两个盘做一个多路径,类似于网络聚合。
加载多路径模块¶
lsmod |grep multi #Check if multipath module has been loaded.
modproble dm_multipath # load multipath module.
set automatic load multipath module¶
echo 'modproble dm_multipath' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
check multipath configuration file¶
multipath
create a multipath file¶
cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/
start and enable multipathd¶
systemctl restart multipathd
systemctl is-active multipathd
systemctl enable multipathd
multipath会自动发现wwid相同的设置,然后自动的给我们做多路径。
check multipath¶
[root@node1 ~]# multipath -l
Oct 12 17:38:31 | vda: No fc_host device for 'host-1'
Oct 12 17:38:31 | vda: No fc_host device for 'host-1'
Oct 12 17:38:31 | vda: No fc_remote_port device for 'rport--1:-1-0'
mpatha (360014059c2719519e0f4445afbb30030) dm-2 LIO-ORG ,iscsi_store
size=10.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:0 sda 8:0 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
`- 3:0:0:0 sdb 8:16 active undef running
manage configuration file¶
默认配置里,user_friendly_names yes 表示使用友好的名字,让我们自己能够方便去识别。
$ vim /etc/multipath.conf
defaults {
user_friendly_names yes
find_multipaths yes
}
blacklist 里配置的是不配置多路径的磁盘。比如我们写devnode “^[vs]d[a-z]” ,那么vd开头的如vda到vdz开头的磁盘和sda到sdz开头的磁盘,都不会做多路径。
blacklist {
wwid 26353900f02796769
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^[vs]d[a-z]"
}
blacklist_exceptions 里配置就是在blacklist里已经配置包含了的磁盘,但我们又要用的,就在这里写出来。
blacklist_exceptions {
devnode "sd[a-z]"
}
配置multipath的别名
[root@node1 ~]# multipath -l
mpatha (360014059c2719519e0f4445afbb30030) dm-2 LIO-ORG ,iscsi_store
size=10.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:0 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
`- 3:0:0:0 sda 8:0 active undef running
[root@node1 ~]# vim /etc/multipath.conf
multipaths {
multipath {
wwid 360014059c2719519e0f4445afbb30030
alias alvin_disk
}
}
[root@node1 ~]# systemctl restart multipathd
[root@node1 ~]# multipath -l
alvin_disk (360014059c2719519e0f4445afbb30030) dm-2 LIO-ORG ,iscsi_store
size=10.0G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 2:0:0:0 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
`- 3:0:0:0 sda 8:0 active undef running
查看默认配置,可以查看各种各样的一些厂商的一些设备。
multipathd -k
show
show config
为multipacth磁盘分区¶
fdisk /dev/mapper/alvin_disk
mkfs.ext4 /dev/mapper/alvin_disk1
mount /dev/mapper/alvin_disk1 /mnt/