Linux系统上RAID阵列

1.Raid阵列概述

   Raid全称为独立磁盘冗余阵列(Rdeundant Array of Independent Disks), 简称硬盘阵列。基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。Raid比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。Raid通常被用在服务器上,使用完全相同的硬盘组成一个逻辑磁盘,磁盘阵列对于计算机来说,看起来就像一个单独的硬盘或逻辑存储单元

   Raid分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡,分为Raid-0,Raid-1,Raid-5,Raid-01,Raid-10,Raid-50。在实际应用中,可以依据自己的实际需求选择不同的Raid方案

2.Raid阵列介绍(我们这里只介绍最常用的几种,如下所示:)

(1).Raid0

      Raid0称为条带化(Striping)存储,将数据分段存储于各个磁盘中,读写均可以并行处理。因此其读写速率为单个磁盘的N倍(N为组成Raid0的磁盘个数),但是却没有数据冗余,单个磁盘的损坏会导致数据的不可修复,如下所示:

     Raid0将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,Raid0的速度是最快的。但是Raid0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失,不能用于对数据安全性要求高的环境

     磁盘数:最低2个。

     Size = N * min(S1,S2)  N代表组成Raid0的磁盘数量

     优点:极高的磁盘读写效率,不存在校验,不会占用太多CPU资源,设计、使用和配置比较简单

      缺点:无冗余,不能用于对数据安全性要求高的环境

      适用领域:视频生成和编辑、图形编辑,其它需要大的传输带宽的操作

(2).Raid1

     镜像存储(mirror),数据被同等地写入两个或多个磁盘中,可想而知,写入速度会比较慢,但读取速度会比较快。读取速度可以接近所有磁盘吞吐量的总和,写入速度受限于最慢的磁盘,如下所示:

Raid1磁盘阵列每一个磁盘都有一个镜像磁盘,镜像磁盘随时保持与原磁盘的内容一致。

Raid1具有最高的安全性,但只有一半的磁盘空间被用来存储数据。主要用在对数据安全性要求很高,而且要求能够快速恢复被损坏的数据的场合

适用领域:如财务、金融等高可用、高安全的数据存储环境

磁盘数:2个

Size = min(S1,S2)

优点:具有100%数据冗余,提供最高的数据安全保障,理论上可以实现2倍的读取效率,设计和使用比较简单

缺点:空间利用率只有50%,在写性能方面略有下降

(3).Raid5

RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是运用较多的一种解决方案

磁盘数:最低3个

优点:读性能较高,中等的写性能,校验信息的分布方式存取,避免出现写操作的瓶颈;

缺点:控制器设计复杂,磁盘重建的过程比较复杂

可用空间:(N-1) * min(S1,S2,S3,…)

有容错能力:允许损坏1块磁盘

适用领域:文件服务器、email服务器、web服务器等环境,数据库应用

(4).Raid10Raid01

Raid10其实结构非常简单,首先创建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0(Raid1+0是先做Raid1,然后再做Raid0),当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。

优点:读性能很高,写性能比较好,数据安全性好,因此Raid1+0允许坏多个盘,只要不是一对磁盘坏就可以啦。

缺点:利用率只有50%

Size=N * min(S1,S2,…)/2

有容错能力:每组镜像最多只能坏一块;

适用领域:多用于要求高可用性和高安全性的数据库应用;

Raid01是先做两个Raid0,然后再做Raid1,Raid01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,因此Raid0+1允许坏多个盘,但只能在坏在同一个Raid0中,不允许两个Raid0都有坏盘。保证数据安全性的同时又提高了性能。 Raid01和 Raid10内部都含有Raid1模式,因此整体磁盘利用率均仅为50%

(5).Raid50

是Raid5和Raid0的结合,先实现Raid5,再条带化(先做Raid-5在做Raid-0,最少6块盘,每组允许坏1块盘,空间利用率灵活)

优点:比Raid5有更好的读性能,比相同容量的Raid5重建时间更短,可以容许N个磁盘同时失效

缺点:设计复杂,比较难实现;同一个Raid5组内的两个磁盘失效会导致整个阵列失效

适用领域:大型数据库服务器、应用服务器、文件服务器等应用

3.Raid5阵列构建

(1).实验说明:

在VMware中进行,系统中有一块磁盘sda,新添加6块SCSI磁盘,分别为sdb,sdc,sdd,sde,sdf,sdg, 其中4块作为磁盘阵列的设备,1块作为预备(spare)磁盘,还有1块留作备用(用于扩展Raid)

(2).实验步骤:

