码迷,mamicode.com
首页 > 其他好文 > 详细

RAID

时间:2016-07-04 12:13:18      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:raid0   raid5   raid1   software   raid0+1   stripe   

Software Raid(软件磁盘阵列)

  1. 1.1、什么是Raid

磁盘阵列的英文全名是Redundant Arrays Inexpensive DiskRaid),及容错廉价的磁盘阵列。Raid可以通过一些技术(软件或硬件)将多个较小的磁盘整合成为一个较大的磁盘设备;而这个较大的磁盘功能可不止是存储而已,它还具有数据保护的功能。整个Raid由于选择等级(level)不同,而使得整合后的磁盘具有不同的功能,基本常见的等级有这几种。

  • Raid-0(等量模式,stripe):性能最佳,风险最大

    • 这种模式如果使用相同型号与容量的磁盘来组成时效果最佳。这种模式的Raid会将磁盘先切出等量的区块(举例来说,4KB),然后当一个文件要写入Raid时,该文件会一句块的大小切割好,之后再依序放到各个磁盘里面去。由于每个磁盘会交错存放数据,因此当你的数据要写入Raid时,数据会被等量放置在各个磁盘上面。举例来说,你有两块磁盘组成Raid-0


当你有100MB的数据要写入时,每个磁盘会个被分配到50MB的存储量。Raid-0的示意图如图1-1所示。上图的意思是,在组成Raid-0 是,每块磁盘(Disk A和Disk B)都会先被分割成小区快(chunk)。当有数据要写入Raid时,数据会先被分成符合小区块的大小,然后再依序一个一个放置到不同的磁盘去。由于数据经先被分并且依序放置到不同的磁盘上面,因此每块磁盘所负责的数据量都降低了。照这样的情况看越多磁盘组成的Raid-0性能就越好,因为每块负责的数据量就更低了,这表示我的数据可以分散让多块磁盘来存储,当然性能会变得更好。此外,磁盘总容量也变大了!因为每块磁盘的容量最终会加总成为Raid-0的总容量。使用此等级必须要自行负责数据的风险,由上图我们可以知道文件是被切割成为适合每块磁盘分区区块的大小,然后再依序放置到各个磁盘上面。假设,有一块磁盘损坏了,那样的话文件数据就会缺少一部分,此时的文件就损坏了,由于每个文件都是这样存放的,因此,Raid-0若有任何一块磁盘损坏全盘数据都将损坏。比如说我们的一盘磁盘的故障率是百分之十那么两块磁盘的故障率就是百分之二十,这样更容易出故障,所以说Raid-0风险最大。另外,如果使用不同容量的磁盘来组成Raid-0,由于数据是一直等量依序放置到不同磁盘中,当容量小的磁盘区块被用完之后,那么所有的数据都将被写入到最大的那块磁盘上面去。举例来说我用一块200GB的磁盘和一块500GB的磁盘组成Raid-0,假如我将400GB的文件存入到Raid-0中,那么这400GB的数据会分别储存在两块磁盘中(各消耗200GB),后来在加入的数据就只能存储在500GB的磁盘当中了,此时就失去了Raid的意义,所以建议大家使用两块同样大小的磁盘。


  • Raid-1(映像模式,mirror):完整备份

    • 这种模式也是需要相同的磁盘容量的,最好是一模一样的两块磁盘。如果是不同容量的磁盘组成Raid-1时,那么总容量将以最小的那块磁盘为主!这种模式主要是让同一份数据完整保存在两块磁盘上。举例来说,如果我们有一个100MB的文件,且我仅有两块磁盘组成Raid-1时,那么两块磁盘将会同步写入100MB的数据。因此,整体的Raid的容量就浪费了50%。由于两块磁盘内容一样,好像是被镜子找出来一样,所以我们成为mirror(镜像)模式。

    • 如图1-2所示,一份数据传送到Raid-1之后会被分为两股,并分别写入到两块磁盘里去。由于同一份数据被分别写入到其他不同的磁盘中,一次如果需要向Raid-1中写入100MB的数据是,数据传到I/O总线后会被复制多份分别写入到各个磁盘中去。结果就是数据量

