RAID磁盘阵列技术详解

RAID简称”磁盘冗余阵列,是由加利福利亚大学伯克利分校在1988年,发表文章并定义的。据英特尔创始人之一戈登·摩尔提出的,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。但由于硬盘设备的局限性,其已逐渐的成为计算机整体性能提升的瓶颈问题。所以RAID技术便成为目前解决计算机整体性能瓶颈的最折中的解决方案。RAID其基本思想就是把多个相对便宜的硬盘组合起来,使其组合成一个容量更大、更安全的硬盘组。目前已有的RAID硬盘组方案至少有几十种,其最常用的要数RAID5与RAID10硬盘组方案。

RAID5硬盘组技术示例图

RAID10硬盘组技术示例图


1.1 部署RAID10磁盘阵列组

接下里我们用VMware虚拟机模拟磁盘阵列组,首先为虚拟机模拟添加4块硬盘来制作一个RAID10磁盘阵列组,注意在虚拟机中添加硬盘后要关闭系统否则虚拟机不能识别新添加的硬盘。

为虚拟机系统模拟添加4块硬盘设备

新添加硬盘示例图

mdadm命令能够在Linux系统中创建和管理软件RAID磁盘阵列组

参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定raid级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止阵列
1.2 使用mdadm命令创建RAID10,名称为"/dev/md0"。
[root@centos7 ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 10477568K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

-C参数代表创建一个RAID阵列卡,-v参数来显示出创建的过程,同时就在后面追加一个设备名称,-a yes参数代表自动创建设备文件,-n 4参数代表使用4块硬盘来制作这个RAID磁盘阵列组,而-l 10参数则代表RAID10方案

1.3 将/dev/md0 磁盘阵列组转换为ext4格式:
[root@centos7 ~]# mkfs.ext
mkfs.ext2  mkfs.ext3  mkfs.ext4  
[root@centos7 ~]# mkfs.ext4 /dev/md0 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5238784 blocks
261939 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

1.4 创建挂载点,挂载成功后可看到可用空间为20G:
[root@centos7 ~]# mkdir /RAID
[root@centos7 ~]# mount /dev/md0 /RAID/
[root@centos7 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        50G  5.1G   45G  11% /
devtmpfs        475M     0  475M   0% /dev
tmpfs           489M   88K  489M   1% /dev/shm
tmpfs           489M  7.2M  482M   2% /run
tmpfs           489M     0  489M   0% /sys/fs/cgroup
/dev/sda1      1014M  168M  847M  17% /boot
/dev/sda3        50G   64M   50G   1% /app
tmpfs            98M   16K   98M   1% /run/user/0
/dev/sr0        7.8G  7.8G     0 100% /run/media/root/CentOS 7 x86_64
/dev/md0         20G   45M   19G   1% /RAID ##挂载成功
1.5 查看/dev/md0磁盘阵列设备组详细信息,并把挂载信息写入到配置文件中永久生效:
[root@centos7 ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Sun Aug 13 12:59:20 2017
     Raid Level : raid10
     Array Size : 20955136 (19.98 GiB 21.46 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Aug 13 13:05:50 2017
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : centos7.laishaohua:0  (local to host centos7.laishaohua)
           UUID : 098741ef:b6729b23:6f589e63:461dca5e
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
[root@centos7 ~]# vim /etc/fstab 
UUID=5427f1f2-fa5e-419d-b921-9b9fff784c16 /RAID                   ext4    defaults        0 0

1.6 模拟损坏磁盘阵列及修复
[root@centos7 ~]# mdadm /dev/md0 -f /dev/sdb  ##模拟/dev/sdb硬盘损坏
mdadm: set /dev/sdb faulty in /dev/md0
[root@centos7 ~]# mdadm -D /dev/md0  
/dev/md0:
        Version : 1.2
  Creation Time : Sun Aug 13 12:59:20 2017
     Raid Level : raid10
     Array Size : 20955136 (19.98 GiB 21.46 GB)
  Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Aug 13 13:15:55 2017
          State : clean, degraded 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : centos7.laishaohua:0  (local to host centos7.laishaohua)
           UUID : 098741ef:b6729b23:6f589e63:461dca5e
         Events : 19

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

       0       8       16        -      faulty   /dev/sdb  ##损坏设备

RAID10级别的磁盘阵列允许一组RAID1硬盘组中存在一个故障盘而不影响使用,模拟将新硬盘存储设备换上后再用mdadm命令来予以恢复。

[root@centos7 ~]# umount /RAID  ##取消/RAID挂载
[root@centos7 ~]# mdadm /dev/md0 -a /dev/sdb ##备用驱动器上重建分区
[root@centos7 ~]# mdadm -D /dev/md0         
/dev/md0:
       Version : 1.2
 Creation Time : Sun Aug 13 12:59:20 2017
    Raid Level : raid10
    Array Size : 20955136 (19.98 GiB 21.46 GB)
 Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
  Raid Devices : 4
 Total Devices : 4
   Persistence : Superblock is persistent

   Update Time : Sun Aug 13 13:31:24 2017
         State : clean 
Active Devices : 4
Working Devices : 4
Failed Devices : 0
 Spare Devices : 0

        Layout : near=2
    Chunk Size : 512K

          Name : centos7.laishaohua:0  (local to host centos7.laishaohua)
          UUID : 098741ef:b6729b23:6f589e63:461dca5e
        Events : 48

   Number   Major   Minor   RaidDevice State
      4       8       16        0      active sync set-A   /dev/sdb  ##设备正常
      1       8       32        1      active sync set-B   /dev/sdc
      2       8       48        2      active sync set-A   /dev/sdd
      3       8       64        3      active sync set-B   /dev/sde
[root@centos7 ~]# mount -a 

2.1 RAID 5盘组+备份

RAID 5可以理解为是RAID 0和RAID 1的折中方案,RAID 5作为一种存储性能、数据安全和存储成本兼顾的存储解决方案,其只是多了一个奇偶校验信息,RAID 5具有和RAID 0近似的数据读取速度,当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据,同时RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜,一旦RAID磁盘阵列组中有硬盘出现故障后,用于备份的硬盘将会自动顶替上去。防止宕机。

为了让实验顺利进行,需要VMware快照将系统恢复至初始状态,RAID 5磁盘阵列技术至少需要3块硬盘+1块备份盘。

为虚拟机系统模拟添加4块硬盘设备

新添加硬盘示例图

-n 3参数代表创建这个RAID5所需的硬盘个数,-l 5参数代表RAID磁盘阵列的级别,而-x 1参数则代表有1块备份盘,查看/dev/md0磁盘阵列组的时候就能看到有一块备份盘。

[root@centos7 ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10477568K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@centos7 ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Aug 13 14:15:49 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 : Sun Aug 13 14:16:06 2017
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 35% complete

           Name : centos7.laishaohua:0  (local to host centos7.laishaohua)
           UUID : f6ede6cb:075ca3af:132370cb:4a51dbac
         Events : 6

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      spare rebuilding   /dev/sdd

       3       8       64        -      spare   /dev/sde ##备胎盘^__^
2.2 将/dev/md0 磁盘阵列组转换为ext4格式并将挂载信息添加写入/etc/fstab
[root@centos7 ~]# mkfs.ext4 /dev/md0 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5238784 blocks
261939 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   
[root@centos7 ~]# vim /etc/fstab  ##写入永久挂载信息
UUID=4e99561b-e65a-4d0e-bf7c-95d56b3e6159 /RAID                   ext4    defaults        0 0
[root@centos7 ~]# mount /dev/md0 /RAID/
[root@centos7 ~]# mount -a 
查看系统磁盘设备示例图
2.3 模拟损坏磁盘阵列

将硬盘设备/dev/sdb模拟移出磁盘阵列组,再查看/dev/md0磁盘阵列组状态可以看到备份盘已经自动顶替上去,在RAID磁盘阵列组数据安全保证的基础上进一步提高数据可靠性

[root@centos7 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@centos7 ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Sun Aug 13 14:15:49 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 : Sun Aug 13 14:37:35 2017
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 16% complete

           Name : centos7.laishaohua:0  (local to host centos7.laishaohua)
           UUID : f6ede6cb:075ca3af:132370cb:4a51dbac
         Events : 22

    Number   Major   Minor   RaidDevice State
       3       8       64        0      spare rebuilding   /dev/sde ##自动顶替
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

3.1 虚拟环境中RAID 10和RAID 5性能测试对比

RAID 10

[root@centos7 RAID]# dd if=/dev/zero of=RAID10 bs=1M count=1024   ##写入数据
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.86215 s, 375 MB/s
[root@centos7 RAID]# dd if=RAID10  of=/dev/null  bs=1M count=1024   ##读取数据
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.49421 s, 719 MB/s

RAID 5

[root@centos7 RAID]# dd if=/dev/zero of=RAID5 bs=1M count=1024    ##写入数据
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.55086 s, 236 MB/s
[root@centos7 RAID]# dd if=RAID5 of=/dev/null  bs=1M count=1024    ##读取数据                  
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.45444 s, 738 MB/s

结论:

IO性能

  • 磁盘阵列组文件格式均为xfs格式
  • 在写入性能上RAID 10由于不存在数据校验,每次写操作只是单纯的执行写操作。因此在写性能上RAID 10要好于RAID 5;
  • 在读取性能上RAID 10与RAID 5差距不大。

安全

  • RAID 10 比RAID 5更安全,RAID 5最少可损坏一颗,可修复;
  • RAID 10最少可损坏2颗,可修复。

磁盘利用率

  • RAID 10 最少需要4颗,如10Gx4,容量为:40G;只有一半的利用率;
  • RAID 5最少需要3颗,如10x3,容量为30G;即容量总和 再减去一块硬盘的容量,就是RAID 5可以使用的容量。

PS:以上测试仅为虚拟环境下模拟对比,仅供实验参考,不作为实际生产环境性能对比。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容