Linux下多路径multipath配置
一、multipath在redhat 6.2中的基本配置:
1. 通过命令:lsmod |grep dm_multipath 检查是否正常安装成功。如果没有输出说明没有安装那么通过yum功能安装一下软件包:yum –y install device-mapper device-mapper-multipath
接着通过命令:multipath –ll 查看多路径状态查看模块是否加载成功
[root@liujing ~]# multipath –ll 查看多路径状态
Mar 10 19:18:28 | /etc/multipath.conf does not exist, blacklisting all devices.
Mar 10 19:18:28 | A sample multipath.conf file is located at
Mar 10 19:18:28 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
Mar 10 19:18:28 | You can run /sbin/mpathconf to create or modify /etc/multipath.conf
Mar 10 19:18:28 | DM multipath kernel driver not loaded ----DM模块没有加载
如果模块没有加载成功请使用下列命初始化DM,或重启系统
---Use the following commands to initialize and start DM for the first time:
# modprobe dm-multipath
# modprobe dm-round-robin
# service multipathd start
# multipath –v2
初始化完了之后再通过multipath -ll命令查看是否加载成功
[root@liujing
~]# multipath -ll
Mar 10 19:21:14 |
/etc/multipath.conf does not exist, blacklisting all devices.
Mar 10 19:21:14 |
A sample multipath.conf file is located at
Mar 10 19:21:14 |
/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
Mar 10 19:21:14 |
You can run /sbin/mpathconf to create or modify /etc/multipath.conf
DM multipath kernel
driver not loaded ----这个提示没了说明DM模块已加载成功。
从上面的提示可以看到,DM模块是成功加载,但是/etc/下没有multipath.conf 配置文件,下一步介绍如何配置multipath.conf 文件。
2. 配置multipath:
通过vi命令创建一个Multipath的配置文件路径是/etc/multipath.conf ,在配置文件中添加multipath正常工作的最简配置如下:
vi
/etc/multipath.conf
blacklist {
devnode
"^sda"
}
defaults {
user_friendly_names
yes
path_grouping_policy
multibus
failback immediate
no_path_retry fail
}
编辑完成后保存配置,同时通过命令:
#
/etc/init.d/multipathd start #开启mulitipath服务
如果出现无法开启服务的情况,没有提示OK的话如下:
[root@liujing
mapper]# service multipathd start
Starting
multipathd daemon: 没有提示OK
重新开关一下服务就可以解决了。
[root@liujing
mapper]# /etc/init.d/multipathd stop
Stopping
multipathd daemon: [ OK ]
[root@localhost
mapper]# /etc/init.d/multipathd start
Starting
multipathd
daemon: [ OK ]
-----提示OK 正常开启服务
通过命令查看:
[root@liujing
mapper]# multipath -ll
mpatha
(360a9800064665072443469563477396c) dm-0 NETAPP,LUN ----创建了一个lun
size=3.5G
features='0' hwhandler='0' wp=rw
`-+-
policy='round-robin 0' prio=4 status=active
|- 1:0:0:0 sdb
8:16 active ready running ----多路径下的两个盘符sdb和sde.
`- 2:0:0:0 sde
8:64 active ready running
目录/dev/mapper/ 下多了两个文件夹mpatha 和mpathap1。
[root@liujing
mapper]# cd /dev/mapper/
[root@liujing
mapper]# ls
control
mpatha mpathap1
同时fdisk –l的命令下也多了两个设备标识:
没有配置多路径时:
[root@liujing~]#
fdisk -l
Disk /dev/sda:
146.8 GB, 146815733760 bytes
255 heads, 63
sectors/track, 17849 cylinders
Units = cylinders
of 16065 * 512 = 8225280 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 512 bytes / 512 bytes
Disk identifier:
0x000a6cdd
Device
Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does
not end on cylinder boundary.
/dev/sda2 26 287 2097152 82 Linux
swap / Solaris
Partition 2 does
not end on cylinder boundary.
/dev/sda3 287 17850 141071360 83 Linux
Disk /dev/sdb:
3774 MB, 3774873600 bytes
117 heads, 62
sectors/track, 1016 cylinders
Units = cylinders
of 7254 * 512 = 3714048 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 4096 bytes / 65536 bytes
Disk identifier:
0xac956c3a
Device
Boot Start End Blocks Id System
/dev/sdb1 1 1016 3685001 83 Linux
Partition 1 does
not start on physical sector boundary.
Disk /dev/sde:
3774 MB, 3774873600 bytes
117 heads, 62
sectors/track, 1016 cylinders
Units = cylinders
of 7254 * 512 = 3714048 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 4096 bytes / 65536 bytes
Disk identifier:
0xac956c3a
Device Boot Start End Blocks Id System
/dev/sde1 1 1016 3685001 83 Linux
Partition 1 does
not start on physical sector boundary.
两个CAN网卡获取到同一盘符:
/dev/sde和/dev/sdb.
配置后多了/dev/mapper/mpatha和/dev/mapper/mpathap1:
[root@localhost
mapper]# fdisk -l
Disk /dev/sda:
146.8 GB, 146815733760 bytes
255 heads, 63
sectors/track, 17849 cylinders
Units = cylinders
of 16065 * 512 = 8225280 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 512 bytes / 512 bytes
Disk identifier:
0x000a6cdd
Device
Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does
not end on cylinder boundary.
/dev/sda2 26 287 2097152 82 Linux
swap / Solaris
Partition 2 does
not end on cylinder boundary.
/dev/sda3 287 17850 141071360 83 Linux
Disk /dev/sdb:
3774 MB, 3774873600 bytes
117 heads, 62
sectors/track, 1016 cylinders
Units = cylinders
of 7254 * 512 = 3714048 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 4096 bytes / 65536 bytes
Disk identifier:
0xac956c3a
Device
Boot Start End Blocks Id System
/dev/sdb1 1 1016 3685001 83 Linux
Partition 1 does
not start on physical sector boundary.
Disk /dev/sde:
3774 MB, 3774873600 bytes
117 heads, 62
sectors/track, 1016 cylinders
Units = cylinders
of 7254 * 512 = 3714048 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 4096 bytes / 65536 bytes
Disk identifier:
0xac956c3a
Device
Boot Start End Blocks Id System
/dev/sde1 1 1016 3685001 83 Linux
Partition 1 does
not start on physical sector boundary.
Disk
/dev/mapper/mpatha: 3774 MB, 3774873600 bytes
117 heads, 62
sectors/track, 1016 cylinders
Units = cylinders
of 7254 * 512 = 3714048 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 4096 bytes / 65536 bytes
Disk identifier:
0xac956c3a
Device
Boot Start End Blocks Id System
/dev/mapper/mpathap1 1 1016 3685001 83 Linux
Partition 1 does
not start on physical sector boundary.
Disk
/dev/mapper/mpathap1: 3773 MB, 3773441024 bytes
255 heads, 63
sectors/track, 458 cylinders
Units = cylinders
of 16065 * 512 = 8225280 bytes
Sector size
(logical/physical): 512 bytes / 512 bytes
I/O size
(minimum/optimal): 4096 bytes / 65536 bytes
Alignment offset:
1024 bytes
Disk identifier:
0x00000000
Disk
/dev/mapper/mpathap1 doesn't contain a valid partition table
# multipath -F #删除现有路径 两个新的路径就会被删除
# multipath -v2 #格式化路径 格式化后又出现
3. multipath磁盘的基本操作
要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.
在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:
# pvcreate
/dev/mapper/mpatha
# fdisk
/dev/mapper/mpatha 分区时用这个目录/dev/mapper/mpatha
用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会.
# ls -l
/dev/mapper/
[root@liujing
mnt]# ls -l /dev/mapper/
total 0
crw-rw----. 1 root
root 10, 58 Mar 10 19:10 control
lrwxrwxrwx. 1 root
root 7 Mar 10 20:28 mpatha -> ../dm-0
lrwxrwxrwx. 1 root
root 7 Mar 10 20:33 mpathap1 -> ../dm-1
的mpathap1就是我们对multipath磁盘进行的分区
# mkfs.ext4
/dev/mapper/mpathap1 #对mpath1p1分区格式化成ext4文件系统
# mount
/dev/mapper/mpathap1 /mnt/ #挂载mpathap1分区
格式化和挂载时用/dev/mapper/mpathap1
4. 分区磁盘:
上面有提到分区时用目录/dev/mapper/mpatha
[root@liujing~]#
fdisk /dev/mapper/mpatha
Device contains
neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS
disklabel with disk identifier 0xac956c3a.
Changes will
remain in memory only, until you decide to write them.
After that, of
course, the previous content won't be recoverable.
Warning: invalid
flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING:
DOS-compatible mode is deprecated. It's strongly recommended to
switch off the
mode (command 'c') and change display units to
sectors (command
'u').
Command (m for
help): n------------------------新建分区
Command action
e extended
p primary
partition (1-4)
p-----------------------------主分区
Partition number
(1-4): 1
First cylinder
(1-1016, default 1):
Using default
value 1
Last cylinder,
+cylinders or +size{K,M,G} (1-1016, default 1016):
Using default
value 1016
Command (m for
help): w ---------------------写入列表相当于保存
The partition
table has been altered!
Calling ioctl() to
re-read partition table.
Syncing disks.
注:如果同一台设备的两个node挂同样的盘符,另一个盘符还需要再次写入w就行。不需要n了。
5. 格式化:
[root@liujing ~]#
mkfs.ext4 /dev/mapper/mpathap1
mke2fs 1.41.12
(17-May-2010)
/dev/sdd1
alignment is offset by 1024 bytes.
This may result in
very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096
(log=2)
Fragment size=4096
(log=2)
Stride=1 blocks,
Stripe width=16 blocks
230608 inodes,
921250 blocks
46062 blocks
(5.00%) reserved for the super user
First data block=0
Maximum filesystem
blocks=943718400
29 block groups
32768 blocks per
group, 32768 fragments per group
7952 inodes per
group
Superblock backups
stored on blocks:
32768, 98304,
163840, 229376, 294912, 819200, 884736
Writing inode
tables: done
Creating journal
(16384 blocks): done
Writing
superblocks and filesystem accounting information: done
This filesystem
will be automatically checked every 33 mounts or
180 days,
whichever comes first. Use tune2fs -c or -i to override.
6. 挂载 /dev/mapper/mpathap1 到 /mnt
[root@liujing ~]#
mount /dev/mapper/mpathap1 /mnt
三、multipath的高级配置之前的配置都是用multipath的默认配置来完成multipath,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,答案是OK。
1、multipath.conf文件的配置
接下来的工作就是要编辑/etc/multipath.conf的配置文件
multipath.conf主要包括blacklist、multipaths、devices三部份的配置
blacklist配置
blacklist {
devnode "^sda"
}
Multipaths部分配置multipaths和devices两部份的配置。
multipaths {
multipath {
wwid **************** #此值multipath -v3可以看到
alias iscsi-dm0 #映射后的别名,可以随便取
path_grouping_policy multibus #路径组策略
path_checker tur #决定路径状态的方法
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
}
}
Devices部分配置
devices {
device {
vendor "iSCSI-Enterprise" #厂商名称
product "Virtual disk" #产品型号
path_grouping_policy multibus #默认的路径组策略
getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序
prio_callout "/sbin/acs_prio_alua
%d" #获取有限级数值使用的默认程序
path_checker readsector0 #决定路径状态的方法
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
failback immediate
#故障恢复的模式
no_path_retry queue
#在disable queue之前系统尝试使用失效路径的次数的数值
rr_min_io 100
#在当前的用户组中,在切换到另外一条路径之前的IO请求的数目
}
}
下面是相关参数的标准文档的介绍:
|
Attribute |
Description |
|||||||||
|
wwid |
Specifies the WWID of the |
|||||||||
|
alias |
Specifies the symbolic name |
|||||||||
|
path_grouping_policy |
|
|||||||||
|
path_selector |
|
|||||||||
|
failback |
|
|||||||||
|
prio |
|
|||||||||
|
no_path_retry |
|
|||||||||
|
rr_min_io |
Specifies the number of I/O |
|||||||||
|
rr_min_io_rq |
Specifies the number of I/O |
|||||||||
|
rr_weight |
If set to priorities, then instead of |
|||||||||
|
flush_on_last_del |
If set to yes, then multipath will disable |
在我本地的一个完整的高级配置如下:
[root@liujing ~]#
vi /etc/multipath.conf
blacklist {
devnode
"^sda"
}
multipaths {
multipath {
wwid 360a98000646650724434697454546156
alias mpathb_fcoe
path_grouping_policy multibus
#path_checker "directio"
prio "random"
path_selector "round-robin
0"
}
}
devices {
device {
vendor "NETAPP"
product "LUN"
getuid_callout "/lib/udev/scsi_id
--whitelisted --device=/dev/%n"
#path_checker "directio"
#path_selector "round-robin
0"
failback immediate
no_path_retry fail
}
}
其中 wwid,vendor,product, getuid_callout这些参数可以通过:multipath -v3命令来获取。如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。
四、负载均衡测试:
可以使用dd命令来对设备进行读写操作,并同时通过iostat来查看I/0状态,流量从哪个路径出去:
DD命令:dd if=/dev/zero of=/mnt/1Gfile bs=8k
count=131072 在上面我们已经把磁盘挂载在/MNT文件夹下所以我们在读写磁盘时直接对/mnt文件夹直接读写就可以了。
如果想对磁盘重复读写可以用如下语句:
[root@liujing ~]#
for ((i=1;i<=5;i++));do dd if=/dev/zero of=/mnt/1Gfile bs=8k count=131072
2>&1|grep MB;done; ---重复读写5次这个值可以根据自己测试需求修改。
另一个控制台输入iostat
2 10查看IO读写状态:
可以看到sdc和sdd是两个多路径的盘符,流量均匀的负载在两条路径中,负载均衡很成功。
五、路径冗余备份测试
将其中一条路径的端口down掉,所有流量会直接切换到另一个路径中。
Linux下多路径multipath配置的更多相关文章
- Linux下多路径multipath配置【转】
一.multipath在redhat 6.2中的基本配置: 1. 通过命令:lsmod |grep dm_multipath 检查是否正常安装成功.如果没有输出说明没有安装那么通过yum功能安装一下 ...
- Linux下Kafka单机安装配置方法(图文)
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...
- linux下Java环境的配置
linux下Java环境的配置 现在用linux的朋友越来越多了,前几天就有两个朋友问我linux下怎么配置java环境,我想还有很多朋友想了解学习这方面的东西,就写一个完全一点的linux java ...
- Linux下SVN服务器搭建配置
Linux下SVN服务器搭建配置 1.SVN服务安装 yum install subversion 2.创建SVN代码仓库 mkdir /data/svn svnadmin create /data/ ...
- Linux 下 Memcached 缓存服务器安装配置
Linux 下 Memcached 缓存服务器安装配置 [日期:2011-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] [安装Memcache服务器端]我目前的平台 ...
- Linux下MySQL安装及配置
Linux下MySQL安装及配置 安装MySQL Ubuntu系统中,直接使用apt install的方式去安装MySQL的服务端和客户端,MySQL的客户端必须安装,否则无法通过命令连接并操作MyS ...
- Linux下Kafka单机安装配置方法
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...
- linux下jdk环境变量配置深度分析----解决环境变量不生效的问题
1.linux下jdk环境变量配置 是否需要配置环境变量,主要看java -version 显示的版本是否为你期望的版本 1.1 不需要配置环境变量的情况 使用java -version查看,版本显示 ...
- 分享:linux下apache服务器的配置和管理
linux下apache服务器的配置和管理. 一.两个重要目录: Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式: Apac ...
随机推荐
- jq 部分用法
这几天一直在写前台,因为jq是在客服端处理数据的,所以公司,一般都用这种方法,下面是我这几天用到的一些东西 1.修改table表格的第一轮显示值 function changeTableRowValu ...
- NAT技术
该文摘自百度百科"NAT"中的一部分 NAT(Network Address Translation,网络地址转换)是1994年提出的.当在专用网内部的一些主机本来已经分配到了本地 ...
- python模块:base64
base64模块是用来作base64编码解码的,在电子邮件中常见.它可以把不能作为文本显示的二进制数据编码为可显示的文本信息,编码后文本大小增加1/3.常用方法有: b64encode & b ...
- JVM常量池
常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口等中的常量,也包括字符串常量和符号引用.运行时常量池是方法区的一部分 ...
- css3新特性@rgba
1.rgba也经常在实际应用中使用,它主要是在原来rgb的基础上添加了一透明度.但是他又和opacity又有一些差别,主要体现在对子元素的透明度的影响上. 例如:使用opacity和backgroun ...
- (转)Android消息处理机制(Handler、Looper、MessageQueue与Message)
转自 http://www.cnblogs.com/angeldevil/p/3340644.html Android消息处理机制(Handler.Looper.MessageQueue与Messag ...
- Xamarin踩坑经历
1.SDK版本 Android SDK Build-tools必须安装23.0.1版,不得升级高版本,否则将导致异常:尝试在条件"$(_DeviceSdkVersion) >= 21& ...
- java中用spring实现数组类型输出
java 中的几个数组类型 1.Department类 package com.yy.collection; import java.util.List; import java.util.Map; ...
- 如何用VB.Net创建一个三层的数据库应用程序
[b]1.[/b][b]概论:[/b] 本文将介绍如何创建一个三层应用程序,并且将介绍如何创建一个Web Service服务. ADO.NET创建Windows三层结构应用程序的体系架构如下图所示: ...
- android系统启动
首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 您还未登录 ! 登录 注册 Ant space 博客 微博 相册 收藏 留言 关于我 android启动过程再研 Androi ...