|
|
楼主 |
发表于 2021-8-12 12:00:21
|
显示全部楼层
4、 multipath磁盘的基本操作! d. G J( n+ t3 b% ?6 h4 R2 ~
要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.- @) T' ^, u; P+ V8 A
在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:, C% b8 ^$ a" d. S* j6 i
# pvcreate /dev/mapper/mpath07 A. Q ~& N2 n; g$ H+ e
# fdisk /dev/mapper/mpath0
) a r/ P4 _! y' e3 ~+ A% _& I% G. Tp_w_picpath
' {7 j( w+ U# o1 u7 D用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。
& p& ~5 o! E8 W! t! Rfdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了. \" j5 X! Q) Z
# service iscsi restart
/ R: }/ M4 f- m, S# ls -l /dev/mapper/7 a' h* U% @+ c! Z1 d8 X" U" L
p_w_picpath, N$ \) r4 }; {) X3 z2 U& B
如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区& s# b- `7 X! j4 v5 Q* R$ Y
# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统4 A4 T3 v: c: u- u: U6 [; A
# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区* s" W( c* Y1 H0 I$ r
p_w_picpath" G+ K! @$ ^! [! f9 a g+ }
8 O+ ] }( j |
5 O5 L6 ?3 f3 L. ]0 d
, d+ n" ~: U! w0 E! B) a: `( A( ]四、multipath的高有配置% O# F! m& A" m! O, N. T. @
以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。, \; b7 N8 M8 R# }3 n9 z
1 、multipath.conf 文件的配置
7 D4 N5 l: }4 p: f' e, U7 d9 i+ M接下来的工作就是要编辑/etc/multipath.conf的配置文件* A- w- p9 D2 }' g" w& D& y* }# C
multipath.conf主要包括blacklist、multipaths、devices三部份的配置( Y4 O% h5 [) _1 K: z* P0 C @
blacklist 配置
% U" j4 X2 T1 n. h' Zblacklist {9 q" i9 l7 i/ W& Q3 Q: T
devnode "^sda"
5 O6 L/ T; N2 e8 [; R' r: S: S0 b}
9 q0 t2 \2 m3 o" M+ Z0 l0 i6 aMultipaths 部分配置multipaths和devices两部份的配置。
, m& S$ ^; B5 l6 Q& C+ fmultipaths {
; ^" g* q- L" S- Cmultipath {
$ q- v% s7 \7 p: g: swwid **************** #此值multipath -v3可以看到
4 Q2 d( \6 b) Y' U; q3 E' ]alias iscsi-dm0 #映射后的别名,可以随便取
b k$ g( p& T' npath_grouping_policy multibus #路径组策略8 L4 o5 Y) i; h' U8 q
path_checker tur #决定路径状态的方法; x2 w1 E0 J$ I( V4 W+ @0 d
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
, y4 J1 ^, ^7 A d4 ]; S}
& c6 w: o& w1 Z6 G [} + H; s- ~3 K0 f" H& h% n
Devices 部分配置
- W$ v7 q7 W7 Xdevices {
+ ]+ b% Y) d) Y+ M2 L3 P( hdevice {1 G7 Q/ ?8 S0 o3 e
vendor "iSCSI-Enterprise" #厂商名称
0 B/ ^* Y' R' \) g9 ^6 U+ S4 H! dproduct "Virtual disk" #产品型号3 J& s* c/ R1 f/ N4 h6 Q8 }
path_grouping_policy multibus #默认的路径组策略
/ n, o, O3 p5 T# A p; ]+ ^; l; ogetuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序
+ Z6 r5 e8 |, |/ X6 Pprio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序
4 G% U/ S3 ^3 Q% N* X1 Ipath_checker readsector0 #决定路径状态的方法( M. w- J: H( q3 d
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
; }& R: k9 Y0 Z! e6 ofailback immediate #故障恢复的模式! ?" X! V) G8 G9 H
no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值$ Z) u I$ A! X8 p4 V& Y5 ~; a
rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目' d |: p$ r4 q2 g0 @" X7 Q1 F
}
$ F0 Z& |6 k2 E6 Q3 ?/ s4 t0 [}
9 A$ O) A$ M$ j$ S) ]( {如下是一个完整的配置文件
! `( J) b! Z5 a# m/ iblacklist {
( v! r5 h* i' G! {devnode "^sda"! Y' x1 Y( [) K$ I8 A" b
}
( ^' c3 ^2 V) l- O5 {defaults {
% F" n! }2 B6 t: vuser_friendly_names no
0 `, V. c1 C0 Z G}
0 U/ C6 c- B7 S- r! \& ?+ Hmultipaths {( K7 N, Z; j+ ^6 i- U: ~3 p! H& ~
multipath {! ~0 _4 x1 g% l+ \' h0 |
wwid 14945540000000000a67854c6270b4359c66c272e2f356321
" e4 Z( n$ i* D/ L- M: calias iscsi-dm09 {! H. Z2 o* H0 R
path_grouping_policy multibus
) x0 e5 d- O; J! j! ?8 Qpath_checker tur
1 {" ^; l% U" x! cpath_selector "round-robin 0"
7 z% V* G6 Z% Q" T}( x/ `1 q1 R3 r) n ^1 L. K" S. J
multipath {+ h3 v& [: S% g$ i* g3 q
wwid 14945540000000000dcca2eda91d70b81edbcfce2357f99ee
5 E V- L$ @( N1 p5 C' galias iscsi-dm1. m( d/ Q( g L: o: v" f
path_grouping_policy multibus
: e, U; U% y' q/ xpath_checker tur
3 d, p: M2 _" F' q( d" d* @path_selector "round-robin 0"
! ]0 ?& Z& u' Q" f}
% H& ?. `. J1 H1 m- v! w" Omultipath {
. i: m/ b' t' w: jwwid 1494554000000000020f763489c165561101813333957ed96
; ]- o( U: J' f% l! D: ?6 Yalias iscsi-dm2
$ o4 w/ C7 T; |+ hpath_grouping_policy multibus8 L( N8 _1 d9 [/ s! w7 @$ ^% A Y
path_checker tur1 S$ X1 C6 F( p N! _% Q6 P8 b
path_selector "round-robin 0"
2 N# X- k+ z3 Q+ h}+ X6 a9 H( E9 }
multipath {% A% {. p: }$ ?8 N
wwid 14945540000000000919ca813020a195422ba3663e1f03cc3
1 ?& X4 P/ ? J; L7 m# Galias iscsi-dm3
1 U; _0 M: e& C" d; a S fpath_grouping_policy multibus
# s2 C, u8 I7 B& _% _. gpath_checker tur
4 v; z8 e% H! Opath_selector "round-robin 0"
( a+ d5 b. }3 Z. P; H+ G}
. F( l) m9 M0 _- c! D}
! V3 ?. E3 P* g" y, E& A: `/ Bdevices {/ t5 r* l; }, {" k
device {
. _: Z; [8 }; c7 i' N4 Cvendor "iSCSI-Enterprise"1 X) y& f4 v: `) o( t6 c
product "Virtual disk"
4 M- C0 T6 }6 n# Apath_grouping_policy multibus# ]( I/ S* a6 q7 ]) R0 T/ f
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
9 @- q1 O0 V0 m' hpath_checker readsector0
/ M! y; T+ V" k& _1 u1 L! | Upath_selector "round-robin 0"
$ B/ C$ W( K6 h! M} V1 t/ Q- \( M# g- \
}! N* V1 _2 x/ d: R
获取wwid的方法:
4 l% \! R6 l! T(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。
$ p& j. I) c1 v7 y3 ip_w_picpath
) f6 C( O, r, w# v/ R5 E(2)# multipath -v3命令查找
# T5 c' g8 {3 z" rp_w_picpath% X8 P6 O. Z# b" e" w A
2 、负载均衡测试4 M5 R/ I( H2 S1 ]/ {
使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:
" F7 g. l3 Z8 E& m6 B! U; {# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1
8 r8 ?/ q$ R5 @8 b- A: I$ ~开启另外一个终端用以下命令查看IO情况! e6 j1 ?! P! y) c5 n
# iostat 10 10
0 `) I' B: w( d7 d* vp_w_picpath
3 u- a) o e5 L3 D5 n- u通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。) k. w, L% q# |& h' z$ `3 @) C
3 、路径切换测试
* M) J, \. h" A" j& x: c: ]5 l! j首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。 |
|