|
|
楼主 |
发表于 2021-8-12 12:00:21
|
显示全部楼层
4、 multipath磁盘的基本操作
% M4 w1 U. I. e/ _要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.0 q' f' _5 T, |: Q/ I5 K- ]: g% {
在对多路径软件生成的磁盘进行分区之前最好运行一下pvcreate命令:
, L, Z3 t) ?- u# ~# pvcreate /dev/mapper/mpath0
0 @) I9 o# @0 D3 a( z1 a# fdisk /dev/mapper/mpath0
! D8 ~/ X- s: u* _+ w: U4 _p_w_picpath) Q5 R* A+ \& F: B1 A3 Q
用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。' A* R, h' t& i2 Z( m
fdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了; E5 `: U8 \; R4 P
# service iscsi restart
5 a% N( y+ x' r9 D# A9 U! C# ls -l /dev/mapper/
8 _# N4 E& i' D$ J0 R$ I( mp_w_picpath$ R5 l1 l1 U% N" k" N+ V
如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区
/ @/ ]; M% E3 t0 A% L9 k; Q% c8 P i# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统
i2 `0 ^7 |; S9 U( V# `$ f# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区7 R1 ~8 x: R0 C. X! R9 ?- x
p_w_picpath
* }$ @" [: ?- Y9 [7 \+ k/ E
0 c6 k+ a D% M" p. W
- y, Z: N2 \ f# `
" g k; Q* Z6 f/ h5 F9 ?2 V6 B四、multipath的高有配置! o2 a' l/ L/ h/ }2 a2 @
以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。
; u v# m7 }2 k1 、multipath.conf 文件的配置
! a. g& h5 k& i, ` |接下来的工作就是要编辑/etc/multipath.conf的配置文件$ H/ x) Z) v9 y
multipath.conf主要包括blacklist、multipaths、devices三部份的配置5 A+ D1 Q- n6 Y
blacklist 配置
! J7 r; @+ q% Y4 S2 d3 j, Lblacklist {
! N; ?8 Q1 y6 wdevnode "^sda"' n+ J9 y: {3 e$ t% [; |$ F( e; ?) }
}; f0 D! V: ?& c0 E" C/ I7 i
Multipaths 部分配置multipaths和devices两部份的配置。
+ X# O) W: S$ G! X! [multipaths {
# R; X* |# Q8 a, } [& _1 bmultipath {
, u. v3 t! Y' z& g1 Kwwid **************** #此值multipath -v3可以看到
7 {& B) v/ z- w4 malias iscsi-dm0 #映射后的别名,可以随便取
8 j$ b' d' }5 \. F# y, lpath_grouping_policy multibus #路径组策略
7 j- Y) i) u$ z& {path_checker tur #决定路径状态的方法# Q, f) @2 R9 `+ i
path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
9 [/ d2 F- ?' [" v9 c}; m& x- ]8 J1 S4 f
}
+ w5 _2 }( F1 R" h: h9 gDevices 部分配置0 w3 R" |3 ^1 ?7 s
devices {: \0 e4 ^" i; N$ a- F ]
device {; F4 D; S( J, R, q) ?3 B3 ^9 d
vendor "iSCSI-Enterprise" #厂商名称) `' N' \7 M: Z: T5 B& e
product "Virtual disk" #产品型号8 o" {7 d; a2 P0 z) B8 O
path_grouping_policy multibus #默认的路径组策略* S9 ?2 h! D7 G
getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序/ J7 [) {& E# I
prio_callout "/sbin/acs_prio_alua %d" #获取有限级数值使用的默认程序
, V$ d0 ]4 b0 O4 p, ipath_checker readsector0 #决定路径状态的方法
- |2 J3 M4 ^, p1 ^, Y9 U( ypath_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法
1 e+ y5 r& Z* p- C5 vfailback immediate #故障恢复的模式; N j0 C3 ]$ }6 h/ u
no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值: g( ~, ~; ]& p* Y/ L
rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目
* b: Q* p4 J6 [8 G# y9 w- M}
; O$ K7 p1 F0 q- N9 V n}9 S8 ~3 _* J9 E' m
如下是一个完整的配置文件
" J# s9 u" k5 T+ m$ Pblacklist {& e; o9 c/ P. b5 e) ~
devnode "^sda", O! S7 ^$ s- O& h
}
: h C ^, g$ }defaults {
# z: c9 E( e" Z: L. wuser_friendly_names no. s M" L7 k$ G d6 Z `! z, [
}
+ c4 S1 N* }" vmultipaths {
* J( ~, w; I( J. J0 t9 Vmultipath {
. i0 n( S7 K, Y: j( H* twwid 14945540000000000a67854c6270b4359c66c272e2f356321
# W% N; }- k$ \5 l" @alias iscsi-dm0: O6 e6 T2 A; y- Z+ f
path_grouping_policy multibus
& s2 O9 N# f( n8 e9 kpath_checker tur
: U" E5 g# W% w8 d+ C$ Wpath_selector "round-robin 0"
; k9 y* ?/ a; {% ?# @& u% W* a; {3 q}
u, z* S; k" p2 N' z& {multipath {
3 ?5 E% h3 R6 K6 r$ q) s9 K t' d4 _wwid 14945540000000000dcca2eda91d70b81edbcfce2357f99ee
6 J0 |( [! h: N1 u+ a: S! D y! Lalias iscsi-dm1
7 R# f) v& Z, j4 C# ^3 npath_grouping_policy multibus
`4 c8 ~0 A3 _0 Q+ f$ `) cpath_checker tur! d1 s- S" q8 v) _6 `" C! K, J" X
path_selector "round-robin 0"0 C" o4 I$ A% U" B; ~
}
- P% p& ]7 W7 A$ D/ z4 v* b% }multipath {
" L: a$ N+ e/ g* K$ Rwwid 1494554000000000020f763489c165561101813333957ed96
) y* A* s( r/ Ualias iscsi-dm20 Z# {5 ^; M) g3 D7 l. O: l2 t
path_grouping_policy multibus
5 Y. T+ }0 a" ~- Upath_checker tur' z7 b9 y' v& _8 [: C" {& G( _
path_selector "round-robin 0"
+ M1 a( q2 y( X! l- D/ T% J}9 Z w% W* f& |' _: U" @4 ?/ W5 _0 S$ ^% j
multipath {
' S8 I* P# F! C5 Xwwid 14945540000000000919ca813020a195422ba3663e1f03cc3
5 ]* u$ s3 W/ @+ v4 kalias iscsi-dm3( q3 {4 j) ?) Q! M
path_grouping_policy multibus
: C$ |0 j9 Q3 F. E# }, W i3 `! Zpath_checker tur
8 L# s8 v5 N8 xpath_selector "round-robin 0"
- \/ {9 X' u0 n; O1 z% @6 U+ f}, v+ c! W5 E9 Y e+ d! m
}
. d3 [: o ?; r8 w) J! o$ j. ~$ z( ]devices {0 l8 X; k! u8 f" D
device {
" n6 m* |0 d, N. n( M5 ~8 Nvendor "iSCSI-Enterprise"
: i* w/ L* l9 n: U( w+ T" u" ?product "Virtual disk"/ o' L, n3 c+ M" `. D
path_grouping_policy multibus
" \" K4 ]- ]! u: e& hgetuid_callout "/sbin/scsi_id -g -u -s /block/%n"/ |- q1 g, G. u# P7 G
path_checker readsector0
8 U# p) t2 P" S; Gpath_selector "round-robin 0"
4 i& }# ]' ^7 `+ H7 Q}: b1 Z3 H+ X) L$ N5 D
}2 t5 m5 T7 G; h9 u- l
获取wwid的方法:
: U% e2 g7 D+ m' @% S(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。
& K. \0 O' @, ~9 L: u- dp_w_picpath6 g2 B, e3 F8 _- f' R0 p* S$ i
(2)# multipath -v3命令查找
; L' {( y1 R. P4 \* `6 e% M' Fp_w_picpath
9 U" J8 v5 I8 \ B# ]: S+ p2 、负载均衡测试
/ m6 l8 q* t, V# _9 E9 A3 P使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:/ p! j3 s: [2 z+ r* y3 g
# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1( f1 S: K- ^ t7 J- S, C& k
开启另外一个终端用以下命令查看IO情况; C8 k# M: D8 x5 {1 W
# iostat 10 10
- a% W- _0 o% R+ ~ O* V* T8 B) Kp_w_picpath7 W5 U) _8 P8 Z |
通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。
; B4 W3 p' d" \1 q$ {3 、路径切换测试% M8 J4 H0 v' r& s% {* B4 c
首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。 |
|