常见RAID介绍

RAID简介

独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。主要目的是把多块硬盘组合起来提高数据处理能力、容错功能等

根据实现方式分为硬件和软件两种 
 硬件RAID:通过RAID卡或主板集成的RAID控制器来支持实现RAID功能 
 软件RAID:通过软件模拟实现RAID功能 
:软件RAID不建议在生产环境使用,作为学习了解RAID的一种方式。


常见RAID级别

  • RAID 0

RAID 0亦称为条带卷。它将两块以上的硬盘并联起来,成为一个大容量的硬盘。数据会分割成多个数据块(chunk)平均分散存储到硬盘上,因此读写能力提升,但不具备冗余和容错功能,一块硬盘损坏,所有数据丢失。

常见RAID介绍

  • RAID 1

RAID 1亦称为镜像卷。它由两块或多块硬盘相互组成镜像。比如两块硬盘组RAID 1 数据会在两块硬盘都保存一份,使得硬盘读性能提升但写性能略有下降,具备冗余和容错功能。

常见RAID介绍

  • RAID 4

RAID 4是由3块或3块以上硬盘组成,其中一块硬盘作为校验盘存储校验码,使其具备容错能力允许损坏一块硬盘,其可通过异或运算还原数据。在读写操作时校验盘相比其它盘的负载压力大,更易损坏。

常见RAID介绍

  • RAID 5

RAID 5可以理解为RAID 4的升级版,相比于RAID 4其将校验码分散存储在各个盘上,使得负载均衡,整体性能提升,并且提供了一块硬盘的冗余。

常见RAID介绍

  • RAID 6

相比于RAID 5增加一个校验系统,提供了两块硬盘的冗余。根据其设计硬盘数至少4块.

850px-RAID_6.svg.png-41.6kB

混合类型

  • RAID 10

RAID 10是将所有硬盘先组成N组RAID 1,然后再组成RAID 0。最高可支持半数硬盘损坏而不丢失数据。

常见RAID介绍

  • RAID 01

RAID 10是将所有硬盘先组成N组RAID 0,然后再组成RAID 1。当有一块硬盘损坏,其同组RAID 0的其它硬盘都会停止工作。运气不好可能损坏两块硬盘就导致所有数据丢失。

常见RAID介绍

  • RAID 50

RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0。至少需要6块硬盘,最多只能坏一块硬盘。

常见RAID介绍

  • JBOD(Just a Bunch Of Disks)

主要功能是将多块硬盘的空间合并成一个大的连续空间使用。

常见RAID介绍

:以上图片转自维基百科

总结和对比

RAID级别 读取性能 写入性能 可用空间 最大容错 极端情况 最少硬盘
单一硬盘(参考) 1 1 1 0 1 1
RAID 0 N N N*min(S1…Sn) 0 1 2
RAID 1 N 略有下降 1*min(S1…Sn) N-1 N 2
RAID 4 提高 提高 (N-1)*min(S1…Sn) 1 2 3
RAID 5 N-1 N-1 (N-1)*min(S1…Sn) 1 2 3
RAID 6 N-2 N-2 (N-2)*min(S1…Sn) 2 3 4
RAID 10 N M M*min(S1…SN) N-M N/M 4
RAID 01 N N/M N*min(S1…SN)/M N*(M-1) M 4
JBOD 1 1 容量之和 0 1 2

注: 
N表示硬盘数 
min(S1…Sn)表示最小硬盘容量 
RAID 10中M表示RAID 1的组数,RAID 01中M表示RAID 0的组数 
极端情况表示最少几块硬盘损坏就会导致数据丢失


CentOS 6上的软件RAID的实现

在CentOS 6中使用mdadm工具与内核中的md(multi devices)模块通信完成创建管理软RAID

  • mdadm简介

命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices> 
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

模式: 
创建模式:-C 
装配模式:-A 
监控模式:-F 
管理模式:-f,-r,-a 
: /dev/md# 
: 任意块设备

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

-D:显示raid的详细信息 
mdadm -D /dev/md#

管理模式: 
-f:标记指定磁盘为损坏 
-a:添加磁盘 
-r:移除磁盘

