目录
-
1.什么是Raid;
2.RAID级别介绍;
-
2.1 RAID0的特色与应用;
2.2 RAID1的特色与应用;
2.3 RAID 3的特色与应用;
2.4 RAID 4的特色与应用;
2.5 RAID 5的特色与应用;
2.6 RAID 0+1﹝RAID 10﹞的特色与应用;
+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++
1.什么是Raid;
RAID(Redundant Array of Inexpensive Disks)称为廉价磁盘冗余阵列。RAID 的基本想法是把多个便宜的小磁盘组合到一块儿,成为一个磁盘组,使性能达到或超过一个容量巨大、价格昂贵的磁盘。
目前 RAID技术大体分为两种:基于硬件的RAID技术和基于软件的RAID技术。其中在Linux下经过自带的软件就能实现RAID功能,这样即可省去购买昂贵的硬件 RAID 控制器和附件就能极大地加强磁盘的 IO 性能和可靠性。因为是用软件去实现的RAID功能,因此它配置灵活、管理方便。同时使用软件RAID,还能够实现将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。固然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表如今检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。
2.RAID级别介绍;
通常经常使用的RAID阶层,分别是RAID 0、RAID一、RAID 三、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或称RAID 10﹞。咱们先把这些RAID级别的优、缺点作个比较:
RAID级别 相对优势 相对缺点
RAID 0 存取速度最快 没有容错
RAID 1 彻底容错 成本高
RAID 3 写入性能最好 没有多任务功能
RAID 4 具有多任务及容错功能 Parity 磁盘驱动器形成性能瓶颈
RAID 5 具有多任务及容错功能 写入时有overhead
RAID 0+1/RAID 10 速度快、彻底容错 成本高
RAID 0 存取速度最快 没有容错
RAID 1 彻底容错 成本高
RAID 3 写入性能最好 没有多任务功能
RAID 4 具有多任务及容错功能 Parity 磁盘驱动器形成性能瓶颈
RAID 5 具有多任务及容错功能 写入时有overhead
RAID 0+1/RAID 10 速度快、彻底容错 成本高
2.1 RAID0的特色与应用;
也称为条带模式(striped),即把连续的数据分散到多个磁盘上存取,如图所示。当系统有数据请求就能够被多个磁盘并行的执行,每一个磁盘执行属于它本身的那部分数据请求。这种数据上的并行操做能够充分利用总线的带宽,显著提升磁盘总体存取性能。由于读取和写入是在设备上并行完成的,读取和写入性能将会增长,这一般是运行 RAID 0 的主要缘由。但RAID 0没有数据冗余,若是驱动器出现故障,那么将没法恢复任何数据。

2.2 RAID 1 的特色与应用;
RAID 1又称为镜像(Mirroring),一个具备全冗余的模式,如图所示。RAID 1能够用于两个或2xN个磁盘,并使用0块或更多的备用磁盘,每次写数据时会同时写入镜像盘。这种阵列可靠性很高,但其有效容量减少到总容量的一半,同时这些磁盘的大小应该相等,不然总容量只具备最小磁盘的大小。

2.3 RAID 3特色与应用;
RAID 3 是将数据先作XOR 运算,产生Parity Data后,在将数据和Parity Data 以并行存取模式写入成员磁盘驱动器中,所以具有并行存取模式的优势和缺点。进一步来讲,RAID 3每一笔数据传输,都更新整个Stripe﹝即每个成员磁盘驱动器相对位置的数据都一块儿更新﹞,所以不会发生须要把部分磁盘驱动器现有的数据读出来,与新数据做XOR运算,再写入的状况发生﹝这个状况在 RAID 4和RAID 5会发生,通常称之为Read、Modify、Write Process,咱们姑且译为为读、改、写过程﹞。所以,在全部 RAID级别中,RAID 3的写入性能是最好的。
RAID 3的 Parity Data 通常都是存放在一个专属的Parity Disk,可是因为每笔数据都更新整个Stripe,所以,RAID 3的 Parity Disk 并不会如RAID 4的 Parity Disk,会形成存取的瓶颈。
RAID 3的并行存取模式,须要RAID 控制器特别功能的支持,才能达到磁盘驱动器同步控制,并且上述写入性能的优势,以目前的Caching 技术,均可以将之取代,所以通常认为RAID 3的应用,将逐渐淡出市场。
RAID 3 以其优越的写入性能,特别适合用在大型、连续性档案写入为主的应用,例如绘图、影像、视讯编辑、多媒体、数据仓储、高速数据撷取等等。
2.4 RAID 4特色与应用;
建立RAID 4须要三块或更多的磁盘,它在一个驱动器上保存校验信息,并以RAID 0方式将数据写入其它磁盘,如图所示。由于一块磁盘是为校验信息保留的,因此阵列的大小是(N-l)*S,其中S是阵列中最小驱动器的大小。就像在 RAID 1中那样,磁盘的大小应该相等。