技术分享变大了。因此在大量写入Raid-1时,写入的性能会下降(因为我们只有一个南桥芯片)。还可以使用硬件Raid(磁盘阵列卡)时,磁盘阵列卡会主动复制一份而不使用系统的I/O总线,性能方面还是不错的,如果使用软Raid时,可能性能就不好了

    • 由于两块磁盘的数据一模一样,所以任何一块磁盘损毁时,你的数据还是可以完全保留下来。所以我们可以说,Raid-1最大的优点大概就在于数据备份。不过由于磁盘容量有一半是用在备份,因此总容量会是全部磁盘的一半而已。虽然Raid-1的写入性能不佳,不过读取性能还可以。这是因为数据有两份在不同的磁盘上面,如果多个进程在读取同一条数据时,Raid回自行取得最佳的读取平衡。

  • Raid0+1Raid1+0

    • Raid-0的性能佳但是数据不安全,Raid-1数据安全但是性能不佳,那么Raid0+11+0就可以实现将这两者整合起来。所谓的Raid0+1就是先让两块磁盘组成Raid-0,并且这样的设置共有两组;然后将这两组组合成Raid-1.这就是Raid0+1,Raid1+0就是先将两块磁盘组成Raid-1,在组成Raid-0的意思。

    • 如图1-3所示,Disk A+Disk B组成第一组Raid-0 Disk C+Disk技术分享 D组成第二组Raid-0,然后将这两组在组合成一组Raid-1.如果我有100MB的数据要写入,则由于Raid-1的关系,两组数据都会写入100MB,但由于Raid-0的关系,因此每块磁盘仅会写入50MB。如此一来无论哪一组Raid-0孙桓,只要另一组的Raid-0还存在,那么就会通过Raid-1的机制来恢复数据。

    • 但由于Raid-0的优点,所有性能得到提升,由于Raid-1的优点所有数据得到备份。但也由于Raid-1的缺点,总容量会减小一半。

  • Raid-5性能与数据备份的均衡考虑

    • Raid-5只要需要三块以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似Raid-0,不过每个循环的写入过程中,在每块磁盘还加入一个同位检查数据(Parity),这个数据会记录其他磁盘的备份数据,用于当有磁盘损毁时的救援。Raid-5读写的情况如图1-4所示。

    • 图中,每个循环写入时,都会有部分的同位检查码(Parity)被记录起来,技术分享并且记录的同位检查码每次都会在不同的磁盘上记录,因此,任何一个磁盘损坏时都能够通过其他磁盘的检查码来重建数据。不过需要注意的是,由于有同位检查码,因此Raid-5的总容量回事整体磁盘数量减一半。以上图为例,原本的3块磁盘只会剩下(3-1=2块磁盘的容量,而且当磁盘损坏量大于2的时候数据就彻底的毁了。因此Raid-5默认仅支持一块磁盘的损坏情况。

    • 在读写性能的比较上,读取性能还不赖。与Raid-0相似,不过写的性能就不间的能够增强多少。这是因为要写入Raid-5的数据需要经过计算同位校验码(Parity)的关系。由于加上这个计算的操作,所以写入的性能与系统的硬件关系较大。尤其当使用软件磁盘阵列时,同位检查码是通过CPU来计算的,因此性能方面还需要评估。

    • 另外,由于Raid-5仅能支持一块磁盘的损坏,因此进来还有发展一种新的等级,就是Raid-6,这个Raid-6支持同时损坏两块磁盘,因此整体的磁盘容量就会少两块。

  • Spare Disk:预备磁盘阵列

    • 当阵列的磁盘受损失,就得要将坏的磁盘拔掉,然后换一块新的磁盘。换成新磁盘并且顺利启动磁盘阵列后,磁盘阵列就会开始主动重建(rebuild)原本坏掉的那块磁盘数据到新的磁盘上,然后你磁盘阵列上面的数据就恢复了。这就是磁盘阵列的优点。不过,我们还是得手动插拔磁盘,此时有些设备需要关机之后才可以这么做,现在大多数设备已经支持热插拔,意思就是不用关机也可以支持更换磁盘。

    • 为了让系统可以实时的在坏掉的磁盘上主动重建,因此就需要预备磁盘(spare disk)的辅助。所谓的spare disk就是一块或多块没有包含在原本磁盘阵列等级中的磁盘,这块磁盘平时并不会被磁盘阵列所使用,当磁盘出现损坏时,则这块磁Spare disk会被主动拉进磁盘阵列中,并将坏掉的那块磁盘移出磁盘阵列,然后立即重启数据系统。如此你的系统则可永保安康。若你的磁盘阵列有支持热插拔的功能那就更完美了,直接将坏掉的那块磁盘拔出换一块新的,再将那块新的设置成为spare disk,那就完美了!

  •  磁盘阵列的优点:

    • 数据安全可靠:值得并非信息安全,而是当硬件(磁盘)损坏时,数据是否还能够安全救援或使用之意。

    • 读写性能;例如Raid-0可以加强读写性能,让你的系统I/O部分得到改善。

    • 容量:可以让多块磁盘组合起来,故单一文件系统可以有相当大的容量。


  • Software,hardware Raid

  为何磁盘阵列又分为硬件和软件呢?所谓的硬件磁盘阵列(hardware Raid)是通过磁盘阵列卡完成数据组目的。磁盘阵列卡上面有一块专门的芯片在处理Raid的任务,因此在性能方面会比较好。在多任务时(例如Raid-5的同位检查码计算)磁盘阵列并不会消耗原本系统I/O总线,理论上性能会比较佳。此外目前一般的中高级磁盘阵列卡都支持热插拔。

不过一块好的磁盘阵列动不动就上万,便宜的在主板上面“附赠”的磁盘阵列功能可能又不支持某些高级功能,例如低级主板若有磁盘阵列芯片,通常只支持到Raid-0Raid-1,并没有大家所喜欢的Raid-5.此外操作系统也必须要具有磁盘这列的驱动程序,才能够正确识别磁盘阵列所产生的磁盘驱动器。

由于磁盘这里有很多优秀的功能,然而硬件磁盘阵列卡偏偏有贵得很,因此就有发展出利用软件来仿真磁盘阵列的功能,这就是所谓的软磁盘阵列(software Raid)。软件磁盘阵列主要是通过软件来模仿真实组的任务,因此损耗较多的系统资源,比如说CPU的运算和I/O总线等。不过目前我们的个人计算机实在已经非常快了,因此以前的速度限制现在也已经不存在!所以我么可以来玩一玩软件磁盘阵列。

我们使用的操作系统是CentOS,软件磁盘阵列为mdadm这套软件,这套软件会以分区或磁盘为单位,也就是说,你不需要两块以上的磁盘,只要有两个以上的分区就够了,此外,mdadm支持刚才我们前面提到的Raid-0/Raid-1/Raid-5/Spare disk等,而且提供的管理机制还可以达到类似热插拔的功能,可以在线(文件系统正常运行)进行分区的抽换,使用上也非常方便呢!

       另外你还需要知道的是,硬件磁盘阵列在linux下就是一块大磁盘,因此硬件磁盘阵列的设备名为/dev/sdb/sd[a-p],因此使用到SCSI的模块之故。至于软件磁盘阵列则是系统仿真的,因此使用的设备文件名是系统的设备文件,文件名为/dev/md0….等,两者的文件名并不相同!


1.2、磁盘阵列的设置

    

  • 试验计划:

    • 利用4个分区组成Raid-5

    • 每个分区约为1GB大小,需要确定每个分区一样大较佳;

    • 利用一个分区设置为spare disk

    • 这个spare disk的大小与其他Raid所需分区一样大!

    • 将次Raid-5挂载到/mnt/raid目录下。



  • 实验步骤


1、创建分区

    [root@localhost ~]# fdisk /dev/sdb

     WARNING: DOS-compatible mode is deprecated.It‘s strongly recommended to

             switch off the mode (command ‘c‘) andchange display units to

             sectors (command ‘u‘).

     

    Command (m for help):   

     

    Disk /dev/sdb: 107.4 GB,107374182400 bytes

    255 heads, 63 sectors/track, 13054cylinders

    Units = cylinders of 16065 * 512 =8225280 bytes

    Sector size (logical/physical):512 bytes / 512 bytes

    I/O size (minimum/optimal): 512bytes / 512 bytes

    Disk identifier: 0x74429a75

     

      Device Boot      Start         End      Blocks  Id  System

    /dev/sdb1               1        3917   31463271    5      Extended

     

    Command (m for help): n 

    Command action

      l   logical (5 or over)

      p   primary partition (1-4)

    l

    First cylinder (1-3917, default1):

    Using default value 1

    Last cylinder, +cylinders or+size{K,M,G} (1-3917, default 3917): +1G

     

    Command (m for help): n

    Command action

      l   logical (5 or over)

      p   primary partition (1-4)

    l

    First cylinder (133-3917, default133):

    Using default value 133

    Last cylinder, +cylinders or+size{K,M,G} (133-3917, default 3917): +1G

     

    Command (m for help): n

    Command action

      l   logical (5 or over)

      p   primary partition (1-4)

    l

    First cylinder (265-3917, default265):

    Using default value 265

    Last cylinder, +cylinders or+size{K,M,G} (265-3917, default 3917): +1G

     

    Command (m for help): n

    Command action

      l   logical (5 or over)

      p   primary partition (1-4)

    l

    First cylinder (397-3917, default397):   

    Using default value 397

    Last cylinder, +cylinders or+size{K,M,G} (397-3917, default 3917): +1G

     

    Command (m for help): n

    Command action

      l   logical (5 or over)

      p   primary partition (1-4)

    l

    First cylinder (529-3917, default529):

    Using default value 529

    Last cylinder, +cylinders or+size{K,M,G} (529-3917, default 3917): +1G

     

    Command (m for help): p

     

    Disk /dev/sdb: 107.4 GB,107374182400 bytes

    255 heads, 63 sectors/track, 13054cylinders

    Units = cylinders of 16065 * 512 =8225280 bytes

    Sector size (logical/physical):512 bytes / 512 bytes

    I/O size (minimum/optimal): 512bytes / 512 bytes

    Disk identifier: 0x74429a75

     

      Device Boot      Start         End      Blocks  Id  System

    /dev/sdb1               1        3917   31463271    5      Extended

    /dev/sdb5               1         132    1060227   83      Linux

    /dev/sdb6             133         264    1060258+  83      Linux

    /dev/sdb7             265         396    1060258+  83      Linux

    /dev/sdb8             397         528    1060258+  83      Linux

    /dev/sdb9             529         660    1060258+  83      Linux

     

    Command (m for help): w

    The partition table has beenaltered!

     

    Calling ioctl() to re-readpartition table.

    Syncing disks.

    [root@localhost ~]# fdisk -l

 

    Disk /dev/sda: 42.9 GB,42949672960 bytes

    255 heads, 63 sectors/track, 5221cylinders

    Units = cylinders of 16065 * 512 =8225280 bytes

    Sector size (logical/physical):512 bytes / 512 bytes

    I/O size (minimum/optimal): 512bytes / 512 bytes

    Disk identifier: 0x00085bd8

     

      Device Boot      Start         End      Blocks  Id  System

    /dev/sda1   *          1          64      512000  83      Linux

    Partition 1 does not end oncylinder boundary.

    /dev/sda2              64        5222   41430016   8e      Linux LVM

     

    Disk /dev/sdb: 107.4 GB,107374182400 bytes

    255 heads, 63 sectors/track, 13054cylinders

    Units = cylinders of 16065 * 512 =8225280 bytes

    Sector size (logical/physical):512 bytes / 512 bytes

    I/O size (minimum/optimal): 512bytes / 512 bytes

    Disk identifier: 0x74429a75

     

      Device Boot      Start         End      Blocks  Id  System

    /dev/sdb1               1        3917   31463271    5      Extended

    /dev/sdb5               1             132    1060227   83  Linux

    /dev/sdb6             133             264    1060258+  83  Linux

    /dev/sdb7             265             396    1060258+  83  Linux

    /dev/sdb8             397             528    1060258+  83  Linux

    /dev/sdb9             529             660    1060258+  83  Linux

    注:我们需要使用上面的5-9分区。

 

    [root@localhost ~]# partprobe

    

 2、创建Raid

[root@localhost~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4--spare-devices=1 /dev/sdb5 /dev/sdb6 /dev/sdb/7 /dev/sdb8 /dev/sdb9

 

[root@localhost~]# mdadm --detail /dev/md0

/dev/md0:                    ←Raid设备文件名

        Version : 1.2

  Creation Time : Sun Jul  3 19:17:10 2016   ←Raid设备被创建时间

     Raid Level :raid5                ←Raid的等级

     Array Size : 3176448 (3.03 GiB 3.25 GB)  Raid的可用磁盘容量

          UsedDev Size : 1058816 (1034.17 MiB 1084.23 MB)     ←每个设备的可用容量

 

   Raid Devices : 4          用作Raid的设备数量

  Total Devices : 5           全部的设备数量

    Persistence : Superblock is persistent

 

    Update Time : Sun Jul  3 19:17:20 2016

          State : clean

 Active Devices : 4                                       启动的(Active)设备数量

WorkingDevices : 5                        可动作的设备数量

 Failed Devices :0                       出现错误的设备数量

  Spare Devices : 1                      预备磁盘数量

 

         Layout : left-symmetric

     Chunk Size : 512K

 

           Name : localhost:0  (local to host localhost)

           UUID :ca3314b7:fd34b2dc:0ef543fb:585720ea

         Events : 18

 

    Number  Major   Minor   RaidDevice State

      0     8      21        0    active sync   /dev/sdb5

      1     8      22        1    active sync   /dev/sdb6

      2     8      23        2    active sync   /dev/sdb7

      5     8      24        3    active sync   /dev/sdb8

 

      4     8      25        -     spare   /dev/sdb9

参数:

--create:新建Raid的参数;

--auto=yes/dev/md0:决定新建/dev/md0这个软件磁盘设备;

--radi-devices=4:使用4个磁盘作为磁盘阵列;

--spare-devices=1:使用1个磁盘作为spare设备;

--level=5:设置磁盘阵列的等级为5,即Raid-50,1,5等);

/dev/sdb5 /dev/sdb6 /dev/sdb/7/dev/sdb8 /dev/sdb9 :需要使用磁盘的路径。也可用/dev/sdb{5,6,7,8}来表示;

--detail /dev/md0:显示/dev/md0的详细信息。

 

注:

最后的五行就是这个设备目前的情况,包括四个active sync和一个spare

Raid devices指的就是Raid内的磁盘顺序。

由于Raid创建需要一些时间,所以最好等待数分钟后在使用”mdadm –detail /dev/md0”去查阅你的磁盘阵列信息,否则可能会看到某系磁盘正在“spare rebuilding”之类的构建字样。通过以上操作我们的Raid 5就创建完了,除了命令之外,你也可以查阅如下的文件夹来看看系统软件磁盘的情况:

 

[root@localhost ~]# cat/proc/mdstat

Personalities : [raid6] [raid5][raid4]

md0 : active raid5 sdb8[5]sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]        第一行

      3176448 blocks super 1.2 level 5, 512kchunk, algorithm 2 [4/4]         [UUUU]                                       第二行

     