观察md的状态:cat /proc/mdstat 
停止md设备:mdadm -S /dev/md#

软件RAID实现过程

实验目标:创建一个可用空间为10G的RAID 1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录

  • 系统环境

操作系统:CentOS 6.7
磁盘信息:
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00013624

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       15666   125316096   8e  Linux LVM

Disk /dev/sdb: 35.4 GB, 35433480192 bytes
255 heads, 63 sectors/track, 4307 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

:为了简便实验操作将对sdb进行分区,在此基础上创建RAID。

  • 磁盘分区

[root@centos6 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3610f0c2.
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)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4307, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4307, default 4307): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-4307, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-4307, default 4307): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (2613-4307, default 2613): 
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-4307, default 4307): +10G

Command (m for help): t  
Partition number (1-4): 1
Hex code (type L to list codes): fd  #避免问题发生软RAID一定要调整分区类型为Linux raid auto(即id为fd)
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

通知内核重读分区表

[root@centos6 ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
  • RAID设备创建

使用mdadm工具创建RAID 1,chunk为128k,有一个空闲盘

[root@centos6 ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -c 128 -l 1 /dev/sdb{1,2,3}
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看md的状态

[root@centos6 ~]# cat /proc/mdstat  #同步中
Personalities : [raid1] 
md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]
      10482176 blocks super 1.2 [2/2] [UU]
      [===>.................]  resync = 18.9% (1989376/10482176) finish=0.6min speed=221041K/sec
      
unused devices: <none>
[root@centos6 ~]# cat /proc/mdstat  #同步完成
Personalities : [raid1] 
md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]
      10482176 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

查看创建的RAID设备的详细信息

