• Raid的学习和基础知识
    时间:2008-11-23   作者:佚名   出处:互联网

    各种意外灾难、错误带来的数据损坏和丢失给人们带来的损失和不便,个人及网站服务器的数据必须要备份,作Raid便是一种可行而有效的方法。Raid分为软Raid和硬raid......

    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、RAID1、RAID 3、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 速度快、完全容错 成本高


    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 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) 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﹞

    RAID 2和RAID 3 是采取并行存取模式。

    RAID 0、RAID 4、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、T1、T2、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都是空的,在等待中

    如此一直循环,一直到把从主机来的这个I/O 指令处理完毕,RAID控制器才会受处理下一个I/O 指令。重点是在任何一个磁盘驱动器准备好把数据写入扇区时,该目的扇区必须刚刚好转到磁头下。同时RAID控制器每依次传给一个磁盘驱动器的数据长度,也必须刚刚好,配合磁盘驱动器的转速,否则一旦发生 miss,RAID 性能就大打折扣。

    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 系统
    小文件之文件服务器


    4. 创建和维护Raid;


    4.1 mdadm;

    在Linux服务器中是通过mdadm工具来创建和维护软RAID的,mdadm在创建和管理软RAID时非常方便,而且很灵活。mdadm常用的参数有如下:

        * --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 应该可以看到如下信息:

               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/sdb1、/dev/sdc1、/dev/sdd1、/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标记为出现故障的磁盘,命令如下:

    root@xiaop-laptop:/# mdadm /dev/md0 --fail /dev/sdc1

    mdadm: set /dev/sdc1 faulty in /dev/md0

    由于【实例1】中的RAID 5设置了一个备用设备,所以当有标记为故障磁盘的时候,备用磁盘会自动顶替故障磁盘工作,阵列也能够在短时间内实现重建。通过“/proc/mdstat”文件可查看到当前阵列的状态,如下:

    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设备又恢复了正常,如下:

    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


    5. 关于本文;

    本文仅仅简单介绍了Raid,属于最基本的入门介绍,没有涉及到高级应用,如果想深入了解请参考其它相关文档;

    网友留言/评论

    我要留言/评论

    相关文章

    软RAID 0的技术概要及实现:Software RAID 中译是软RAID ,软RAID 比如常用的有RAID 0 、RAID 1 、RAID 5、RAID 10 ;本文主要讲述RAID 0、1、5、10的基本概念及软RAID 的创建、修复和管理;
    基于JSON的高级AJAX开发技术详解:AJAX已经成为当今Web开发中一种强有力的用户交互技术,但是它的许多可能性应用仍然鲜为人知。在本文中,我们将来共同探讨如何使用 JavaScript对象标志(JSON)和JSON分析器在服务器和客户端AJAX引擎之间创建复杂而强有力的JSON数据传输层。我们将详细讨论如何 创建一组对象(在其它语言中经常被当作一个包),如何把这些对象串行化为JSON以发送到服务器端,以及如何把服务器端JSON反串行化为客户端 JavaScript对象。