unused devices: <none>

 

上述的数据就比较重要的在第一行和第二行;

第一行:指出md0Raid-5,并且使用了/sdb8,sdb7,sdb6,sdb5四块磁盘设备。每个设备后面的[ ]内的数字为此磁盘在Raid中的顺序(Raid device);至于sdb9后面的[S]则代表sdb9spare之意

第二行:此磁盘阵列拥有3176448block(每个block单位为1K),所以总容量约为3GB使用Raid-5等级,写入磁盘小区快(chunk)大小为512kb,使用algorithm2磁盘阵列算法。4/4表示此数组需要四个设备,且这四个设备均正常运行。后面的UUUU代表四个设备,4U表示四个设备都运行正常,若为_则表示运行不正常。


3、格式化与挂载Raid

 

    [root@localhost ~]# mkfs -t ext3/dev/md0

    mke2fs 1.41.12 (17-May-2010)

    文件系统标签=

    操作系统:Linux

    块大小=4096 (log=2)

    分块大小=4096 (log=2)

    Stride=128 blocks, Stripewidth=384 blocks

    198800 inodes, 794112 blocks

    39705 blocks (5.00%) reserved forthe super user

    第一个数据块=0

    Maximum filesystemblocks=813694976

    25 block groups

    32768 blocks per group, 32768fragments per group

    7952 inodes per group

    Superblock backups stored onblocks:

             32768,98304, 163840, 229376, 294912

     

    正在写入inode: 完成                           

    Creating journal (16384 blocks): 完成

    Writing superblocks and filesystemaccounting information: 完成

     

    This filesystem will beautomatically checked every 30 mounts or

    180days, whichever comes first.  Use tune2fs-c or -i to override.

     

    [root@localhost~]# mkdir /mnt/raid

    [root@localhost ~]# mount /dev/md0/mnt/raid/

    [root@localhost ~]# df

    Filesystem                   1K-blocks    Used Available Use%     Mounted on

    /dev/mapper/VolGroup-lv_root  38776280 5021212  31785304 14% /

    tmpfs                         243140          72   243068   1% /dev/shm

    /dev/sda1                      495844       34907   435337   8% /boot

    /dev/md0                      3126500   70260  2897420       3% /mnt/raid