[root@centos6 ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr 11 20:17:28 2016
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Apr 11 20:18:20 2016
          State : clean 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : centos6.7:0  (local to host centos6.7)
           UUID : 5a709c74:6b893df0:83f19941:565699f7
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2

       2       8       19        -      spare   /dev/sdb3

RAID设备格式化,文件系统为ext4

[root@centos6 ~]# mke2fs -t ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2620544 blocks
131027 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2684354560
80 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

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
  • 挂载RAID设备

将RAID设备设置开机可自动挂载至/backup目录

[root@centos6 ~]# mkdir /backup  #创建/backup目录
[root@centos6 ~]# blkid /dev/md0 #查询设备的UUID,推荐使用UUID格式挂载
/dev/md0: UUID="f57b163a-0bc3-4b21-a388-a1586d84e943" TYPE="ext4" 
[root@centos6 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Mar  4 11:09:09 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_centos6-lv_root /                       ext4    defaults        1 1
UUID=3efc9d2d-ff60-4491-84c4-e1beb6701b83 /boot                   ext4    defaults        1 2
/dev/mapper/vg_centos6-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_centos6-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
UUID=f57b163a-0bc3-4b21-a388-a1586d84e943 /backup ext4 defaults 0 0
[root@centos6 ~]# mount -a      #挂载支持自动挂载的设备
[root@centos6 ~]# df            #查看是否挂载成功
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_centos6-lv_root
                      51475068 4071360  44782268   9% /
tmpfs                   502384       0    502384   0% /dev/shm
/dev/sda1               487652   37084    424968   9% /boot
/dev/mapper/vg_centos6-lv_home
                      69608928   54412  66011888   1% /home
/dev/md0              10186552   23028   9639416   1% /backup     #表明挂载成功
  • 测试

[root@centos6 backup]# ls /backup
lost+found
[root@centos6 backup]#cp /etc/fstab /backup
[root@centos6 ~]# ls /backup
fstab  lost+found
[root@centos6 ~]# mdadm /dev/md0 -f /dev/sdb1  #模拟一块硬盘损坏
mdadm: set /dev/sdb1 faulty in /dev/md0
[root@centos6 ~]# mdadm -D /dev/md0  #查看设备信息
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr 11 20:17:28 2016
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Apr 11 21:03:48 2016
          State : clean, degraded, recovering  #处于降级恢复模式
 Active Devices : 1
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 1

 Rebuild Status : 43% complete

           Name : centos6.7:0  (local to host centos6.7)
           UUID : 5a709c74:6b893df0:83f19941:565699f7
         Events : 26

    Number   Major   Minor   RaidDevice State
       2       8       19        0      spare rebuilding   /dev/sdb3  #空闲盘替代损坏硬盘,数据重建中
       1       8       18        1      active sync   /dev/sdb2

       0       8       17        -      faulty   /dev/sdb1   #提示该硬盘损坏
[root@centos6 ~]# mdadm /dev/md0 -f /dev/sdb2  #模拟再出现硬盘损坏
mdadm: set /dev/sdb2 faulty in /dev/md0
[root@centos6 ~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 1.2
  Creation Time : Mon Apr 11 20:17:28 2016
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Apr 11 21:10:20 2016
          State : clean, degraded    #处于降级模式
 Active Devices : 1
Working Devices : 1
 Failed Devices : 2
  Spare Devices : 0

           Name : centos6.7:0  (local to host centos6.7)
           UUID : 5a709c74:6b893df0:83f19941:565699f7
         Events : 38

    Number   Major   Minor   RaidDevice State
       2       8       19        0      active sync   /dev/sdb3
       2       0        0        2      removed    #此处硬盘缺失

       0       8       17        -      faulty   /dev/sdb1
       1       8       18        -      faulty   /dev/sdb2
[root@centos6 ~]# cat /backup/fstab    #数据可正常访问

#
# /etc/fstab
# Created by anaconda on Fri Mar  4 11:09:09 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_centos6-lv_root /                       ext4    defaults        1 1
UUID=3efc9d2d-ff60-4491-84c4-e1beb6701b83 /boot                   ext4    defaults        1 2
/dev/mapper/vg_centos6-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_centos6-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
UUID=f57b163a-0bc3-4b21-a388-a1586d84e943 /backup ext4 defaults 0 0

原创文章,作者:Net18-海滨,如若转载,请注明出处:http://www.178linux.com/14676

(0)
Net18-海滨Net18-海滨
上一篇 2016-04-12
下一篇 2016-04-12

相关推荐

  • iptables

    iptables 包过滤型的防火墙 Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件; 主机防火墙网络防火墙 软件防火墙(软件逻辑)硬件防火墙(硬件和软件逻辑) 版本 ipfw (firewall framework):命令行工具,生成规则并送…

    Linux干货 2017-06-13
  • week3

    一,列出当前系统上所有已经登录的用户的用户名,注意,同一个用户登录多次只显示一次即可 who | cut -d' ' -f1 | sort -u 二,取出最后登录到当前系统的用户相关信息 who | cut -d'&nb…

    Linux干货 2016-11-15
  • 正则表达式 小结

    听老师和学姐都说,正则表达式很重要,所以这次我总结一下,同时加强一下记忆。 目前我们学的正则表达式有:字符匹配;匹配字数;位置锚定。 :. 匹配任意单个字符 [] 匹配指定范围内的任意单个字符 [^] 匹配指定范围外的任意单个字符 [:alnum:] 或 [0-9a-zA-Z] [:alpha:] 或 [a-zA-Z]…

    2017-07-31
  • 新的篇章

    第一天,linux,努力,奋斗!

    Linux干货 2017-07-11
  • 负载均衡PHP应用(实现WordPress)

    一、实验目的:负载均衡PHP应用 二、逻辑构建:   三、实验需要:4台虚拟机,一台作为客户端,一台作为VS,两台作为RS 四、实验环境:VS的DIP要与RS的IP在同一个私网内,RS的默认网关为DIP;VS则要开启路由转发功能echo 1>/proc/sys/net/ipv4/ip_forword,注意防火墙和selinux都要关闭 五、实…

    2017-05-09
  • mysqld_multi 多实例部署

    序言:多实例?Why?   随着硬件层面的发展,linux系统多核已经是普通趋势,而mysql是单进程多线程,所以先天上对多进程的利用不是很高,虽然5.6版本已经在这方面改进很多,但是也没有达到100%,所以为了充分的利用系统资源,mysql有自己的补充,那就是可以部署多实例,一个实例一个端口。     1,准备好mysql环境…

    2017-11-16