若是一个驱动器出现故障,那么可使用校验信息来重建全部数据。若是两个驱动器出现故障,那么全部数据都将丢失。不常用这个级别的缘由是校验信息存储在一个驱动器上。每次写入其它磁盘时,都必须更新这些信息。所以,在大量写入数据时很容易形成校验磁盘的瓶颈,因此目前这个级别的RAID不多使用了。
RAID 4 是采起独立存取模式,同时以单一专属的Parity Disk 来存放Parity Data。RAID 4的每一笔传输﹝Strip﹞资料较长,并且能够执行Overlapped I/O,所以其读取的性能很好。
可是因为使用单一专属的Parity Disk 来存放Parity Data,所以在写入时,就会形成很大的瓶颈。所以,RAID 4并无被普遍地应用。
2.5 RAID 5特色与应用;
在但愿结合大量物理磁盘而且仍然保留一些冗余时,RAID 5 多是最有用的 RAID 模式。RAID 5能够用在三块或更多的磁盘上,并使用0块或更多的备用磁盘。就像 RAID 4同样,获得的 RAID5 设备的大小是(N-1)*S。

RAID5 与 RAID4 之间最大的区别就是校验信息均匀分布在各个驱动器上,如图4所示,这样就避免了RAID 4中出现的瓶颈问题。若是其中一块磁盘出现故障,那么因为有校验信息,因此全部数据仍然能够保持不变。若是可使用备用磁盘,那么在设备出现故障以后,将当即开始同步数据。若是两块磁盘同时出现故障,那么全部数据都会丢失。RAID5 能够经受一块磁盘故障,但不能经受两块或多块磁盘故障。
RAID 5也是采起独立存取模式,可是其Parity Data 则是分散写入到各个成员磁盘驱动器,所以,除了具有Overlapped I/O 多任务性能以外,同时也脱离如RAID 4单一专属Parity Disk的写入瓶颈。可是,RAI?D 5在座资料写入时,仍然稍微受到"读、改、写过程"的拖累。
因为RAID 5 能够执行Overlapped I/O 多任务,所以当RAID 5的成员磁盘驱动器数目越多,其性能也就越高,由于一个磁盘驱动器再一个时间只能执行一个 Thread,因此磁盘驱动器越多,能够Overlapped 的Thread 就越多,固然性能就越高。可是反过来讲,磁盘驱动器越多,数组中可能有磁盘驱动器故障的机率就越高,整个数组的可靠度,或MTDL (Mean Time to Data Loss) 就会下降。
因为RAID 5将Parity Data 分散存在各个磁盘驱动器,所以很符合XOR技术的特性。例如,当同时有好几个写入要求发生时,这些要写入的数据以及Parity Data 可能都分散在不一样的成员磁盘驱动器,所以RAID 控制器能够充分利用Overlapped I/O,同时让好几个磁盘驱动器分别做存取工做,如此,数组的总体性能就会提升不少。
基本上来讲,多人多任务的环境,存取频繁,数据量不是很大的应用,都适合选用RAID 5 架构,例如企业档案服务器、WEB 服务器、在线交易系统、电子商务等应用,都是数据量小,存取频繁的应用。
2.6 RAID 0+1﹝RAID 10﹞的特色与应用;
RAID 0+1/RAID 10,综合了RAID 0 和 RAID 1的优势,适合用在速度需求高,又要彻底容错,固然经费也不少的应用。 RAID 0和RAID 1的原理很简单,合起来以后仍是很简单,咱们不打算详细介绍,却是要谈谈,RAID 0+1到底应该是 RAID 0 over RAID 1,仍是RAID 1 over RAID 0,也就是说,是把多个RAID 1 作成RAID 0,仍是把多个 RAID 0 作成RAID 1?
RAID 0 over RAID 1
假设咱们有四台磁盘驱动器,每两台磁盘驱动器先作成RAID 1,再把两个RAID 1作成RAID 0,这就是RAID 0 over RAID 1:
(RAID 1) A = Drive A1 + Drive A2 (Mirrored)
(RAID 1) B = Drive B1 + Drive B2 (Mirrored)
RAID 0 = (RAID 1) A + (RAID 1) B (Striped)
(RAID 1) B = Drive B1 + Drive B2 (Mirrored)
RAID 0 = (RAID 1) A + (RAID 1) B (Striped)
RAID 1 over RAID 0
假设咱们有四台磁盘驱动器,每两台磁盘驱动器先作成RAID 0,再把两个RAID 0作成RAID 1,这就是RAID 1 over RAID 0:
(RAID 0) A = Drive A1 + Drive A2 (Striped)
(RAID 0) B = Drive B1 + Drive B2 (Striped)
RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)
(RAID 0) B = Drive B1 + Drive B2 (Striped)
RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)
在这种架构之下,若是 (RAID 0) A有一台磁盘驱动器故障,(RAID 0) A就算毁了,固然RAID 1仍然能够正常工做;若是这时 (RAID 0) B也有一台磁盘驱动器故障,(RAID 0) B也就算毁了,此时RAID 1的两磁盘驱动器都算故障,整个RAID 1资料就毁了。
所以,RAID 0 OVER RAID 1应该比RAID 1 OVER RAID 0具有比较高的可靠度。因此咱们建议,当采用RAID 0+1/RAID 10架构时,要先做RAID 1,再把数个RAID 1作成RAID 0。
3. 怎样选择Raid级别;
RAID 012345 到底哪种适合你,不仅是成本问题,容错功能和传输性能的考虑以及将来之可扩充性都应该符合应用的需求。
RAID 在市场上的的应用,已经不是新鲜的事儿了,不少人都大略了解RAID的基本观念,以及各个不一样RAID LEVEL 的区分。可是在实际应用 面,咱们发现,有不少使用者对于选择一个合适的RAID LEVEL,仍然没法很确切的掌握,尤为是对于RAID 0+1 (10),RAID 3, RAID 5之间的选择取舍,更是犹豫不定。
3.1 RAID条切“striped”的存取模式;
在使用数据条切﹝Data Stripping﹞ 的RAID 系统之中,对成员磁盘驱动器的存取方式,可分为两种:
并行存取﹝Paralleled Access﹞
独立存取﹝Independent Access﹞
独立存取﹝Independent Access﹞
RAID 2和RAID 3 是采起并行存取模式。
RAID 0、RAID 四、RAID 5及RAID 6则是采用独立存取模式。
3.2 平行存取模式;
并行存取模式支持里,是把全部磁盘驱动器的主轴马达做精密的控制,使每一个磁盘的位置都彼此同步,而后对每个磁盘驱动器做一个很短的I/O数据传送,如此一来,从主机来的每个I/O 指令,都平均分布到每个磁盘驱动器。
为了达到并行存取的功能,RAID 中的每个磁盘驱动器,都必须具有几乎彻底相同的规格:转速必须同样;磁头搜寻速度﹝Access Time﹞必须相同;Buffer 或Cache的容量和存取速度要一致;CPU处理指令的速度要相同;I/O Channel 的速度也要同样。总而言之,要利用并行存取模式,RAID 中全部的成员磁盘驱动器,应该使用同一厂牌,相同型号的磁盘驱动器。
3.2.1 并行存取的基本工做原理;
假设RAID中共有四部相同规格的磁盘驱动器,分别为磁盘驱动器A、B、C和D,咱们在把时间轴略分为T0、T一、T二、T3和T4:
T0: RAID控制器将第一笔数据传送到A的Buffer,磁盘驱动器B、C和D的Buffer都是空的,在等待中
T1: RAID控制器将第二笔数据传送到B的Buffer,A开始把Buffer中的数据写入扇区,磁盘驱动器C和D的Buffer都是空的,在等待中
T2: RAID控制器将第三笔数据传送到C的Buffer,B开始把Buffer中的数据写入扇区,A已经完成写入动做,磁盘驱动器D和A的Buffer都是空的,在等待中
T3: RAID控制器将第四笔数据传送到D的Buffer,C开始把Buffer中的数据写入扇区,B已经完成写入动做,磁盘驱动器A和B的Buffer都是空的,在等待中
T4: RAID控制器将第五笔数据传送到A的Buffer,D开始把Buffer中的数据写入扇区,C已经完成写入动做,磁盘驱动器B和C的Buffer都是空的,在等待中
T1: RAID控制器将第二笔数据传送到B的Buffer,A开始把Buffer中的数据写入扇区,磁盘驱动器C和D的Buffer都是空的,在等待中
T2: RAID控制器将第三笔数据传送到C的Buffer,B开始把Buffer中的数据写入扇区,A已经完成写入动做,磁盘驱动器D和A的Buffer都是空的,在等待中
T3: RAID控制器将第四笔数据传送到D的Buffer,C开始把Buffer中的数据写入扇区,B已经完成写入动做,磁盘驱动器A和B的Buffer都是空的,在等待中
T4: RAID控制器将第五笔数据传送到A的Buffer,D开始把Buffer中的数据写入扇区,C已经完成写入动做,磁盘驱动器B和C的Buffer都是空的,在等待中
如此一直循环,一直到把从主机来的这个I/O 指令处理完毕,RAID控制器才会受处理下一个I/O 指令。重点是在任何一个磁盘驱动器准备好把数据写入扇区时,该目的扇区必须刚恰好转到磁头下。同时RAID控制器每依次传给一个磁盘驱动器的数据长度,也必须刚恰好,配合磁盘驱动器的转速,不然一旦发生 miss,RAID 性能就大打折扣。
3.2.2 并行存取RAID的最佳应用;
并行存取RAID之架构,以其精细的马达控制和分布之数据传输,将数组中每个磁盘驱动器的性能发挥到最大,同时充分利用Storage Bus的频宽,所以特别适合应用在大型、数据连续的档案存取应用,例如:
3.2.2 并行存取RAID的最佳应用;
并行存取RAID之架构,以其精细的马达控制和分布之数据传输,将数组中每个磁盘驱动器的性能发挥到最大,同时充分利用Storage Bus的频宽,所以特别适合应用在大型、数据连续的档案存取应用,例如:
影像、视讯档案服务器
数据仓储系统
多媒体数据库
电子图书馆
印前或底片输出档案服务器
其它大型且连续性档案服务器
数据仓储系统
多媒体数据库
电子图书馆
印前或底片输出档案服务器
其它大型且连续性档案服务器
因为并行存取RAID架构之特性,RAID 控制器一次只能处理一个I/O要求,没法执行Overlapping 的多任务,所以很是不适合应用在 I/O次数频繁、数据随机存取、每笔数据传输量小的环境。同时,由于并行存取没法执行Overlapping 的多任务,所以没有办法"隐藏"磁盘驱动器搜寻﹝seek﹞的时间,并且在每个I/O的第一笔数据传输,都要等待第一个磁盘驱动器旋转延迟﹝rotational latency﹞,平均为旋转半圈的时间,若是使用一万转的磁盘驱动器,平均就须要等待50 usec。因此机械延迟时间,是并行存取架构的最大问题。
3.3 独立存取模式;
相对于并行存取模式,独立存取模式并不对成员磁盘驱动器做同步转动控制,其对每一个磁盘驱动器的存取,都是独立且没有顺序和时间间格的限制,同时每笔传输的数据量都比较大。所以,独立存取模式能够尽可能地利用overlapping 多任务、Tagged Command Queuing等等高阶功能,来" 隐藏"上述磁盘驱动器的机械时间延迟﹝Seek 和Rotational Latency﹞。
因为独立存取模式能够作overlapping 多任务,并且能够同时处理来自多个主机不一样的I/O Requests,在多主机环境﹝如Clustering﹞,更可发挥最大的性能。
3.3.1 独立存取RAID的最佳应用;
因为独立存取模式能够同时接受多个I/O Requests,所以特别适合应用在数据存取频繁、每笔数据量较小的系统。例如:
在线交易系统或电子商务应用
多使用者数据库
ERM及MRP 系统
小文件之文件服务器
多使用者数据库
ERM及MRP 系统
小文件之文件服务器
4. 建立和维护Raid;
4.1 mdadm;
在Linux服务器中是经过mdadm工具来建立和维护软RAID的,mdadm在建立和管理软RAID时很是方便,并且很灵活。mdadm经常使用的参数有以下:
4.1.1 建立分区;
【实例1】
4.1.2 建立RAID 5;
建立完/dev/sdb一、/dev/sdc一、/dev/sdd一、/dev/sde1四个分区后,下面就能够来建立RAID 5了,其中设定/dev/sde1做为备用设备,其他为活动设备,备用设备的做用是一旦某一设备损坏能够当即使用备用设备替换。操做命令以下:
其中“--spare-devices=1”表示当前阵列中备用设备只有一块,即做为备用设备的“/dev/sde1”,如有多块备用设备,则将“--spare-devices”的值设置为相应的数目。成功建立完成RAID设备后,经过以下命令能够查看到RAID的详细信息:
4.1.3 建立RAID的配置文件;
RAID的配置文件名为“mdadm.conf”,默认是不存在的,因此须要手工建立,该配置文件存在的主要做用是系统启动的时候可以自动加载软RAID,同时也方便往后管理。“mdadm.conf”文件内容包括:由DEVICE选项指定用于软RAID的全部设备,和ARRAY选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。生成RAID配置文件操作以下:
可是当前生成“mdadm.conf”文件的内容并不符合所规定的格式,因此也是不生效的,这时须要手工修改该文件内容为以下格式:
若是没有建立RAID的配置文件,那么在每次系统启动后,须要手工加载软RAID才能使用,手工加载软RAID的命令是:
4.1.4 建立文件系统;
接下来就只须要在RAID设备上建立文件系统就可以使用了,在RAID设备上建立文件系统和在分区或磁盘上建立文件系统的方法同样。在设备“/dev/md0”上建立ext3的文件系统命令以下:
建立完文件系统后,将该设备挂载上就可正常的使用了。若是要建立其它级别的RAID,其步骤和建立RAID 5基本都同样,区别在于指定“--level”值的时候,须要将该值设置为相应的级别。
4.2 维护软RAID;
软RAID虽然很大程度上能保证数据的可靠性,可是在平常的工做中,有时可能须要对RAID进行调整以及不排除RAID设备物理介质损坏的可能等相关问题
4.2.1 模拟故障磁盘;
* --create或-C:建立一个新的软RAID,后面接raid设备的名称。例如,/dev/md0,/dev/md1等。
*--assemble或-A:加载一个已存在的阵列,后面跟阵列以及设备的名称。
*--detail或-D:输出指定RAID设备的详细信息。
*--stop或-S:中止指定的RAID设备。
*--level或-l:设置RAID的级别,例如,设置“--level=5”则表示建立阵列的级别是RAID 5。
*--raid-devices或-n:指定阵列中活动磁盘的数目。
*--scan或-s:扫描配置文件或/proc/mdstat文件来搜索软RAID的配置信息,该参数不能单独使用,只能配置其它参数才能使用。
下面将经过一个实例来说述经过mdadm如何实现软RAID的功能。
4.1.1 建立分区;
【实例1】
某台机器上有4块空闲的硬盘,分别是/dev/sdb、/dev/sdc、/dev/sdd和/dev/sde,并用这四块硬盘来建立来建立一个RAID 5,具体操做步骤以下:
首先使用“fdisk”命令在每块硬盘上建立一个分区,操做以下:
root@xiaop-laptop:/# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #按n建立新分区
Command action
e extended
p primary partition (1-4) #输入p 选择建立主分区
p
Partition number (1-4): 1 #输入 1 建立第一个主分区
First cylinder (1-102, default 1): #直接回车,选择分区开始柱面这里就从 1 开始
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-102, default 102):
Using default value 102
Command (m for help): w #而后输入w写盘
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
针对其他几块硬盘也作相同操做,按照此步骤在另外的两块磁盘上作一样的操做;
所有作完后,运行 fdisk -l 应该能够看到以下信息:
所有作完后,运行 fdisk -l 应该能够看到以下信息:
Disk /dev/sdb: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 204 208880 fd Linux raid autodetect
Disk /dev/sdc: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 204 208880 fd Linux raid autodetect
Disk /dev/sdd: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 204 208880 fd Linux raid autodetect
看到上面三个磁盘上分别建了一个分区,分区大小都同样;
4.1.2 建立RAID 5;
建立完/dev/sdb一、/dev/sdc一、/dev/sdd一、/dev/sde1四个分区后,下面就能够来建立RAID 5了,其中设定/dev/sde1做为备用设备,其他为活动设备,备用设备的做用是一旦某一设备损坏能够当即使用备用设备替换。操做命令以下:
root@xiaop-laptop:/# mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[b-e]1
mdadm: array /dev/md0 started.
其中“--spare-devices=1”表示当前阵列中备用设备只有一块,即做为备用设备的“/dev/sde1”,如有多块备用设备,则将“--spare-devices”的值设置为相应的数目。成功建立完成RAID设备后,经过以下命令能够查看到RAID的详细信息:
root@xiaop-laptop:/# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Jan 22 10:55:49 2007
Raid Level : raid5
Array Size : 208640 (203.75 MiB 213.65 MB)
Device Size : 104320 (101.88 MiB 106.82 MB)
Raid Devices : 3
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Jan 22 10:55:52 2007
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 -1 spare /dev/sde1
UUID : b372436a:6ba09b3d:2c80612c:efe19d75
Events : 0.6
4.1.3 建立RAID的配置文件;
RAID的配置文件名为“mdadm.conf”,默认是不存在的,因此须要手工建立,该配置文件存在的主要做用是系统启动的时候可以自动加载软RAID,同时也方便往后管理。“mdadm.conf”文件内容包括:由DEVICE选项指定用于软RAID的全部设备,和ARRAY选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。生成RAID配置文件操作以下:
root@xiaop-laptop:/# mdadm --detail --scan > /etc/mdadm.conf
可是当前生成“mdadm.conf”文件的内容并不符合所规定的格式,因此也是不生效的,这时须要手工修改该文件内容为以下格式:
root@xiaop-laptop:/# vi /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=b372436a:6ba09b3d:2c80612c:efe19d75
若是没有建立RAID的配置文件,那么在每次系统启动后,须要手工加载软RAID才能使用,手工加载软RAID的命令是:
root@xiaop-laptop:/# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: /dev/md0 has been started with 3 drives and 1 spare.
4.1.4 建立文件系统;
接下来就只须要在RAID设备上建立文件系统就可以使用了,在RAID设备上建立文件系统和在分区或磁盘上建立文件系统的方法同样。在设备“/dev/md0”上建立ext3的文件系统命令以下:
root@xiaop-laptop:/# mkfs.ext3 /dev/md0
建立完文件系统后,将该设备挂载上就可正常的使用了。若是要建立其它级别的RAID,其步骤和建立RAID 5基本都同样,区别在于指定“--level”值的时候,须要将该值设置为相应的级别。
4.2 维护软RAID;
软RAID虽然很大程度上能保证数据的可靠性,可是在平常的工做中,有时可能须要对RAID进行调整以及不排除RAID设备物理介质损坏的可能等相关问题
,当遇到这些状况时,那么一样能够经过“mdadm”命令来完成这些操做。下面也将经过一个实例来介绍更换RAID故障磁盘的完整过程。
4.2.1 模拟故障磁盘;
【实例2】
之前面的【实例1】为基础,假定其中的“/dev/sdc1”设备出现故障时,更换一个新的磁盘,整个过程的详细说明以下:
在实际中,当软RAID检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并中止对故障磁盘的读写操做,因此这里须要将/dev/sdc1标记为出现故障的磁盘,命令以下:
在实际中,当软RAID检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并中止对故障磁盘的读写操做,因此这里须要将/dev/sdc1标记为出现故障的磁盘,命令以下:
root@xiaop-laptop:/# mdadm /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
因为【实例1】中的RAID 5设置了一个备用设备,因此当有标记为故障磁盘的时候,备用磁盘会自动顶替故障磁盘工做,阵列也可以在短期内实现重建。经过“/proc/mdstat”文件可查看到当前阵列的状态,以下:
以上信息代表阵列正在重建,当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以(F),如“sdc1[4](F)”,其中“[3/2]”的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,由于目前有一个故障设备,因此第二位数为2;这时的阵列以降级模式运行,虽然该阵列仍然可用,可是不具备数据冗余;而“[U_U]”表示当前阵列能够正常使用的设备是/dev/sdb1和/dev/sdd1,若是是设备“/dev/sdb1”出现故障时,则将变成[_UU]。
root@xiaop-laptop:/# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[3] sdb1[0] sdd1[2] sdc1[4](F)
208640 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
[=====>...............] recovery = 26.4% (28416/104320) finish=0.0min speed=28416K/sec
unused devices: <none>
以上信息代表阵列正在重建,当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以(F),如“sdc1[4](F)”,其中“[3/2]”的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,由于目前有一个故障设备,因此第二位数为2;这时的阵列以降级模式运行,虽然该阵列仍然可用,可是不具备数据冗余;而“[U_U]”表示当前阵列能够正常使用的设备是/dev/sdb1和/dev/sdd1,若是是设备“/dev/sdb1”出现故障时,则将变成[_UU]。
重建完数据后,再次查看阵列状态时,就会发现当前的RAID设备又恢复了正常,以下:
4.2.2 移除故障磁盘;
既然“/dev/sdc1”出现了故障,固然要移除该设备,移除故障磁盘的操做以下:
其中“—remove”表示移除指定RAID设备中的某个磁盘,也可用“-r”来代替该参数。
4.2.3 添加新硬盘;
在添加新的硬盘前,一样须要对新硬盘进行建立分区的操做,例如,添加新硬盘的设备名为“/dev/sdc1”,则具体操做以下:
其中“--add”与前面的“--remove”其义恰好相反,用于将某个磁盘添加到指定的设备中,也可用“-a”代替该参数。
root@xiaop-laptop:/# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[1] sdb1[0] sdd1[2] sdc1[3](F)
208640 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
4.2.2 移除故障磁盘;
既然“/dev/sdc1”出现了故障,固然要移除该设备,移除故障磁盘的操做以下:
root@xiaop-laptop:/# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
其中“—remove”表示移除指定RAID设备中的某个磁盘,也可用“-r”来代替该参数。
4.2.3 添加新硬盘;
在添加新的硬盘前,一样须要对新硬盘进行建立分区的操做,例如,添加新硬盘的设备名为“/dev/sdc1”,则具体操做以下:
root@xiaop-laptop:/# mdadm /dev/md0 --add /dev/sdc1
mdadm: hot added /dev/sdc1
其中“--add”与前面的“--remove”其义恰好相反,用于将某个磁盘添加到指定的设备中,也可用“-a”代替该参数。
因为【实例1】中的RAID 5设置了一个备用设备,因此不须要作任何操做RAID 5也能正常运行,可是若是这时某块磁盘再出现故障的话,会致使RAID 5没有数据冗余功能,这对于存放重要的数据的设备来讲显得太不安全了。那么这时增长到RAID 5中的“/dev/sdc1”则做为备用设备出如今阵列中,以下:
root@xiaop-laptop:/# mdadm --detail /dev/md0
/dev/md0:
……
……
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 65 1 active sync /dev/sde1
2 8 49 2 active sync /dev/sdd1
3 8 33 -1 spare /dev/sdc1
UUID : b372436a:6ba09b3d:2c80612c:efe19d75
Events : 0.133
0javascript
收藏css
推荐专栏更多
猜你喜欢
个人友情连接
Linux入门笔记之一:系统分区及挂载点
咱们不得不面对的中年职场危机
Java线程:线程的调度-休眠
用光影魔术手制做一寸照片(8张一寸)
职场终极密籍--记个人职业生涯
个人IT职场生涯: 毕业4年,月薪过万
Linux关闭休眠和屏保模式
年薪从0到10万-个人IT职场经验总结
Windows7删除休眠文件hiberfil.sys节省大量C盘空间
致IT同仁 — IT人士常犯的17个职场错误
“跳槽加薪”现象,无奈的职场规则
【有奖征文】分享AWS实践经验 赢大奖
技术点解读 | aelf共识标准设计
XSS 扫描器成长记
从 0 开始入门 Chrome Ext 安全(番外篇) -- ZoomEye Tools
# IT明星不是梦 # 给你10000+曝光,让更多人认识你!
[新时代·全连接]区块链技术峰会 暨HDZ深圳社区成立
手把手玩转Elasticsearch
约起来!每个技术人都要参加的微软技术大会
Ctrl+Enter 发布html
发布java
取消node