4、模仿Raid错误救援模式

     Mdadm 语法:

       [root@localhost ~]#mdadm –manage/dev/md[0-9] [--add 设备] [--remove设备]        [--fail 设备]

 

参数:

   --add:将后面的设备加入到这个md中;

   --remove:将后面的设备从这个md中移出;

   --fail:将后面的设备设置成出错状态;

[root@localhost~]# cp -a /etc /mnt/md0       我们先复制一些东西进去

 

[root@localhost~]# mdadm --manage /dev/md0 --fail /dev/sdb8 假设/dev/sdb8出错了!实现模拟的方式。

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

 

[root@localhost~]# mdadm --detail /dev/md0

/dev/md0:

        Version : 1.2

  Creation Time : Sun Jul  3 21:25:27 2016

     Raid Level : raid5

     Array Size : 3176448 (3.03 GiB 3.25 GB)

  Used Dev Size : 1058816 (1034.17 MiB 1084.23MB)

   Raid Devices : 4

  Total Devices : 5

    Persistence : Superblock is persistent

 

    Update Time : Sun Jul  3 21:49:22 2016

          State : clean

 Active Devices : 4

WorkingDevices : 4

 Failed Devices : 1                  出错的磁盘有一个

  Spare Devices : 0

 

         Layout : left-symmetric

     Chunk Size : 512K

 

           Name : localhost:0  (local to host localhost)

           UUID :c682cce7:5dd3fa72:a04c54a2:6957bdb0

         Events : 37

 

    Number  Major   Minor   RaidDevice State

      0     8      21       0     active sync   /dev/sdb5

      1     8      22       1     active sync   /dev/sdb6

      2     8      23       2     active sync   /dev/sdb7

      4     8      25       3     active sync   /dev/sdb9

 

      5     8      24       -     faulty   /dev/sdb8

 

