|
|
楼主 |
发表于 2021-8-12 12:00:21
|
显示全部楼层
4、 multipath磁盘的基本操作$ d2 G; _0 l* R) g
要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.
; z; P$ w' F( w* e+ `* |在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:
, M% j8 O; s0 |# pvcreate /dev/mapper/mpath0 V3 Z! j& {" W1 Q! G
# fdisk /dev/mapper/mpath05 N; g; b$ R7 [+ a- S, x4 b
p_w_picpath; w) F3 H1 b2 S' H
用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。' n; y0 d7 m& k2 m. W
fdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了% t; d4 r" C. m0 k5 q% b' L- q
# service iscsi restart
z/ X5 E$ f5 ~# s6 c$ _# ls -l /dev/mapper/
; K6 g' [9 C) g9 t+ v9 Zp_w_picpath* s1 r/ ~( R- ]2 M
如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区; s5 V3 V5 V9 s. |- |% u
# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统* W8 j- N, O' ~% H, ?$ K
# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区
% _+ \9 R1 }4 mp_w_picpath
D: l0 P! k6 }( {2 d. h6 f( D& c
% o2 F7 L) \( H' \6 q5 c / M$ N8 K" v6 Q/ ~0 K2 e/ ]
" N/ z" t$ r0 X( k4 b& J, V3 s
四、multipath的高有配置2 I- v7 Y. E4 E/ D* X: o) [. \4 e
以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。! [ [9 J f0 w
1 、multipath.conf 文件的配置
5 {3 G0 {0 v8 u4 w$ J接下来的工作就是要编辑/etc/multipath.conf的配置文件
8 w+ t+ l5 e' X+ h4 Q5 `multipath.conf主要包括blacklist、multipaths、devices三部份的配置
# R8 U3 r9 b* X1 K/ B. vblacklist 配置
- {. G2 t! H) xblacklist {
/ f( j" ]5 H ?+ l- S# \6 Vdevnode "^sda"* r: g4 z( J" N5 ?
}
8 n& {& ^2 G9 |, kMultipaths 部分配置multipaths和devices两部份的配置。
1 h! x! c8 S, B: z5 x/ c( Omultipaths {- l# g9 ]" N- d
multipath {; n, p. g4 U6 t0 ]4 ~: l
wwid **************** #此值multipath -v3可以看到
$ J% p" |0 E* u. n1 D* ~alias iscsi-dm0 #映射后的别名,可以随便取$ u5 ?9 y7 [% h5 h
path_grouping_policy multibus #路径组策略0 R9 i! f3 f% h* e. m
path_checker tur #决定路径状态的方法7 m$ T3 ?# S9 z: Y; j" W" P
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
% A& w4 U! F: Y r* A2 U5 N}
1 W8 {8 r- E6 ~; K8 e1 U0 r} 2 U5 s L6 Z. Q i+ O
Devices 部分配置
4 I: F+ w$ X6 Rdevices {
- u! u, r' h4 ~* B/ ~7 idevice {
8 \% K6 u7 ~+ l* Hvendor "iSCSI-Enterprise" #厂商名称, Y# I5 K/ g. I
product "Virtual disk" #产品型号" G4 L0 ?3 z+ P5 G4 x
path_grouping_policy multibus #默认的路径组策略5 m! g$ Y1 _) j4 R" N1 X# s
getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序0 E$ r# q2 T, Y* u* q$ ~
prio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序
1 d" i( h9 }9 a& D" bpath_checker readsector0 #决定路径状态的方法$ `# x9 e& o* p8 g/ M6 F
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
! O% R+ y* E: x; q$ ]4 n& ~4 vfailback immediate #故障恢复的模式
6 p% {. R4 v8 @% c; X$ x no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值6 ~: l( k; Z- n2 I3 c
rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目$ R. S$ w3 s& y+ c* `
}
- X* o6 D# c) ` z8 c9 n: B. j}7 ~3 a! l( {% n- @1 ~
如下是一个完整的配置文件2 G% @7 w8 e# {$ B! t) [
blacklist {
8 Q0 X9 x0 X) y) ndevnode "^sda"
, t7 a3 Q; I$ ]: q5 w: N8 l0 r y}# I8 y5 W7 i, g$ x2 ~& B( O/ D# h
defaults {5 y+ J, U$ R$ Q- M2 x$ J+ {( a* J
user_friendly_names no. C+ [) D" G* L- r {% p5 n
}
' d" X- p1 F5 I. e \# z/ Fmultipaths {/ d# q; e9 @1 ?2 e0 a
multipath {
) p% v6 S6 ]; _0 B- `8 L! ]; nwwid 14945540000000000a67854c6270b4359c66c272e2f3563213 h2 x; @2 T% ~7 I1 }+ o, K
alias iscsi-dm0: Y9 E0 s5 @: i" m: E" Z5 B
path_grouping_policy multibus; S3 w; F: c% M) J2 j
path_checker tur
' L' |: e( S; J" E ~6 _. h; kpath_selector "round-robin 0"1 k2 m9 D) S2 E. F, d
}
0 P* i0 F3 b! k" }multipath {
$ w& T E% {( u: C3 n: ^: Cwwid 14945540000000000dcca2eda91d70b81edbcfce2357f99ee% Q7 {6 ?! z' w, _7 G
alias iscsi-dm1
( X7 L- G3 n: Apath_grouping_policy multibus
. u0 e% D, ]) N6 bpath_checker tur/ V; B0 k( x6 e
path_selector "round-robin 0"; a1 p1 d2 ]% F
}
/ h- v4 o5 a8 z( O! Vmultipath {: q4 w2 {1 L2 r
wwid 1494554000000000020f763489c165561101813333957ed96
) M1 i% w: T, F: v! kalias iscsi-dm2
7 S' m3 Q0 b& }4 C1 W3 ]7 cpath_grouping_policy multibus! l' X3 U# A- O+ W' k
path_checker tur
& ^& A/ a- z' X2 n. S4 lpath_selector "round-robin 0"
9 n6 K8 z) p- [ ~}
7 h* [. d3 s* P( A) x# W7 Tmultipath {& O$ j0 i( h+ U& N$ f
wwid 14945540000000000919ca813020a195422ba3663e1f03cc3$ R7 k2 r- D0 B- u! I* a
alias iscsi-dm3( ]7 v& i3 ^. y! Y8 P
path_grouping_policy multibus
1 ?" W7 ? b! r2 Rpath_checker tur8 u0 D) R0 J2 ? {/ K
path_selector "round-robin 0"3 Z1 M8 f) a( m5 t! F
}
! N$ u" Z+ Z2 }9 z) y: E# _}1 U8 z, _1 {( J b- q# y; Q
devices {, V& C6 ^3 W, P/ l$ A
device {
5 @9 t) m# h# L5 ovendor "iSCSI-Enterprise"- W/ S. J7 S( p g; C( S
product "Virtual disk"( V7 F0 I3 M1 [
path_grouping_policy multibus; c! c s1 l! n$ }
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
- \+ d& x: E5 l4 Bpath_checker readsector0
; D. t2 P+ d: C' V8 z( D; zpath_selector "round-robin 0"' K x, @/ |' k4 V
}
3 M6 k0 a5 h- A( Z}
" M5 A8 S# c- N* @) y* V8 n$ L获取wwid的方法:
9 K, [, h- C( e' o/ h c& m(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。! I- _0 K3 L% S# p5 i
p_w_picpath+ @, x) R) x6 w0 N7 x# o
(2)# multipath -v3命令查找
8 |; S3 s. u1 E) @2 J+ c( Q5 Cp_w_picpath3 R. u; K! k9 q; |+ t
2 、负载均衡测试2 Q, q2 f& A2 W" z
使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:, B; k' {- k( \7 M+ l" K
# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1
( y( Z- {: `$ I+ r- A$ l. _' v+ X+ h8 [开启另外一个终端用以下命令查看IO情况
5 }) U G% Z1 m: U( c# iostat 10 10* w( h6 `9 C; m' o
p_w_picpath7 T8 u$ P( G! g& g B, [! u5 f
通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。& c' N3 j! q# t- P4 ~9 t
3 、路径切换测试
/ E7 j6 |. E# E, h1 [) o首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。 |
|