数据的
安全性是人们在使用
计算机中最重要的问题之一。通常情况下,人们会在
服务器环境中采用
硬盘镜像
技术,以达到数据的双重备份。同样在
Linux环境下,我们可以采用这种技术。在
Linux环境下,我们可以采用Raidtool工具,不仅可以将两个硬盘进行镜像。还可以制作软RAID0、RAID4、RAID5。说是软RAID,是因为通常情况下,RAID盘是通过专用的RAID卡进行的。而在
Linux 环境下,我们可以利用
软件raidtool达到RAID
功能。
* h; c: Q6 ]9 y! w8 u/ r
* d) N S: x3 C5 o1 Z; G
/ h# i& d [# G* V6 \) f% K
所以称为软RAID。建立并使用RAID盘有以下几种方法:
" o% ^: K v* b1 U' _5 l
/ F- G/ ~8 M. `" ^) [4 Y& v* _9 p+ n3 M5 s8 U. r( k
第一种方法:
8 } N: I: o, A' A, t: z
+ I6 x+ Z& B0 C% B) H: i2 I& Y' x7 w
自行
下载并编译raidtools软件包,较早版本的raidtool软件包名为md,现在已正式更名为raidtool。
下载地址:
& C6 [& |' M# x& e* P
0 p4 M) H. {' J6 C: A: ~' K4 K9 L
$ j( E7 R& ?; ^5 _ j中国
自由软件库,通过搜索引擎查找下载。
5 e" _9 `; Q$ \3 ?; n% M) O
4 E2 A7 p0 K3 T: ]& S7 p; f7 K9 v3 q6 i8 _
如果你已经从网上下载了raidtools-0.41.tar.gz软件包。解开后,自行编译,步骤如下:
# E5 l/ R$ X: Y" V
+ v- h! F/ O3 w4 m
$ f4 f8 t! t5 \9 F& N7 j$gunzip-draidtools-0.41.tar.gz
: e/ g8 `! n' m ?
1 S; N d, K+ _- J9 ~* g
4 x+ T! U6 {1 l/ H( [: h$tar-xvfraidtools-0.4.1.tar
) K/ k% [3 H) d O0 I! y& B
2 V6 W/ e6 n, _) n; L: E
3 p3 m: o( M* C' b7 X在使用raidtools之前,首先要知道目前正在使用的核心是否支持md。如果你正在使用的核心是2.0.x,并且不是
, l; @5 z/ o/ B( p
+ Y0 m j: [% k3 b: U% I$ L P
2 g7 D) I0 c/ z6 c8 C% ?; Z自己编译过的话,大多数情况下是支持软RAID的。如果不能确定,则应自己编译核心。在配置时,应选择对md的支持。
& H5 h3 J! \+ { X
3 R# q) W' u C' B0 o# X- Z( A. m4 I* _# D: @" M& U
确定了正在使用的核心支持RAID。则编译raidtools软件包如下:
$ M* _/ u; D1 W
, c+ R& [0 q( ]3 n* o! T( g1 o l$ i# j R( q' k& {; u
$cdraidtools-0.41
+ c! i0 o" q. ?* T! R
! r6 u' t7 @' l+ Q: w) k2 R* b
$ P) G# H/ k9 p: n5 J/ E$./configure
* e a( V& K; y+ O: r2 r6 H
3 X6 `8 Z* T3 Z. p' G: Y9 V) R
+ s. I# A7 M" S6 ^7 H0 f
$make
) f C$ J- j) A' ^4 V, ]
% z& F0 w* _' u& r1 {4 U3 b
4 L$ _/ L' ^$ z5 x0 u; `6 C+ |$makeinstall ##makeinstall在/dev下产生md0-md3共4个设备。
( m+ C% i5 r/ p3 \8 `4 ?
: {' y; ^& B) f+ O3 ^+ V i8 g- q7 G2 N) K3 R
OK, 安装完成。
- \8 ~8 e/ f" c
" e4 c5 ]. |% h P4 X, m1 Y& T
3 L6 f8 N0 }4 w, T3 i. f. [
在使用raidtool前,首先决定自己要使用的RAID的种
类。目前使用raidtool可以作RAID0,RAID1,RAID5。
! f% k4 `. c! ^' I7 y% S
& p0 a P+ U' x3 p9 L, C0 y
$ K( _4 v' C2 L& m由于只有两块硬盘而无法使用RAID5,除了RAID5外,还可以选择作linear模式或RAID0。笔者选择了作RAID0。
9 @/ V% t$ l: R J8 A6 _/ {' N+ r# m
5 m, p8 m5 ~* t0 K# O
8 \/ ?6 f4 q, _* j6 f" W' W以下为制作过程:
' N" ?9 q) Z0 X! M' Z9 m; c+ R' l' D6 `' a/ {1 H
( ^8 N( m/ d! m. c首先,关机,将两块小硬盘分别加到第一个IDE控制器的slave接口上。将第二块硬盘接到第二个IDE控制器上的slave
: d* y9 i" ^' Y: C: H& E
9 c9 ~0 U( \4 P
2 n: U* l- s6 b* K0 s接口上(笔者这台
机器上的CDROM接在第二个IDE控制器的master上)。
6 j7 x# J- O( n' ]4 L+ `- Z( x6 t- v
9 e- a) z) k# }3 g) K/ X. C+ k( Z0 m
( E$ y6 ` X$ }. J! y2 A加电启动
系统,以root登录,运行以下命令对硬盘进行分区:
1 u. |2 F1 e" C9 l7 ]
* _# r8 Q3 P/ E- a8 j- Q
# d4 _/ j. d B6 `+ v8 i' R#fdisk/dev/hdb
# J" Z, W; y$ ?+ v# e5 `& k
y. |0 f8 e( Y
4 m* w8 g7 J* z将全部硬盘划分给一个主分区,建立一个/dev/hdb1分区。
; `( J- t4 v. u! B
: g/ ?6 A" }4 M3 ]* g* k( j' m2 e6 \. I' ?
#fdisk/dev/hdd
( r1 H5 }+ G9 U# n9 I
+ I. ~: ^9 d# Q
% Z4 y4 X8 g1 K$ X& M6 e同样将全部硬盘划分给一个主分区,建立一个/dev/hdd1分区。
# o! D S0 \0 B7 e, l% ?- t
; G, |2 s% L1 e6 V& t8 S* E9 H% g- K1 N6 ^8 n, {5 n, A1 b
之后:
% I: a4 X9 o2 A8 |2 Z
R0 ~+ D. d; m5 x+ S% P) D- x9 T( B3 m/ S7 G3 d% U
#/sbin/mdcreateraid0-c4k/dev/md0/dev/hdb1/dev/hdd1
. J" G+ b- l5 f) A
_( J E. G( F
3 w6 M! d4 y: F* ^# Z# X1 D1 j: G当然,为了提高访问
速度,你可以将硬盘进行比较细致的划分,尽可能将分区合理分布在不同的硬盘上。然后再用
/ k- ^8 `' y8 q1 t3 X" G4 I: p" N5 m6 t b7 s9 b7 N5 `9 x0 f
* @. w4 P* l8 s% M& {! M
mdcreate将它们组合成一个mdx(x:1,2,3)
" Q* R3 I }4 H ~1 R" j" N K2 V" O! L
: j* z0 ` ~6 h( E( D) x8 D8 _为了使用新建立的RAID设备,首先应启动它:
8 L8 U3 Y1 C' o% ~; @) I
# C/ d( H: v! r: B( J2 b# { A
/ H" s& G6 N0 Y2 ~% j3 h" i( Z
#/sbin/mdadd-ar
) ^" S2 Z- [' d5 a3 G0 R# l9 ]
5 E) H% G# T% w, u2 S; L! q: t$ H$ i* t
之后,查看/proc/mdstats文件的内容,以检查RAID0的状态。
* ^& z8 q- n" z9 c8 u# j
( J- ]3 B$ I3 n: k* k/ p( M3 @. _& x
#cat/proc/mdstats
! E- B$ T7 g: g/ X, r( q
7 o1 c- G- ?# P, }' n# ^7 R$ h# h+ \, r- `5 c' e( `
系统显示:
" a; [4 u0 b5 w2 x5 w
- b$ J/ o4 ~; X9 e2 ]5 j6 b3 \$ y9 h! O( v
personalities:[1linear][2raid0]
" G. w, [3 r8 c/ _8 O
0 M7 B4 Z- j# S2 e J5 l9 Y
2 w: ^) R4 s7 C* V' V; ~: U# h+ x
read_aheadnot8092sectors
! L3 G2 W3 Z$ _4 C, E0 d
, X, _9 I. R t9 f* @" n+ J" x" j2 E9 z& U
md0:activeraid0hdb1hdd1xxxxblocks8kchunks
+ G7 I0 A+ S" O$ S" {+ Y( j3 |
2 r; O! J, A# f2 J. v* q
% P% g" m- T$ J# |md1:inactive
. h& K6 m7 Y% {" |8 ]/ u
4 `; h# S! F9 e+ e% F& e# n
& G j; j2 J; Imd2:inactive
9 G5 t% d9 d. o1 A) x9 @7 G% t* B4 M. m- O0 K
0 _, I% @( ^& `4 a
md3:inactive
8 \$ @8 p n" `( B8 N' c S
4 ]% r: @6 W3 }3 V5 D
' N/ s3 x$ h/ b5 ~) c这表示,新建的RAID0已经可以正常运行了。为了使用新RAID盘,还应在新盘上建立新的文件系统,建立过程如下:
. F" } z' R ^
: X9 J! y$ u* g8 j- e$ r! d8 ?# G
[2 v3 v. D5 i' l
#mke2fs/dev/md0 ##注:在新的存储设备上建立ext2文件系统
k7 d: K' W' o/ [1 U3 _1 m
; m4 c. f+ M) N& h1 e
7 q" B5 ^. t3 X( X2 ^7 ~, i建立了新的文件系统,再将它mount到根下的某个目录上,就可以正式使用了。安装方法如下:
9 A! X8 C! ~5 \ u7 l
8 \1 \, D. H, w4 B
$ g4 o* J# U$ f* y: o& }#mount /dev/md0 /opt##注:/opt为笔者在根分区建的一个mount点
* h6 q* O0 c; l4 n' z3 {
, O7 d5 e' M, e8 y$ c7 [5 P
2 M- X, u7 H, ?4 m当然,如果有必要的话,你还可以用raidtools建立raid5。以提高数据的可靠性。
+ y# j. Z1 g- T, T$ C; `" L# Y5 _! D, w8 \9 C+ o) Y9 F) O$ ?
" ^: W: t& ^) ?7 T* D
最后,将RAID0的加载及文件系统的加挂全加入到init.sysinit文件中,这样,只要系统一启动,首先就执行RAID,
* Q5 C- c8 I. n0 Q3 K8 |' R7 H; Y( t2 S
K, F5 Z8 O, T' C8 C6 O2 \" a用户就不必再手工安装了。
' Q) m2 ]4 v8 \+ V4 G8 i; f8 M7 D6 m. `. O/ D5 y s& x' Q8 k
# P: k, ?9 S6 s0 T* U* C% V# O
用户应将以下两个命令加入到init.syinit文件中。
" \1 L0 ]( S4 c, J0 V
' ]5 e! K4 i+ }% R! B& o: G$ u
/sbin/mdrun-ar
) c" |4 ^, v0 g, \$ R. u. N6 c
; y6 [9 R* ~* g2 n/ y% t% v4 @; N) C/ K6 m; S. h- ^' b0 {; D
mount/dev/md0/opt
0 T/ m- i5 r# _
, C; l* V4 p3 o# X$ d. l Q+ x6 D' s5 y) x7 E4 H/ r; L
当然,如果你不觉得麻烦,也可以手工运行以上命令,以手动方式启动软RAID盘。
5 }6 n, J& l4 ]+ s& e7 u
% @0 u$ Y7 o3 W! |
" }/ u7 J5 O. G
第二种方式:如果你安装的Linux发行版较新,其中已经带有raidtool工具,那么就不必再下载软件并自己编译了。
) u3 h' ]3 E7 a" Y( n( M; o$ D! c: W- s3 q- z; [5 ~1 h) [
' `9 w' L- j4 v# l
使用时可以这样处理:
# X( C, b$ ]+ y- g5 j6 V
7 }# l j3 T+ J! c/ h6 e- ?
% z. }( `% R5 _首先建立一个文件/etc/raidtab(以制作raid0为例),文件内容如下:
* y+ \( F3 B- T2 D' l5 ?% L
( z0 g# l) T7 i1 e
4 n6 A+ e4 U- X( [! K# y2 `
raiddev/dev/md0
* }& z3 k/ [( B" V( S
# B# ~, F, B4 h4 V
( C: Y7 s' `2 m- O) ~7 u( R
raid-level0
% M J6 c, [: @& z$ v* G; D5 R/ F
0 Z! j2 v+ D. s% U% U1 H; {) j: g D4 I
" `7 T1 p2 u+ K: d3 Y( w- ^nr-raid-disks2
* y3 O* \3 W3 N# u$ g$ `- ~* H# x9 \
/ t! O+ k8 b1 } T
3 u2 G: t/ M$ d/ a1 o. Z7 Z
persistent-superblock1
, j! D: H+ B9 `* u
1 Z" D8 }1 d/ i4 X& Y3 @7 j3 U2 R
- U' d }8 f, Q G4 m W3 schunk-size4
m: ~% [* F& Q( E" }, D
+ q) W+ _# @6 o- A" K) t
1 y. }5 Y8 _7 |( ], i# _6 i
device/dev/hdb1
( b, F. f' m* O+ l. S0 J7 R
/ @) B2 S7 ]) _4 b1 Q" v* E# W7 H: g+ l& t
raid-disk0
1 w+ k6 [: V! z
$ L& v& i+ j; R
( u, [( t5 h2 E$ i/ N# Kdevice/dev/hdd1
% i+ R$ J B/ c+ k6 h* A1 H, {5 q! u
3 R [% i* j- Z
raid-disk1
$ f8 @- ~, b- W/ y8 c( F
3 a5 K8 z! k/ I1 p+ `2 E3 ?3 B
3 {, q1 z7 w! |3 g1 ^. h9 Q然后,运行以下命令:
0 R$ k }, \3 u# x+ L
7 A9 X0 D3 w6 W+ C/ B
5 w, Z; X8 M" |
#mkraid/dev/md0
/ u, ]# O }5 Q6 T& \; n" X
. ]- }6 r0 f- Q! m; c; n
3 l7 R i, ^: Y- i% l$ e& r
这样就可以生成一个新的设备:/dev/md0。
+ S: l( t& o R+ `
& w& S0 X$ x, V, Z v t* B0 V* x6 ?: d' I, M2 X
启用软raid方法:
% Y% I" A) |/ G, _1 i. f" |( h. h
, ^9 e# T0 p7 r9 d$ o
" g3 ~ W! o/ E8 Y+ j" @#raidstart/dev/md0
7 _: \1 T$ a3 ~! w$ J
6 v' U/ O8 b q D4 F" Z
/ {" m0 i. _4 U( ^其余操作同上。
$ \! F! m0 s0 j y
" f0 K3 }. F5 z) a! q9 K' {7 i7 d6 m; E4 I; f( M# d
如果你正在使用的发行版很新,可能以下两种情况都不不适用于你,那么,你可以采用以下方式使用软RAID。
, p( w' ?5 x! D' l$ j9 X9 U. i% W7 ^8 C9 P- L
" l: {2 f& e2 t" E/ N9 @0 H# C笔者的一台PC上安装了
RedhatLinux 6.1,自行编译raidtool0.42,0.50beta2时,先是找不到所要的头
$ {! V1 h% L" `; @( D
( s2 ]0 N) f( O, l) }
+ z% q$ u0 \/ b文件,经笔者将所需头文件复制后,编译仍然通不过。原来,由于新的发行版采用了一系列新的函数,情况稍有
$ P7 H) t8 B9 K$ o( s6 H" d0 ^% X7 i5 a! i# D, c8 P
2 ]) }! y; l8 k, u8 ]
一点不同。不过,新的发行版中,提供了raidtools,在/sbin目录中,有raidtools的一系列工具,其中有
Q l, B; y- o+ A2 {0 [) q
- p; ^( ]: C7 T' _: ], g7 z" O6 M% Z# C) g0 a! I. a8 ^& f% _
mkraid,raid0run,raidstop,raidstart等一组工具。如果你想自己编译,可以从中国自由软件库中查找到
1 H6 Q+ U+ Z' n. X2 A
9 U1 M: ^% j. W" i
# H" ]7 j1 G. a8 }+ m了最新版为0.9的raidtool。自行编译了0.9版的raidtool。编译正常通过。
( |! [# r$ c2 Y8 G- o( @
1 q& Y- n6 v. d0 Y, A8 j- I
5 k5 E5 L y. N新版的raidtool稍有一点不同,笔者使用系统自带的raidtool,制作软RAID方法如下:
+ ]9 j0 V1 J7 i3 A2 p0 U* P- U6 p
* e" K. o/ _& E* t
) q# B# Z5 G# [7 L9 Y) @; j1、首先建立文件/etc/raidtab,2、文件内容如下:
8 l* a2 i5 ?) K
9 s* j Q+ N. a* t; c2 O
" T, j- {$ O ?) O4 r+ ~% G' sraiddev/dev/md0
# K% k& a9 h# Y8 t
9 U6 Z1 i5 k* r1 [& ~: {& x/ L8 W+ }; r, j! a) p, @% D- K h
raid-level 0
; _) ]1 x) o$ a) c5 ]0 q9 n# V& E, ^8 V. w
- J& Z* W7 @2 {5 q4 _. u7 [$ x
nr-raid-disks 2
9 r$ s" H/ C5 N2 z" p( k% o5 }
' C5 Z& X% o2 @* Z
* [7 b# p8 j" P; Y( Ppersistent-superblock 0
8 q0 A& V; `4 y4 H7 |# @
4 C2 F, Q) n8 o' p5 J* ^( ?. t/ j7 ^+ Z) e9 `" b' l* _
chunk-size 8
1 T% \& ^/ T. \! T9 n
' v7 D |5 ~' Q1 ]
7 D% S6 r0 \6 jdevice /dev/hdb1
( {. w( K# Z9 @& X, f
+ R5 c4 \7 `' S2 X9 w+ G( s1 r) }; j' a& d
raid-disk 0
& s8 _5 |' K/ i5 d0 h( c* C
% N$ e* L$ A% U0 M0 s+ l1 a
, s2 G' a% ?2 N) e1 ndevice /dev/hdd1
# z) D* ^$ r8 v' g2 j
+ j, H- r# G" o2 E
% V2 L; H$ [# x/ G( C! h
raid-disk 1
4 q# O( a% [7 O. r$ `7 W' p+ {7 m
+ M. p& @" D& K( N2 f( a
& D& X ]+ |7 O8 Q5 @! H' p 4 _9 ]0 U( f; h; \( P t4 t2 d
4 _- E9 y; Z5 B/ {) Q& R
! n1 {. }% t$ } D( G2 d- H* }+ T
3、生成软raid设备4、,5、运行以下命令:
$ a; ?$ _" ]: B6 e" B6 F, X. Q
3 m: f, n7 b# }4 y. I% c3 D! o1 H/ m6 G T9 J5 l: |6 k
#mkraid-c/etc/raidtab/dev/md0
. r6 G4 I% B. s1 f. Z+ v5 f9 M2 E( T! j4 L Z3 N
( v2 g8 P5 R3 q4 h0 {" ] W' _+ m
之后,运行以下命令,以查看目前RAID的运行状态。
, C! T/ ]5 ?4 D: i; ~' e
! a: a* ]# A- L" t( p q
0 `. \" n+ q9 }$ a8 q: o- Y" Q8 L[root@rh61/proc]#catmdstat
, x8 e( `* f0 U6 ]- s: b& |
" J1 @0 o+ i# f/ K' ]+ n1 z/ L
q, p1 V$ P9 F: Q2 q/ M; x如果系统显示如下:
/ n* f5 b+ q5 ^5 U5 t' x
5 E) G( f% J2 A' n
1 ] J# i b7 \Personalities:[raid0]
1 o3 r2 A9 V) p4 `3 e+ z; \7 E" k8 l% u2 m
- K$ J; d e9 i4 H" d1 N6 F2 G1 \read_ahead1024sectors
: v. S. Y' K6 l$ K. G
, E, k2 Z- W6 ?6 X. `1 H5 N, D# S K. L! m$ E! S& l
md0:activeraid0hdd1[1]hdb1[0]2202416blocks8kchunks
7 s- g% {7 _/ L" n) q- j
" Y) `0 j3 E" E* u$ W; K
3 b& d* L- ]* n& j. x& ^5 o) funuseddevices:
. \- W8 M/ V k
+ T3 y8 T3 i% ?
& O% }$ n+ F2 @6 e$ X
表示,你的RAID0已正常运行了。