[root@localhost ~]# cat/proc/mdstat

Personalities : [raid6] [raid5][raid4]

md0 : active raid5 sdb8[5](F)sdb9[4] sdb7[2] sdb6[1] sdb5[0]

      3176448 blocks super 1.2 level 5, 512kchunk, algorithm 2 [4/3] [UUU_]                 有一个u变成了_

      [>....................]  recovery = 1.3% (14336/1058816) finish=1.2min speed=14336K/sec

     

unused devices: <none>

 

[root@localhost ~]# mdadm --detail/dev/md0

/dev/md0:

        Version : 1.2

 Creation Time : Mon Jul  404:43:13 2016

     Raid Level : raid5

     Array Size : 3176448 (3.03 GiB 3.25 GB)

 Used Dev Size : 1058816 (1034.17 MiB 1084.23 MB)

  Raid Devices : 4

 Total Devices : 5

   Persistence : Superblock is persistent

 

   Update Time : Mon Jul  4 05:10:192016

          State : clean, degraded, recovering

 Active Devices : 3

Working Devices : 4

 Failed Devices : 1                 出错的磁盘有一个

 Spare Devices : 1

 

         Layout : left-symmetric

     Chunk Size : 512K

 

 Rebuild Status : 44% complete

 

           Name : localhost:0  (local to host localhost)

           UUID :32d71112:8d5ed718:dd3365ef:a126009d

         Events : 41

 

   Number   Major   Minor  RaidDevice State

      0     8      21       0    active sync   /dev/sdb5

      1     8      22       1    active sync   /dev/sdb6

      2     8      23       2    active sync   /dev/sdb7

      4     8      25       3  spare rebuilding   /dev/sdb9

 

      5     8      24       -  faulty   /dev/sdb8

 

