CentOS系统中软Raid的配置

由加利福尼亚大学伯克利分校(University of California-Berkeley)在1988年,发表的文章:“A Case for Redundant Arrays of Inexpensive Disks”。文章中,谈到了RAID这个词汇,而且定义了RAID的5个层级。独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错性。

  1. RAID的几个常用级别
  • raid 0 要2块或2块以上的硬盘,把数据分散在N块硬盘内性能提升极高,无容错能力。
  • raid 1 需要2块硬盘,会把一块硬盘写数据,把另一块写入数据镜像,容错性最高,但写入性能会下降。
  • raid 4 需要3块或以上的硬盘,多块数据盘进行异或运算,把一块硬盘做专用校验盘,异或相同为假不同为真,有容错性,一块坏掉可以通过校验盘来计算恢复。但已基本不用本文不做详细介绍。
  • raid 5 需要3块或3块以上的硬盘,会把1块硬盘的容量来放校验位,有容错性允许一块磁盘损坏,性能有提升,比较常用。磁盘利用率比raid1要高。拥有和raid0相近的读取速度,但写入数据和单个磁盘相比稍慢。把多块数据进行异或运算生成校验信息,然后把数据和与其相对的校验信息保存在raid5各个磁盘中。
  • raid 6 需要4块或4块以上的硬盘,会把2块硬盘的容量来放校验位,会计算两个校验位储存在两块盘上,容错性允许两块磁盘损坏,不常用,本文不做详细介绍。
  • raid 10 需要4块或2的2倍以上的硬盘,但添加硬盘要一次添加2块。会把硬盘先做raid 1在做raid 0,性能提升较高,但磁盘利用率较低,容错性极高。raid01与其相似但是raid01是先做raid 0再做raid 1.
  • raid 50 需要6块或3的2倍以上的硬盘,先把硬盘做成raid5,再做成raid 0,性能提升较高,磁盘利用率较低,容错性极高。
  • raid 7 可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的raid模式,本文里不做详细介绍。
级别 最少硬盘 容量 读取性能 写入性能 容错性
raid 0 2 n n n 无容错性
raid 1 2 n/2 n n/2 2块可以坏掉一块
raid 5 3 n-1 n-1 n-1 3块可以坏掉一块
raid 10 4 n/2 n n/2 只要不是同一个raid1的硬盘,可以坏掉一半

  1. 实现

2.1 软raid命令mdadm

-C: 创建模式,参数:

  • -n #: 使用 #个块设备来创建此RAID
  • -l #:指明要创建的RAID的级别,1表示raid1
  • -a {yes|no}:自动创建目标RAID设备的设备文件
  • -c CHUNK_SIZE: 指明块大小
  • -x #: 指明空闲盘的个数

-D:显示raid的详细信息

  • -s:扫描配置文件或/proc/mdstat缺少信息。

-G:更改大小

-I:添加或删除单个硬盘

-F:监控

管理模式

  • -f: 标记指定磁盘为损坏
  • -a: 添加磁盘
  • -r: 移除磁盘

注:要查看raid的状态:cat /proc/mdstat,创建之后要写入配置文件来保存否则在停用设备之后无法启动: mdadm –D –s >> /etc/mdadm.conf

2.2 raid 0

[root@centos6.9 ~]#lsblk  #查看硬盘情况
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  100G  0 disk 
└─sdb1   8:17   0   30G  0 part /test
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0 1000M  0 part /boot
├─sda2   8:2    0 97.7G  0 part /
├─sda3   8:3    0 48.8G  0 part /app
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sdc      8:32   0   10G  0 disk  #这里有4块10GB的硬盘,就是我们做实验要用的
sdd      8:48   0   10G  0 disk 
sde      8:64   0   10G  0 disk 
sdf      8:80   0   10G  0 disk 
[root@centos6.9 ~]#mdadm -C /dev/md0 -n 2 -a yes -l 0 /dev/sdc /dev/sdd 
#-C创建md0,-n指定由2块硬盘创建,-a yes自动创建设备文件,-l 指定raid 0,后面指定成员硬盘
mdadm: Defaulting to version 1.2 metadata  
mdadm: array /dev/md0 started.   #创建md0成功

