|
|
楼主 |
发表于 2021-8-12 12:00:21
|
显示全部楼层
4、 multipath磁盘的基本操作' M- a% v5 H1 H( l @: g1 _" T2 |
要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.$ C# Q8 |/ z3 H6 g- d
在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:. U% l& \' P; ~9 W5 @! H* I
# pvcreate /dev/mapper/mpath01 w8 [5 ]- g, a$ u2 n) e
# fdisk /dev/mapper/mpath0' p! @2 b4 p- ?+ ]) f: z
p_w_picpath
: y( H- g' A8 b; A& T5 c, N8 a用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。
$ s/ g' n0 k ufdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了+ q4 o7 u- [. S$ \. c! [+ P. f: U
# service iscsi restart
* s# r! V N0 K- z% ?& S# ls -l /dev/mapper/% @, q6 n W+ [1 M
p_w_picpath
! }$ b8 [4 j0 J. }8 N1 L! c/ \; P如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区; ]( X/ P2 V& M/ l/ K4 v
# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统
8 e1 c/ n: X- Z0 a/ R( W6 i; ~# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区
3 c& }0 ]3 C% q1 A1 Lp_w_picpath
2 X4 P: |7 C. e9 \ . w0 s' h8 y6 b" D
+ Q3 V" C6 |9 q; Y) `, }
) S% I! P# T! v" e. j四、multipath的高有配置
3 W1 p( s5 C; W6 R. g4 d以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。
$ e9 s6 x7 ~& z$ N1 、multipath.conf 文件的配置: C0 _7 K. Q( Q6 G4 R# _
接下来的工作就是要编辑/etc/multipath.conf的配置文件$ g: _3 T! E& `+ i& T% y
multipath.conf主要包括blacklist、multipaths、devices三部份的配置/ v; H9 Q2 d& E# `! }) U
blacklist 配置
; u) L6 ~/ f# J7 ablacklist {9 \4 S: O) W' y! X
devnode "^sda"
; h1 l# U2 l+ Q! |& \}2 B" u) ?$ G; X) g; O
Multipaths 部分配置multipaths和devices两部份的配置。
~/ |+ o6 z" L( k& j {* A% Pmultipaths {6 T2 m5 A& Y& I; A7 J
multipath {$ @5 n n. N& Z u: a* b D8 Q1 q
wwid **************** #此值multipath -v3可以看到
* K+ }* L% i+ e) I* Ialias iscsi-dm0 #映射后的别名,可以随便取
0 D8 s9 M6 P& Dpath_grouping_policy multibus #路径组策略
; `* e4 I) M9 wpath_checker tur #决定路径状态的方法1 j- C0 m5 Z; E
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
& h' u# n6 i8 q b& l4 a+ U}) Q( L. ?' s: J( P+ Z
}
$ M0 ]" u0 @+ d: I! ~& ^: }Devices 部分配置# e/ C' s0 w" E* i0 ?. B* h! ~) ?
devices {8 C' J' }7 r& w
device {6 S- @* j# u: o S v
vendor "iSCSI-Enterprise" #厂商名称. x/ o' M8 x& ^/ Y
product "Virtual disk" #产品型号
6 X0 M5 s2 |$ b% E. L* Q4 {path_grouping_policy multibus #默认的路径组策略8 F# T3 o4 X+ w) {. d
getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序
( v; ]! @; ?# R' p; k% K* R0 h' mprio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序+ ~# n3 @9 a; t
path_checker readsector0 #决定路径状态的方法
! [5 i A( B3 C Lpath_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法+ R& |( x$ Z& R+ j
failback immediate #故障恢复的模式
0 D; z, H. i9 c5 L; y no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值' y% O: C( V1 a- i7 M, Y" [
rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目
9 v4 M) p" u F+ } F}
3 T* y; I* p# |* N y}6 X, Z3 x$ t' y% M6 W+ W
如下是一个完整的配置文件
( {5 p4 o+ I0 Qblacklist {
) S3 Y; ^+ V$ G7 ]* }7 I) c. B) b$ Odevnode "^sda"
, u. }. m* E2 C e}
* g% M2 P8 c) idefaults {0 R. B: j5 R3 c8 \. U
user_friendly_names no
4 E, K ^1 q5 ]1 e* U}* J% V& k" X2 }9 N3 T7 ~) h. [
multipaths {$ M5 W4 \ E6 f( v# Z7 F
multipath {: z9 y6 R ?, A9 @# N& H# @
wwid 14945540000000000a67854c6270b4359c66c272e2f3563211 M) k+ I; M3 w
alias iscsi-dm0- _# p- t8 V) g% Q+ _ d
path_grouping_policy multibus0 m( M: H" D: c5 B
path_checker tur
3 [# `: U2 g- ?/ w* ]4 ?0 ?3 I1 tpath_selector "round-robin 0"& s5 c% e- x" ?" A; w2 b; Q: R
}
- h4 y: c2 G, q6 R4 imultipath {; U/ ?2 B8 g2 l3 D1 }
wwid 14945540000000000dcca2eda91d70b81edbcfce2357f99ee8 }+ ^# A- `4 a$ u3 t
alias iscsi-dm1
! W4 u. @8 S% o- p& D, l3 Mpath_grouping_policy multibus
* N* Z; ?1 Q1 A/ d0 y7 d/ t& Dpath_checker tur
3 k5 J. R e# K3 Z2 i( E. j9 C9 N% cpath_selector "round-robin 0"* K$ n3 o( r7 Y! f+ i
}& |# k: b2 q: @# t. W# T, s
multipath {, F! f2 b l y
wwid 1494554000000000020f763489c165561101813333957ed96
7 K+ E/ ~. b' N; ]0 ralias iscsi-dm26 t! O; Y u, v
path_grouping_policy multibus
4 [. M/ A9 W o5 n3 ?/ @4 Ppath_checker tur
- M8 |! q5 @+ \! m; b8 U5 Lpath_selector "round-robin 0"9 T l V4 J3 Z$ V; K: X, @
}
1 l ^. q: w9 E3 Rmultipath {4 a( Z/ G/ B* i, m" ^
wwid 14945540000000000919ca813020a195422ba3663e1f03cc3
$ D0 T l. a0 z* {alias iscsi-dm3
. A) q( Q/ o) V; X9 Y+ E# M4 zpath_grouping_policy multibus
1 f. q# n; `4 j: |$ Kpath_checker tur
- E- e/ |3 I& N% P3 S: zpath_selector "round-robin 0"
# V$ l Q: F+ f% J}4 i/ p) q% t' I1 ]1 Q$ U9 W9 p8 V3 d1 i, ?
}; n/ [3 r6 T* J7 q7 V! u- i
devices {
4 _, S9 A2 J% hdevice {
9 l2 o. Z4 T' K$ J8 `7 o7 `/ \& cvendor "iSCSI-Enterprise"
; c, Q* ~' ?+ `2 S% Xproduct "Virtual disk"
7 p+ A) |- `7 T" u8 _' Zpath_grouping_policy multibus ] j9 X. f* f; C
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"/ k' \8 q. L0 @4 Q3 I2 w
path_checker readsector0
; v7 g, K) w3 l0 c4 l5 H. c' lpath_selector "round-robin 0". I* I" F& M4 b0 R3 f g
}
0 i, d: z3 l# |7 [: L8 J; j) u}
- O/ z! l+ Y; N- l; f9 _9 n2 `获取wwid的方法:2 G/ F1 ~( V" P1 S
(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。6 A0 E# H" _9 L0 M* q
p_w_picpath
. D; g7 J0 Q- L' [/ Y0 g8 h(2)# multipath -v3命令查找
" y% _& l& I* a: e. e. Y" Tp_w_picpath' ]2 q1 N; E2 w+ k& ?2 ^4 b
2 、负载均衡测试- f, z) r7 K j( S
使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:; ` Q5 ^* G: b/ y r# T
# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1! L: j1 r/ A) s) a
开启另外一个终端用以下命令查看IO情况" D; Q) P4 D4 D. U: q" g
# iostat 10 10
B* P2 `/ i% [- Z, v; O8 dp_w_picpath
4 M8 I! |' F0 L) y8 Y通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。
9 j& H% a8 b: O/ U- V' _; Y# Y6 q3 、路径切换测试5 Y5 G# j2 r2 r" j# D, \5 q% T
首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。 |
|