注:

 以上过程要快才可以看到,我们从上图可以看出/dev/sdb8死掉了!

 

 若等待一段时间之后再输入上面的查询命令,就可以看到修复后的结果!请看一下信息!

 

[root@localhost ~]# cat/proc/mdstat

Personalities : [raid6] [raid5][raid4]

md0 : active raid5 sdb8[5](F)sdb9[4] sdb7[2] sdb6[1] sdb5[0]

      3176448 blocks super 1.2 level 5, 512kchunk, algorithm 2 [4/4] [UUUU]

     

unused devices: <none>

 

[root@localhost ~]# mdadm --detail/dev/md0

/dev/md0:

        Version : 1.2

 Creation Time : Mon Jul  404:43:13 2016

     Raid Level : raid5

     Array Size : 3176448 (3.03 GiB 3.25 GB)

 Used Dev Size : 1058816 (1034.17 MiB 1084.23 MB)

  Raid Devices : 4

 Total Devices : 5

   Persistence : Superblock is persistent

 

   Update Time : Mon Jul  4 05:10:442016

          State : clean

 Active Devices : 4

Working Devices : 4

 Failed Devices : 1

 Spare Devices : 0

 

         Layout : left-symmetric

     Chunk Size : 512K

 

           Name : localhost:0  (local to host localhost)

           UUID :32d71112:8d5ed718:dd3365ef:a126009d

         Events : 55

 

   Number   Major   Minor  RaidDevice State

      0     8      21       0    active sync   /dev/sdb5

      1     8      22       1    active sync   /dev/sdb6

      2     8      23       2    active sync   /dev/sdb7

      4     8      25       3    active sync   /dev/sdb9

 

      5     8      24       -    faulty   /dev/sdb8

 