[root@centos6.9 ~]#mdadm -D /dev/md0   #查看创建的md0的详细信息
/dev/md0:
        Version : 1.2
  Creation Time : Tue Jun 20 19:53:17 2017
     Raid Level : raid0   #raid等级
     Array Size : 20955136 (19.98 GiB 21.46 GB)  #总容量
   Raid Devices : 2   #raid硬盘数
  Total Devices : 2   #总硬盘数
    Persistence : Superblock is persistent
    Update Time : Tue Jun 20 19:53:17 2017
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
     Chunk Size : 512K  #分散在硬盘中块的大小
           Name : centos6.9:0  (local to host centos6.9)
           UUID : cd351fb1:b45416d3:5ac664ae:6d130fd2    #raid的UUID号
         Events : 0
    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc  #成员1
       1       8       48        1      active sync   /dev/sdd  #成员2


root@centos6.9 ~]#fdisk /dev/md0   #用fdisk管理/md0分区

Command (m for help): n    #创建一个分区
Command action
   e   extended                   #扩展分区
   p   primary partition (1-4)    #主分区
p       #这里选了p,创建一个主分区
Partition number (1-4): 1  #选择分区编号1
First cylinder (1-5238784, default 257 ): #默认从的257个扇区开始,这里选择默认
Last cylinder, +cylinders or +size{K,M,G} (257-5238784, default 5238784): +10G   #创建一个10G的分区

Command (m for help): p   #查看分区

Disk /dev/md0: 21.5 GB, 21458059264 bytes
2 heads, 4 sectors/track, 5238784 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x861106f0

      Device Boot      Start         End      Blocks   Id  System
/dev/md0p1             257     2621696    10485760   83  Linux

Command (m for help): w    #保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos6.9 ~]#fdisk -l     #查看硬盘分区,因为硬盘比较多所以只显示了md0
Disk /dev/md0: 21.5 GB, 21458059264 bytes  #硬盘大小
2 heads, 4 sectors/track, 5238784 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0xdbb02828

    Device Boot      Start         End      Blocks   Id  System
/dev/md0p1              257     2621440    10485758   83  Linux     #硬盘里的分区

[root@centos6.9 ~]#mkfs.ext4 /dev/md0p1  #格式化md0p1分区,文件系统ext4
[root@centos6.9 ~]#mkdir /raid  #创建raid文件夹
[root@centos6.9 ~]#mount /dev/md0 /raid/  #把raid挂载到raid目录上
[root@centos6.9 ~]#df  #查看挂载信息
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      100660656 3598692  91941964   4% /
tmpfs             502056       8    502048   1% /dev/shm
/dev/sda3       50264772   56396  47648376   1% /app
/dev/sda1         991512   34932    905380   4% /boot
/dev/sdb1       30838496   45008  29220328   1% /test
/dev/md0        20494972   44992  19402224   1% /raid  挂载成功

[root@centos6.9 ~]#vim /etc/fstab   #修改文件保存挂载,如果不写入文件的话,开机之后不会自动挂载
UUID=80f63701-5c1b-4dc1-9864-7c1247ed8561 /                       ext4    defaults        1 1
UUID=daf6631d-90ab-45dc-b5b5-20eb52476056 /app                    ext4    defaults        1 2
UUID=87c9aa50-7b7a-459e-babc-87bfaf5b49f2 /boot                   ext4    defaults        1 2
UUID=2f7f0957-6978-4028-ac0d-966fb8d486e5 swap                    swap    defaults        0 0
UUID=0ec85016-ffa5-4d52-b353-b55b0c239228  /raid ext4   defaults        0 0    #在里面加一行,参考系统的格式写
#在添加的时候要写文件的UUID号,以防止设备名变更无法挂载。
[root@centos6.9 ~]#blkid /dev/md0p1   #查看分区的UUID
/dev/md0p1: UUID="0ec85016-ffa5-4d52-b353-b55b0c239228" TYPE="ext4"    #分区的UUID号和文件系统类型  
[root@centos6.9 ~]#mdadm -D -s /dev/md0 >> /etc/mdadm.conf   #把md0的配置追加进/etc/mdadm.conf文件

2.3 raid 1

