- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2021-8-12 12:00:21
|
显示全部楼层
4、 multipath磁盘的基本操作4 T/ R0 ]: F6 v7 `
要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.( }) N' _; Y& c! @' C+ t% I
在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:% x2 y) Z1 W; |+ I* E# r' A
# pvcreate /dev/mapper/mpath0
' W1 M# a! Z# g$ K* m# fdisk /dev/mapper/mpath0- ^6 p( R$ ^" _
p_w_picpath6 N- k# j6 H- h0 U1 W, d
用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。
; Y( l$ A7 [# `; C4 u2 wfdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了
( i" W2 e6 W) E0 c1 g& B4 {0 B# service iscsi restart
) J( X1 m( {& k3 y1 z* j# ls -l /dev/mapper/
" w! S2 s4 `1 V( z0 G! sp_w_picpath
5 k0 r. {* {1 r* f5 h% }9 C4 C如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区- V% W7 B0 ~. _% K2 G
# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统% v& e* b: B [* {
# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区" C/ U; X2 C/ H. P$ A; G
p_w_picpath! H1 ]2 j/ a. \0 W
$ {" y0 O8 c0 Q# k+ p
# [. ~& ]6 c& E
6 c/ E% f/ u/ q$ r7 ?9 d
四、multipath的高有配置
4 q# R1 a+ {: @$ b! }以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。
1 D$ o; J" t" b! ]8 B; z$ ]$ I1 、multipath.conf 文件的配置
1 {% L9 o) @, J6 l接下来的工作就是要编辑/etc/multipath.conf的配置文件
5 Z1 K, Z. Y2 o6 p$ K6 k1 nmultipath.conf主要包括blacklist、multipaths、devices三部份的配置, K* l8 p* s: X- p/ F1 k* s
blacklist 配置
& D5 U; J" w& l7 \blacklist {
$ h7 o* ]0 _% m7 Udevnode "^sda", \! k r( |6 [
}) u2 `- K& J; D% B
Multipaths 部分配置multipaths和devices两部份的配置。
3 j( T) s1 |7 A' a" U+ m3 M& a6 imultipaths {
' l- Q. k! k+ R: g1 `multipath {, U2 q7 ]9 H' z: F
wwid **************** #此值multipath -v3可以看到* t# M! q) C) N- P# \' e
alias iscsi-dm0 #映射后的别名,可以随便取* H$ b$ X- g8 K) `
path_grouping_policy multibus #路径组策略
$ D% N s. [) T: F# h& r3 d6 spath_checker tur #决定路径状态的方法
+ f' ], o1 \0 S( N/ a. opath_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法" x: ?( ]5 M; j% @/ {
}6 y6 A" j, R# P" i
}
& A+ ? [& e- g7 {; B% yDevices 部分配置
3 s6 f+ i$ `5 T! L, R8 `& Y/ fdevices {# @) N" A; y1 H- L$ l
device {
0 X1 M2 v, p& T( U2 ovendor "iSCSI-Enterprise" #厂商名称+ \' s! g) J2 I0 C: c
product "Virtual disk" #产品型号$ q3 ^+ ?& ^. T1 q
path_grouping_policy multibus #默认的路径组策略
( A* P0 K) I- |, F6 j( ?4 bgetuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序
6 u+ N8 R: C. i& Sprio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序: S, a) P) `( x j
path_checker readsector0 #决定路径状态的方法
& b" i7 x) ? Hpath_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
, }6 j: h- o# g5 sfailback immediate #故障恢复的模式5 y8 C3 r2 I0 l" Q. [( q* s. w
no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值. u4 v, R( ?9 C0 A2 G
rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目8 Z/ s# `* P! N" Q- \
}# Y) ]( U' h* L, {; _% ~) Y! X3 i
} _- m6 \. {* p+ q) W) F, S
如下是一个完整的配置文件
; ]# R6 m" J1 q dblacklist {, v) H2 N" m$ \2 F
devnode "^sda"% o7 L$ D' [/ {- M8 ]* D7 q
}
% H9 j& G9 E+ Q2 `; @defaults {0 }) b/ C% a* J- O
user_friendly_names no
5 `8 ]9 w1 d. m% |* s( V}
6 O- [) W" ^' o% E3 pmultipaths {
' G Q- G* s! ]5 N% ymultipath {
|7 e* Z& @) C: Y0 fwwid 14945540000000000a67854c6270b4359c66c272e2f356321
7 _: k3 w" M1 a: e) Oalias iscsi-dm02 `" p/ V- i! ? \+ F) v
path_grouping_policy multibus
! A1 Z( g Q5 i# M( Fpath_checker tur
) e; |# A# b" E2 p+ p; M% b! ppath_selector "round-robin 0"$ }. k1 R2 E& r1 ^* D, A
}1 X: _% Y' N) _1 R( V
multipath {
, u+ D: j- l9 p7 f4 ~$ Hwwid 14945540000000000dcca2eda91d70b81edbcfce2357f99ee
( K, F' H. ]1 Q: K$ ~alias iscsi-dm1$ J: D0 s: d5 X$ s, O0 U7 i! c
path_grouping_policy multibus! |2 \5 C! }( G% P: v3 K* i
path_checker tur3 P& F& y8 }4 W" Z
path_selector "round-robin 0"# V; p# ^, g$ }0 J$ l; m
}7 D9 ]; _: b+ l& v A: ?3 X! D, \% g
multipath {
3 {4 ~9 r2 i( h. o, xwwid 1494554000000000020f763489c165561101813333957ed96
0 M* l6 N8 c# N+ @( Salias iscsi-dm28 s( l5 ]! d0 [
path_grouping_policy multibus
; r" v7 M/ ^: R; A4 N/ @9 D9 rpath_checker tur
- b7 G# S3 { u. e* U+ Gpath_selector "round-robin 0"3 n Z! ]2 P4 N& @0 R
}
0 L. I5 X/ r0 D' Rmultipath {2 m! N, k! q# u- M* N2 v" Z
wwid 14945540000000000919ca813020a195422ba3663e1f03cc3
4 w9 J) y/ M, d5 P0 a2 m1 `alias iscsi-dm3
& D8 l) R0 z$ Qpath_grouping_policy multibus+ v# n ~: |+ t& ]0 X
path_checker tur; \. R! e) N& W0 [/ t4 v
path_selector "round-robin 0": m. H; l/ M- X. _$ O: ?! t! t6 \
}. C" D4 s+ f4 Z
}0 G( v i( ~" t2 C
devices {2 D5 X6 b4 l; k
device { O' j/ a0 J4 x
vendor "iSCSI-Enterprise"
; i7 a2 E5 q1 e$ O! Nproduct "Virtual disk"" t8 x, Z- g& u3 W! o9 u5 S
path_grouping_policy multibus8 M$ g9 |; i$ A A
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"% k% Y, q- b! T* K2 b
path_checker readsector0! k+ p Z9 J7 i9 S* W/ k
path_selector "round-robin 0"& l; Z7 H- r7 V$ _( x/ L
}
) V: m! t! q @& h! p}' c# k0 ^* S5 v' g, N$ J5 W% ?8 N9 ]
获取wwid的方法:
& H, z. F$ ?- T(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。
0 ]; |3 ]* {6 d, m5 [p_w_picpath+ k' z! @" u* z- h
(2)# multipath -v3命令查找) ~' Z4 V% I: F* N
p_w_picpath
* V& C' P% g& ?5 N# N2 、负载均衡测试
( d- M+ j1 R t; q; i使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:
0 Q* i' v: S4 }7 b: U# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1
4 [$ L" D* O' D开启另外一个终端用以下命令查看IO情况. [/ \+ }- k( i& f2 K1 `9 w; [
# iostat 10 10
/ n# Z, y6 J* t7 Np_w_picpath* s. }3 f: D/ {/ g$ f3 f W$ \. U
通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。. H/ E3 x& Z7 g5 a
3 、路径切换测试/ V& q0 W% F5 V/ m$ e+ C
首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。 |
|