[root@localhost ~]# ls /mnt/raid/

etc  lost+found

 

[root@localhost ~]# ls  /mnt/raid/etc/

abrt                     modprobe.d

acpi                     motd

adjtime                  mtab

aliases                  mtools.conf

aliases.db               my.cnf

………以下省略…………

 

注:通过以上信息我们可以看出我们的数据并没有丢失!



  • 加入新的磁盘拨出有问题的磁盘

[root@localhost ~]# mdadm --manage/dev/md0 --add /dev/sdb10 --remove /dev/sdb8

mdadm:added /dev/sdb10

mdadm:hot removed /dev/sdb8 from /dev/md0

 

[root@localhostraid]# mdadm --detail /dev/md0

/dev/md0:

        Version : 1.2

  Creation Time : Sun Jul  3 21:25:27 2016

     Raid Level : raid5

     Array Size : 3176448 (3.03 GiB 3.25 GB)

  Used Dev Size : 1058816 (1034.17 MiB 1084.23MB)

   Raid Devices : 4

  Total Devices : 5

    Persistence : Superblock is persistent

 

    Update Time : Sun Jul  3 22:28:23 2016

          State : clean

 Active Devices : 4

WorkingDevices : 5

 Failed Devices : 0

  Spare Devices : 1

 

         Layout : left-symmetric

     Chunk Size : 512K

 

           Name : localhost:0  (local to host localhost)

           UUID :c682cce7:5dd3fa72:a04c54a2:6957bdb0

         Events : 39

 

    Number  Major   Minor   RaidDevice State

      0     8      21       0    active sync   /dev/sdb5

      1     8      22       1    active sync   /dev/sdb6

      2     8      23       2    active sync   /dev/sdb7

      4     8      25       3    active sync   /dev/sdb9

 

    6      8      26        -     spare   /dev/sdb10

 

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdb10[6](S) sdb9[4] sdb7[2] sdb6[1] sdb5[0]

      3176448 blocks super 1.2level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

     

