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

楼主 |
发表于 2021-8-12 12:00:21
|
显示全部楼层
4、 multipath磁盘的基本操作* K$ V7 M! t' e/ y& Z1 }
要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.
% {3 V3 |$ F) N' y在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:9 Y$ _( h* x" ]6 b
# pvcreate /dev/mapper/mpath0
+ |1 \4 F+ b" X3 C4 n! {( N& M3 }, k# fdisk /dev/mapper/mpath0
$ i2 L( z8 Q V1 Yp_w_picpath K! K% T1 W+ p4 [1 t ^
用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。
0 v* o( I+ [6 K% k) A* o4 vfdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了9 M( K3 V4 |; m, y, Z
# service iscsi restart
2 i" D' }# g+ ^# ls -l /dev/mapper/
& J& F4 _ V5 ]# x+ E7 P' O: ^3 Y( Bp_w_picpath
: Z' _- `$ p* I* `; n) o& D- |如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区
% R. P; i; A" i: Q4 Y. B4 e& T8 n% e# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统, o6 S5 |. l8 O% }0 A0 ]: n
# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区. ^0 O% y( W- [0 Q' u2 S
p_w_picpath
! a3 k0 e; ]: M6 y s8 v- f ( g+ }* U/ s+ ?6 G. y: s/ s
3 V" \. M. g$ T# R& \ 0 p) ~8 I# w) P$ \
四、multipath的高有配置+ ~& X/ J# F. Y$ g( d6 o; R" x J9 y
以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。, c! E- q2 t8 f& g' A
1 、multipath.conf 文件的配置' }0 S3 R0 Y3 B5 q& _7 W" P
接下来的工作就是要编辑/etc/multipath.conf的配置文件
7 Y8 C: c* Y, t6 l) y7 Cmultipath.conf主要包括blacklist、multipaths、devices三部份的配置
5 i. u; J7 N' L; {" wblacklist 配置
& l; \ ?6 }( R2 Rblacklist {
. X2 I* F% f' n7 ~3 Hdevnode "^sda"
9 J1 c9 C. h. _/ K7 v9 p}
2 F; a! C+ \) w4 S( HMultipaths 部分配置multipaths和devices两部份的配置。
, S9 G7 a% p2 e9 Bmultipaths {* N' \' t: B3 B$ f' z/ \, ]' y$ g, Q
multipath {* K7 N. p$ `; E) C7 Y
wwid **************** #此值multipath -v3可以看到7 U, U& e* g# N6 S- @, L) W* ~9 _+ t
alias iscsi-dm0 #映射后的别名,可以随便取' T ]. E" X* o# g8 O+ t2 y1 F; U2 h
path_grouping_policy multibus #路径组策略
7 Q6 ?4 c( s, ?6 p1 kpath_checker tur #决定路径状态的方法
" a& G7 N# W }" x; H" m! jpath_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法! j7 J9 A: y5 P, h& U
}# A6 `+ V' P" C# g
} . ?2 N. [% c1 j/ L
Devices 部分配置( s2 h+ r/ B9 L/ K$ M: Q0 [0 K" ~. G: R: f
devices {
5 w/ T" l0 g4 ]1 H; m4 Tdevice {0 ~6 x% C4 p( k: H7 D( J
vendor "iSCSI-Enterprise" #厂商名称
9 }# G4 D& r; T( I7 Lproduct "Virtual disk" #产品型号# ^+ j8 @/ ~* Z: {# |- J2 [: e; z
path_grouping_policy multibus #默认的路径组策略
( X+ p' G9 l J9 T( I0 \) |getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序- [' u/ J+ H8 k+ ]& L
prio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序
) p+ [, E) m3 D7 y. }: Fpath_checker readsector0 #决定路径状态的方法" G& }( [* r3 a; g7 x6 K+ q
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法: ^* P/ R( K- k$ i$ g
failback immediate #故障恢复的模式) [- B2 g# a6 P5 \6 n' e1 e8 C3 i
no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值
, p R5 u% v# Y8 J* U6 E: F rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目
, G8 P/ _% B) w$ s8 } a3 T) U+ }# y! {}
2 `' s! P9 H# Y+ e5 b' F}
' G) K: U9 f R) B$ g8 }3 u/ w如下是一个完整的配置文件( x* t7 i- ]4 C1 V$ `2 H% f
blacklist {
* m' e; w6 c `devnode "^sda"$ J) ~# K9 f0 b. J6 n6 ?
}
% |) h v& W1 ~0 b8 D0 ?4 @defaults {
: Z& h) U' C* Juser_friendly_names no
. w: O$ w4 T( a7 B" g}
# M3 d% [1 X. m: e9 {9 @multipaths {
1 T7 w0 M% m0 v6 l6 @multipath {- @! f) F( z) V9 B3 X# R; u
wwid 14945540000000000a67854c6270b4359c66c272e2f356321 v5 D9 U6 n% I" n* y
alias iscsi-dm0
; L- J6 F- W6 G! f% @path_grouping_policy multibus; \: G) T9 j$ Q- v4 r- F
path_checker tur
6 y0 E0 C. M+ ?5 R7 W m+ Ypath_selector "round-robin 0"
O1 l' V' X5 Y6 C1 h, Z2 b0 e}
2 i, w9 m0 J X7 Smultipath {6 W( W0 _+ V( M% Q+ l; n: r
wwid 14945540000000000dcca2eda91d70b81edbcfce2357f99ee' S2 L3 j3 y+ S9 M0 A
alias iscsi-dm1" }) ~4 |) {. f9 ?6 d$ [
path_grouping_policy multibus
( V4 e# P9 o3 A+ u" Rpath_checker tur
$ k- ?1 X$ B' |path_selector "round-robin 0"; E8 d3 l/ |0 r4 Q* g3 l# t. G8 b
}' p1 N5 `$ @0 h! r
multipath {
/ ^9 |/ o B3 E0 ?# lwwid 1494554000000000020f763489c165561101813333957ed965 \4 Y9 O/ o! }" C! t
alias iscsi-dm2
& H% X$ r3 e: S* Y- f8 ipath_grouping_policy multibus
" j8 v* I6 o: Opath_checker tur8 B! @* D8 [ o) }/ i% Q6 ^$ \5 R
path_selector "round-robin 0"
0 s# Y( V8 [& E- C}2 C6 L% h g k& q" j6 S- d
multipath {9 h" I' \8 t3 L5 z, O& V9 K: h
wwid 14945540000000000919ca813020a195422ba3663e1f03cc3
9 {* b. P" f" Talias iscsi-dm3
* V! w4 I# n+ ]path_grouping_policy multibus+ |0 s% a) S5 k
path_checker tur: `8 [, U: J+ j, [) v: z: ?; j$ `
path_selector "round-robin 0"2 y+ X N9 s- u2 C* U( n
}
' T! u x) O' d! F, I- h& U6 {}* S4 y, f7 B6 @9 G( @3 g
devices {
3 v- [, b" ~; _device { E/ ^7 G- q2 c+ O9 m( W7 s
vendor "iSCSI-Enterprise"
! j& P) e2 U) ?7 v! a) n+ z- ]product "Virtual disk"
$ s, _8 e; M0 o' l. r% \4 xpath_grouping_policy multibus7 Y C& Y$ W0 [
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"/ |7 h0 m: O2 N
path_checker readsector0
8 T% D! z+ ^5 e, F6 y- u. x- \/ Spath_selector "round-robin 0"6 |, m$ b- A; }; N; |) |3 p
}2 V: @. l( N3 A' n1 l) F. N
}! O$ q2 R+ }: R+ f) F/ J
获取wwid的方法:' e! I* F% H/ g1 o& I k5 d
(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。0 m8 B5 u) d" A. b# \/ Z
p_w_picpath* ]6 N. E8 e- m2 G
(2)# multipath -v3命令查找( X0 M2 a2 n5 }6 @# i) {1 R
p_w_picpath& s4 g6 ?( I" H$ h) W. N
2 、负载均衡测试) n3 K+ u2 k2 [* q3 ?
使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:
# y0 J; j/ ?! f3 D# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1
. y; A, \2 [- T' y8 ?' O7 v' J4 h开启另外一个终端用以下命令查看IO情况
# z" p) h8 O! M" w1 ]: m* C# iostat 10 10
9 ?4 B& ^9 w( Z: u. k. vp_w_picpath
& I8 F$ Q: O- w: X' A: }3 X; l通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。
- y6 O1 w+ i; X/ [2 t3 、路径切换测试
, G$ b- i* v8 k8 {6 B0 l+ c( [# t2 F首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。 |
|