RAID详细讲解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45320930/article/details/99054072

RAID技术:处理磁盘冗余

一、为什么要学RAID?

1.提高数据的读写速率。

2.解决磁盘冗余,保护数据以免丢失。

二、RAID是什么?

RAID:Redundant Arrays of Independent Drives,表示独立磁盘构成的具有冗余能力的阵列。

     Redundant:冗余

     Independent:独立的

     Arrays:数组,队列

     Drives:驱动

利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。

三、RAID分类:

(1)外接式磁盘阵列柜

(2)内接式磁盘阵列卡

(3)利用软件来访真实现raid

四、RAID基本原理:

磁盘阵列作为独立系统在主机外直连或通过网络与主机相连。磁盘阵列有多个端口可以被不同主机或不同端口连接。一个主机连接阵列的不同端口可提升传输速度。

五、常见RAID卡型号:

华为SR130 RAID卡 ,(不能做缓存)

华为SR430C RAID卡,(能做缓存)

戴尔H330 RAID卡(不做缓存)

戴尔H730P(做缓存)

注:

      1、raid卡需要驱动。

      2、RAID卡带电池和不带电池的用途上的区别:

              带电池能保证保存的数据在断电后能存储到内存中。

六、RAID类型:

raid 0:(称为:不含校验和冗余的条带存储)至少两块盘,只有按条带存储数据

         特点:提高数据的存取速度,但是没有备份,不能容灾(容灾:如果一个磁盘坏掉,两块盘就都无法使用了),可用容量100%。
         应用场景:对数据要求不高的场景下。

raid 1:(称为:不含校验的镜像存储)至少两块盘,只有镜像,没有条带

         特点:不能解决数据写入速度的问题,但是提高数据读的速率。可容灾,可用容量50%。
         应用场景:对数据要求很高的场景下。

raid 5:(称为:数据块级别的分布式校验条带存储)至少3块盘,可以提高存取速率

         特点:存储的有存储数据和校验数据,可以容灾(只允许有一个盘坏),可用容量是(n-1)/n 。(盘越多,可用容量越大)
         应用场景:折中了raid 0,和raid 1的优缺点,可适用于大多数应用场景。存储数据场景中。

raid 6:至少四块盘,提高存取速率

         特点:存储的有存储数据和两份校验数据,可以容灾(允许有两个盘坏),可用容量是(n-2)/n

Raid 01 == Raid 0 + Raid 1:内部条带,外部镜像

         特点:至少4块盘,既能提高数据读写,也能实现数据容灾,可使用容量50%。(容错能力比Raid 10稍好)

Raid 10 == Raid 1 + Raid 0:内部镜像,外部条带

         特点:至少4块盘,既能提高数据读写,也能实现数据容灾,可使用容量50%。

七、测试RAID性能:

1、挂载三块盘,分别是 /dev/sdb , /dev/sdc , /dev/sdd

2、对挂载的盘进行分区,在这里我们给每块盘分一个区,且以第一块盘为例:
         n:新增分区;t:修改分区信息(fd表示将分区的ID身份修改为raid)

         fd:——对分区设定为raid,转换一下,支持raid的格式。(只存在于软raid)

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x535b7e37.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x535b7e37

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): p

Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x535b7e37

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856   fd  Linux raid autodetect
  
Command (m for help): w
The partition table has been altered!

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

3、组Raid5
在这里插入图片描述

[root@localhost ~]# mdadm -C /dev/md1 -l 5 -n 3 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: largest drive (/dev/sdc2) exceeds size (2627584K) by more than 1%
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

4、格式化raid5

[root@localhost ~]# mkfs.ext4 /dev/md1

5、创建挂载点

[root@localhost ~]# mkdir /raid1

6、挂载

[root@localhost ~]# mount /dev/md1 /raid1
//查看挂载情况

7、查看 raid5 可用大小

raid5 2.5G*3 ==共(5G)5.1

[root@localhost ~]# mdadm --detail /dev/md1
  Number   Major   Minor   RaidDevice State
       0       8       18        0      active sync   /dev/sdb2
       1       8       34        1      active sync   /dev/sdc2
       3       8       50        2      active sync   /dev/sdd2

扩展:数据读取速率:

(1.)在不使用raid的情况下:

[root@localhost ~]# time dd if=/dev/zero of=txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 28.6583 s, 36.6 MB/s

real    0m29.795s
user    0m0.015s
sys     0m11.086s

​ (2.)在使用了raid0的情况下

[root@localhost ~]# time dd if=/dev/zero of=/raid0/txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 20.1728 s, 52.0 MB/s

real    0m20.321s
user    0m0.016s
sys     0m3.570s

​ (3.) 在使用raid5的情况下:

[root@localhost ~]# time dd if=/dev/zero of=/raid1/txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 34.2543 s, 30.6 MB/s

real    0m34.349s
user    0m0.026s
sys     0m3.458s

结果:raid0 > raid5 > 不使用

八、容灾 ------- Raid故障模拟:

-f:模拟磁盘损坏

[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md1
[root@localhost ~]# mdadm --detail /dev/md1
Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       34        1      active sync   /dev/sdc2
       3       8       50        2      active sync   /dev/sdd2

       0       8       18        -      faulty   /dev/sdb2
       cat /proc/mdstat//查状态
### 当某一块盘出现故障时现实状况为 faulty
### mdadm --detail /dev/md1可以查看当前Raid状态,也可以用cat  /proc/mdstat 进行查看,故障用 f 表示。

[root@localhost ~]# cd /raid1
[root@localhost raid1]#
[root@localhost raid1]# mkdir test
[root@localhost raid1]# touch file
### 有一个磁盘损坏,Raid5不影响数据的存取

移除有故障的磁盘:

[root@localhost raid5]# mdadm /dev/md5 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md1

添加新的磁盘,因为Raid5至少三块盘

[root@localhost raid5]# mdadm /dev/md5 --add /dev/sdb2
mdadm: added /dev/sdb2
展开阅读全文

没有更多推荐了,返回首页