1).先查看一下系统中磁盘设备:fdisk -l

显示结果略

2).接下来开始创建Raid了,主要会应用到mdadm命令,使用此命令需要先安装CentOS7.6安装光盘中自带的mdadm包,如果没有安装,先进行安装

[root@localhost ~]# yum install -y mdadm

[root@localhost ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-f]

参数说明:

--create              //表示要创建Raid

--auto=yes /dev/md0   //新建立的软件磁盘阵列设备为md0,md序号可以为0-9

--level=5             //磁盘阵列的等级,这里表示创建是的Raid5

--raid-devices        //添加作为磁盘阵列用的磁盘的块数

--spare-devices       //添加作为预备(spare)磁盘的块数

/dev/sd[b-f]          //磁盘阵列所使用的设备

3).查看Raid是否成功创建及是否正常运行,有两种方法(当磁盘容量越大时,磁盘阵列构建的时间越长,所以可能需要等待很长时间才能看到以下信息)

执行 mdadm --detail /dev/md0 命令查看Raid的详细信息:

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

查看/proc/mdstat文件,可以比较简单明了的查看Raid创建和运行的情况:

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

S代表预备(spare)磁盘,4个U代表正常,出现_表示不正常

确认新建的Raid设备

执行 mdadm  -Q  /dev/md0      //-Q用来查询设备信息

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

4).格式化并且挂载和使用创建的Raid

[root@localhost ~]# mkfs.xfs /dev/md0 

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

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

来查看一下新挂载的Raid是否可以使用

[root@localhost ~]# df -hT

5).设置开机自动启动Raid以及自动挂载:

l 先建立/etc/mdadm.conf这个配置文件:

[root@localhost ~]# mdadm --detail /dev/md0 | grep UUID > /etc/mdadm.conf

上面建立的这个文件需要作小小的修改:

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

ARRAY /dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805

然后再修改/etc/fstab文件,设置开机自动挂载:

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

/dev/md0         /mnt/raid5      xfs        defaults                0 0

重启一下系统,就可以检查开机自动挂载有没有设置成功了!

[root@localhost ~]# df -hT

[root@localhost ~]# reboot

[root@localhost ~]# df -hT

3.扩容Raid磁盘阵列

显示磁盘阵列的组成情况,4个块设备组成:

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

把/dev/sdg增加进阵列/dev/md0:

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

或者

[root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdg

Raid5阵列/dev/md0修改为5个块设备:

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

再显示一下磁盘阵列的组成情况,现在/dev/md0是6个块设备组成,完成扩容,还需要2.0分钟

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

扩展文件系统,执行下列命令:

[root@localhost ~]# xfs_growfs /dev/md0

验证,执行下列命令:

[root@localhost ~]# df -hT

4.模拟Raid5中一块磁盘损坏,检验spare磁盘的功能(Raid5中允许一块磁盘损坏,我们所设置的那1块spare磁盘会立即替代损坏的磁盘,进行Raid的重建,保障数据的安全)

使用以下命令设置磁盘sdd成为出错的状态:

[root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sdd

来查看一下:

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

可以查看/proc/mdstat文件查看Raid5的重建过程再来看一下重建完后的结果

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

挂载点/mnt/raid5还可以正常使用

[root@localhost ~]# cp -rf /tmp/vm* /mnt/raid5/

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

挂载点/mnt/raid5还可以正常使用

[root@localhost ~]# cp -rf /tmp/vm* /mnt/raid5/

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

5.将出错的磁盘删除并加入新的磁盘:

先删除损坏的磁盘sdd,即将损坏的磁盘sdd从Raid中删除:

[root@localhost ~]# mdadm --manage /dev/md0  --remove /dev/sdd 

关机状态下,再添加一块新的SCSI磁盘作为spare磁盘,即添加新的磁盘sdh:

[root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdh

查看结果执行以下命令

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

6.关闭软件Raid的方法

当你不再需要已经设置的Raid的时候,可以用以下方法关闭Raid

(1).卸载/dev/md0,并且删除或注释掉/etc/fstab文件中的配置

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

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

# /dev/md0         /mnt/raid5        ext4        defaults            0 0

2).注释掉或删除/etc/mdadm.conf中的设置   

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

# ARRAY /dev/md0 UUID=d58ed27d:00ce5cf5:b26ed1e9:879d0805

(3).停止Raid设备

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

(4).删除Raid中的所有磁盘

[root@localhost ~]# mdadm --misc --zero-superblock /dev/sd[b-h]

[root@localhost ~]# df -hT

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值