unused devices: <none>

 

    注:你的磁盘阵列中的数据不但一直存在,而且你可以一直顺利运行/mnt/raid内的数据,即使/dev/sdb8毁了!然后通过管理的功能就能够加入新磁盘且拔除坏掉的磁盘,而且这一切都是在上线(on-line)的情况下进行的。



5、开机自动启动Raid并挂载

[root@localhostraid]# mdadm --detail /dev/md0 | grep -i uuid

           UUID : c682cce7:5dd3fa72:a04c54a2:6957bdb0

 

      开始配置mdadm.conf

      [root@localhostetc]# vim /mdadm.conf

                                                 ARRAY/dev/md0 UUID : 32d71112:8d5ed718:dd3365ef:a126009d

注:将上面的uuid添加到/etc/mdadm.conf中(这个文件并不存在需要自己创建)

我们需要知道/dev/md0UUID用于修改software的配置文件。

 

[root@localhost etc]# vim /etc/fstab

 

#

# /etc/fstab

# Created by anaconda on Thu Apr 7 06:37:03 2016

#

# Accessible filesystems, by reference, are maintained under‘/dev/disk‘

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) formore info

#

/dev/mapper/VolGroup-lv_root /                   ext4  defaults        1 1

UUID=ae9891e3-c8ea-42da-a3bb-b7c9a6f94654 /boot ext4   defaults    0 0

/dev/mapper/VolGroup-lv_swap swap              swap  defaults        0 0

tmpfs         /dev/shm           tmpfs   defaults       0 0

devpts        /dev/pts           devpts  gid=5,mode=620    0 0

sysfs         /sys              sysfs   defaults       0 0

proc          /proc            proc    defaults      0 0

/dev/md0      /mnt/raid        ext3    defaults    0 0

 

注:将/dev/md0    /mnt/raid     ext3    defaults    0 0添加到/etc/fstab中。添加完成之后我们可以重启测试,重启之后/dev/md0已经挂载到/mnt/raid下。



 

6、关闭软件Raid(重要!!!)

                  

   如果你不使用这块software Raid/dev/md0)就可以将software Raid关闭了,因为它占用着我们的磁盘。如果你只是卸载/dev/md0忘记关闭,结果就知将你在重新分区/dev/sdbX的时候出现各种莫名的错误状况。下面我们介绍一下关闭software Raid的步骤

                  

 

    [root@localhost ~]# umount/dev/md127

[root@localhost ~]# vim/etc/fstab

#

# /etc/fstab

# Created by anaconda on Thu Apr 7 06:37:03 2016

#

# Accessible filesystems, by reference, are maintained under‘/dev/disk‘

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) formore info

#

/dev/mapper/VolGroup-lv_root /      ext4  defaults        1 1

UUID=ae9891e3-c8ea-42da-a3bb-b7c9a6f94654 /boot ext4   defaults   1 2

/dev/mapper/VolGroup-lv_swap swap     swap  defaults        0 0

tmpfs     /dev/shm            tmpfs   defaults     0 0

devpts    /dev/pts           devpts  gid=5,mode=620   0 0

sysfs     /sys              sysfs   defaults      0 0

proc     /proc              proc    defaults     0 0

#/dev/md0  /mnt/raid        ext3    defaults    0 0        注:将最后一行批注掉,或者删除掉都可以

 

    [root@localhost ~]# mdadm--stop /dev/md127

     Mdadm: stoped /dev/md0               这样就关闭了!

 

    [root@localhost ~]# cat/proc/mdstat

Personalities : [raid6][raid5] [raid4]

unused devices:<none>            看!确实不存在任何的数据组设备!

 

[root@localhost ~]#vim/etc/mdadm.conf

#ARRAY /dev/md127 UUID :32d71112:8d5ed718:dd3365ef:a126009d

注:将这一行注释掉就完成关闭software Raid了。



                                以上内容摘自

                                   --鸟哥的linux私房菜

RAID

标签:raid0   raid5   raid1   software   raid0+1   stripe   

原文地址:http://bella41981.blog.51cto.com/10603572/1795443

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!