[root@centos6.9 ~]#mdadm -C /dev/md1 -n 2 -a yes -l 1  /dev/sdc /dev/sdd   #创建raid1
/dev/md1:
        Version : 1.2
  Creation Time : Tue Jun 20 21:27:53 2017
     Raid Level : raid1    #raid 等级
     Array Size : 10477568 (9.99 GiB 10.73 GB)    #raid1容量
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)    #镜像空间大小
   Raid Devices : 2   #raid硬盘数
  Total Devices : 2   #总硬盘数
    Persistence : Superblock is persistent

    Update Time : Tue Jun 20 21:28:25 2017
          State : clean, resyncing 
 Active Devices : 2    #主动设备
Working Devices : 2    #工作设备
 Failed Devices : 0    #问题设备
  Spare Devices : 0    #备用设备

  Resync Status : 66% complete

           Name : centos6.9:1  (local to host centos6.9)
           UUID : 2244ef88:05bcf8d4:3de8c6f6:a65ee55b
         Events : 10

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc     #成员
       1       8       48        1      active sync   /dev/sdd     #成员

2.4 raid 5

[root@centos6.9 ~]#mdadm -C /dev/md2 -n 3 -x 1 -a yes -l 5  /dev/sdc /dev/sdd /dev/sde  /dev/sdf  
                  #指定三个成员硬盘,同是用-x指定了一个备用盘
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.  #创建成功
[root@centos6.9 ~]#mdadm -D /dev/md2 
/dev/md2:
        Version : 1.2
  Creation Time : Tue Jun 20 21:49:02 2017  #创建时间
     Raid Level : raid5   #等级
     Array Size : 20955136 (19.98 GiB 21.46 GB)   #可用容量
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)    #校验数据容量
   Raid Devices : 3  #
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Jun 20 21:49:55 2017
          State : clean 
 Active Devices : 3    #raid硬盘数
Working Devices : 4    #总硬盘数
 Failed Devices : 0    #损坏硬盘数
  Spare Devices : 1    #备用硬盘数

         Layout : left-symmetric
     Chunk Size : 512K   #分散在硬盘中的块大小,不指定默认为512KB

           Name : centos6.9:2  (local to host centos6.9)
           UUID : e33c123d:e4598fda:c6b15be6:7cc8cf29   #uuid
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc  #成员
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       3       8       80        -      spare   /dev/sdf       #空闲备份硬盘 
       #空闲盘,不用来储存数据,在其中一块raid硬盘出现问题后自动顶替并通过运算恢复数据

2.5 有容错性的raid实验其容错性,这里以raid5来实验。

[root@centos6.9 raid]#echo 11111 >  11   #创建一个文件,在里面写入11111
[root@centos6.9 raid]#cat 11   #查看文件
11111

[root@centos6.9 ~]#mdadm /dev/md2 -f /dev/sdc    #把sdc标记为损坏

[root@centos6.9 ~]#mdadm -D /dev/md2    #查看md2状态,因为信息过多,所以这里只显示硬盘的状态
 Active Devices : 3
Working Devices : 4   
 Failed Devices : 1   #这里显示有一个损坏的硬盘
  Spare Devices : 0   #没有空闲的硬盘了
    Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf     #sdf已经替换了sdc
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       0       8       32        -      faulty   /dev/sdc  #sdc被标记为坏掉的
[root@centos6.9 raid]#cat 11  #看看数据有没有丢失
11111  #数据没有问题
       

2.6 移除和添加硬盘,我这里添加了一块硬盘sdg

[root@centos6.9 raid]#mdadm /dev/md2 -r /dev/sdc     #把上面实验标记为损坏的sdc从md2中移除
mdadm: hot removed /dev/sdc from /dev/md2
[root@centos6.9 raid]#mdadm -D /dev/md2     #查看md2的状态
/dev/md2:
        Version : 1.2
  Creation Time : Tue Jun 20 21:49:02 2017
     Raid Level : raid5  
     Array Size : 20955136 (19.98 GiB 21.46 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 3
  Total Devices : 3   #这里的总硬盘数只有三个
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0   #没有损坏硬盘
  Spare Devices : 0
    Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf   
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde    #没有sdc的信息了
       
[root@centos6.9 raid]#mdadm  /dev/md2  -a /dev/sdg   #把sdg添加到md2中
[root@centos6.9 raid]#mdadm -D /dev/md2   #查看md2的信息,有省略
/dev/md2:
   Raid Devices : 3  
  Total Devices : 4   #总硬盘数
          State : clean 
 Active Devices : 3    
Working Devices : 4    #总硬盘数
 Failed Devices : 0    #损坏硬盘数
  Spare Devices : 1    #有一个备用盘
           Name : centos6.9:2  (local to host centos6.9)
           UUID : e33c123d:e4598fda:c6b15be6:7cc8cf29
         Events : 39

    Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       5       8       96        -      spare   /dev/sdg   #sdg为备份盘

如果想要扩展只想raid硬盘的盘数用:

[root@centos6.9 raid]#mdadm -G /dev/md2 -n 4 -a /dev/sdg     

    Update Time : Tue Jun 20 22:48:47 2017
          State : clean, reshaping 
 Active Devices : 4  #raid盘数 
Working Devices : 4  #总盘数
 Failed Devices : 0
  Spare Devices : 0  #没有备份盘
 Number   Major   Minor   RaidDevice State
       3       8       80        0      active sync   /dev/sdf
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde
       5       8       96        3      active sync   /dev/sdg   #不会把sdg添加为备用盘,直接参与数据储存

2.7 停用、启动raid设备

[root@centos6.9 ~]#mdadm -D -s >> /etc/mdadm.conf   #在创建好raid设备后一定要,把配置写入文件,否则无法启动
[root@centos6.9 ~]#cat /etc/mdadm.conf  #查看文件
ARRAY /dev/md2 metadata=1.2 name=centos6.9:2 UUID=cbb20529:52eced42:77605adf:0a416662

[root@centos6.9 ~]#mdadm -S /dev/md2  #停用raid设备md2
mdadm: stopped /dev/md2
[root@centos6.9 ~]#mdadm -D /dev/md2  #再来查看md2的信息
mdadm: cannot open /dev/md2: No such file or directory   #提示没有这个目录或文件,无法打开
[root@centos6.9 ~]#mdadm -A -s  /dev/md2   #启用设备
mdadm: /dev/md2 has been started with 4 drives.  #启动成功
[root@centos6.9 ~]#mdadm -D /dev/md2    #查看md2的状态
/dev/md2:   
        Version : 1.2                                   #可以查看了
  Creation Time : Tue Jun 20 23:02:38 2017
     Raid Level : raid5
     Array Size : 31432704 (29.98 GiB 32.19 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 4
  Total Devices : 4                                     
#省略......
    Number   Major   Minor   RaidDevice State
       0       8       80        0      active sync   /dev/sdf
       1       8       48        1      active sync   /dev/sdd
       2       8       64        2      active sync   /dev/sde
       4       8       96        3      active sync   /dev/sdg

注:如果没有写配置文件可以用下面的命令来强制启动,但会丢失一些配置信息

mdadm –R /dev/md2

2.8 删除raid设备

  • 1.先用umont取消设备挂载
  • 2.停止raid设备
  • 3.删除/etc/fstab里挂载信息和/etc/mdadm.conf文件里的配置行
  • 4.删除每个磁盘的raid信息: mdadm --zero-superblock /dev/sdd
    注:如果不用第4步的命令,直接格式化硬盘,raid信息会清除不干净有残留,重启之后设备会重新创建。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 独立磁盘冗余数组(RAID, Redundant Array of Independent Disks)简称硬盘阵...
    yekai阅读 4,797评论 0 14
  • 介绍一个新概念,RAID,这也是大学的时候的学的东西了,一直很少在工作中使用,有点忘记,今天复习更新一下。分享给大...
    若与阅读 4,663评论 0 6
  • 一.RAID定义 RAID(Redundant Array of Independent Disk 独立冗余磁盘阵...
    小艾QQD阅读 528评论 0 1
  • 这是第几本东野圭吾的书呢?每一次看他的书都像这本一样,迫不及待的在一两天之内看完。哪怕是最厚的《白夜行》我也在...
    祁光96阅读 442评论 0 1
  • 我是日记星球270号星宝宝素梅—素食者王继梅,正在参加日记星球21天蜕变之旅,这是我的第9篇原创日记,坚持每天一篇...
    素梅1素食者王继梅阅读 301评论 0 0