为了账号安全,请及时绑定邮箱和手机立即绑定

运维一定要知道的Linux RAID详解!

标签:
运维

RAID的基本概念

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性, Redundant 也由此而来。

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。

https://img2.sycdn.imooc.com/611144230001fc3201500231.jpg

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。

https://img1.sycdn.imooc.com/611144230001a99101500231.jpg

RAID5 应该是目前最常见的 RAID 等级 ,RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

https://img3.sycdn.imooc.com/61114423000186f503000222.jpg

RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择。

https://img1.sycdn.imooc.com/611144240001ab7503000176.jpg

https://img4.sycdn.imooc.com/6111443600010a8608230658.jpg

软 RAID

软 RAID 没有专用的控制芯片和 I/O 芯片,完全由操作系统和 CPU 来实现所的 RAID 的功能。现代操作系统基本上都提供软 RAID 支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。目前,操作系统支持的最常见的 RAID 等级有 RAID0 RAID1RAID10RAID01RAID5 等。比如, Windows Server 支持 RAID0 、 RAID1 和 RAID5 三种等级, Linux 支持 RAID0 、 RAID1 、 RAID4 、 RAID5 、 RAID6 等, Mac OS X Server 、 FreeBSD 、 NetBSD 、 OpenBSD 、 Solaris 等操作系统也都支持相应的 RAID 等级。

软 RAID 的配置管理和数据恢复都比较简单,但是 RAID 所有任务的处理完全由 CPU 来完成,如计算校验值,所以执行效率比较低下,这种方式需要消耗大量的运算资源,支持 RAID 模式 较少,很难广泛应用。

软 RAID 由操作系统来实现,因此系统所在分区不能作为 RAID 的逻辑成员磁盘,软 RAID 不能保护系统盘 D 。对于部分操作系统而言, RAID 的配置信息保存在系统信息中,而不是单独以文件形式保存在磁盘上。这样当系统意外崩溃而需要重新安装时, RAID 信息就会丢失。另外,磁盘的容错技术并不等于完全支持在线更换、热插拔或热交换,能否支持错误磁盘的热交换与操作系统实现相关,有的操作系统热交换。

硬 RAID

硬 RAID 拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲,对 CPU 的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬 RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。

硬 RAID 包含 RAID 卡和主板上集成的 RAID 芯片, 服务器平台多采用 RAID 卡。 RAID 卡由 RAID 核心处理芯片( RAID 卡上的 CPU )、端口、缓存和电池 4 部分组成。其中,端口是指 RAID 卡支持的磁盘接口类型,如 IDE/ATA SCSISATASASFC 等接口。

软硬混合 RAID

软 RAID 性能欠佳,而且不能保护系统分区,因此很难应用于桌面系统。而硬 RAID 成本非常昂贵,不同 RAID 相互独立,不具互操作性。因此,人们采取软件与硬件结合的方式来实现 RAID ,从而获得在性能和成本上的一个折中,即较高的性价比。

这种 RAID 虽然采用了处理控制芯片,但是为了节省成本,芯片往往比较廉价且处理能力较弱, RAID 的任务处理大部分还是通过固件驱动程序由 CPU 来完成。

Linux配置RAID

Linux 内核中有一个md(multiple devices)模块在底层管理 RAID 设备,它会在应用层给我们提供一个应用程序的工具 mdadm ,mdadm 是 linux 下用于创建和管理软件 RAID 的命令。mdadm 命令常见参数解释:

https://img1.sycdn.imooc.com/6111444e00019d8a05980182.jpg

https://img4.sycdn.imooc.com/6111444e000103b906010093.jpg

在VMware中添加硬盘

https://img4.sycdn.imooc.com/6111444e0001b53408580900.jpg

在/dev目录中查看添加的硬盘,硬盘的命名规则为sd{a-z}为编号

https://img1.sycdn.imooc.com/6111444f0001568411580696.jpg

创建RAID0

https://img1.sycdn.imooc.com/6111444f00014bce10300235.jpg

[root@yxb ~]# mdadm -Ds

-D  打印阵列设备详细信息 s  得到阵列缺失信息

ARRAY /dev/md0 metadata=1.2 name=yxb:0 UUID=7445f1d4:ea900c41:13dbf238:1f64b93f



查看RAID设备的详细信息

[root@yxb ~]# mdadm -D /dev/md0

/dev/md0:

           Version : 1.2

     Creation Time : Mon Jul 19 14:40:06 2021

        Raid Level : raid0

        Array Size : 10477568 (9.99 GiB 10.73 GB)

      Raid Devices : 2

     Total Devices : 2

       Persistence : Superblock is persistent


       Update Time : Mon Jul 19 14:40:06 2021

             State : clean 

    Active Devices : 2

   Working Devices : 2

    Failed Devices : 0

     Spare Devices : 0


        Chunk Size : 512K


Consistency Policy : none


              Name : yxb:0  (local to host yxb)

              UUID : 7445f1d4:ea900c41:13dbf238:1f64b93f

            Events : 0


    Number   Major   Minor   RaidDevice State

       0       8       16        0      active sync   /dev/sdb

       1       8       32        1      active sync   /dev/sdc


[root@yxb ~]# cat /proc/mdstat  #从内存中查看,重启后,信息丢失,所以要保存

Personalities : [raid0] 

md0 : active raid0 sdc[1] sdb[0]

      10477568 blocks super 1.2 512k chunks

      

unused devices: <none>


[root@yxb ~]# mdadm -Dsv > /etc/mdadm.conf  #保存配置信息


对创建的 RAID0 进行文件系统创建并挂载

https://img4.sycdn.imooc.com/611144780001739b11220408.jpg

开机自动挂载

[root@yxb ~]# blkid /dev/md0

/dev/md0: UUID="db925633-9e54-48ef-ad63-5c49f05faada" TYPE="xfs" 

[root@yxb ~]# echo "UUID=db925633-9e54-48ef-ad63-5c49f05faada /raid0 xfs defaults 0 0" >> /etc/fstab 


创建RAID1

-C 创建 -v 详细信息 -l 阵列级别 -n 阵列成员数量 -x 阵列备用盘数量将 RAID信息保存到配置文件

https://img4.sycdn.imooc.com/611144b90001406709300273.jpg

https://img1.sycdn.imooc.com/611144b90001785911710787.jpg

https://img2.sycdn.imooc.com/611144ba0001fd0e10830347.jpg

https://img1.sycdn.imooc.com/611144ba0001983a12350405.jpg

模拟硬盘故障

[root@yxb ~]# mdadm /dev/md1 -f /dev/sde mdadm: set /dev/sde faulty in /dev/md1

spare rebuilding 热备重建中,也就是 sdd 会把自己的数据同步到 sdfrebuild Status : 13% complete 同步状态 (此时 md1 中的文件依然正常使用,因为 sdd 在工作)

https://img3.sycdn.imooc.com/611144ba00010c4009550840.jpg

移除损坏的硬盘

[root@yxb ~]# mdadm -r /dev/md1 /dev/sde mdadm: hot removed /dev/sde from /dev/md1

https://img3.sycdn.imooc.com/611144bb0001f69908960729.jpg

已经没有热备盘了,添加一块新热备盘。

[root@yxb ~]# mdadm -a /dev/md1 /dev/sde
mdadm: added /dev/sde复制代码

https://img3.sycdn.imooc.com/611144bb0001532809560129.jpg

创建RAID5

https://img2.sycdn.imooc.com/611144bb0001bdfc10130160.jpg

https://img3.sycdn.imooc.com/611144bb0001a33009980895.jpg

扩展 RAID5 磁盘阵列将热备盘增加到 md5 中,使用 md5 中可以使用的磁盘数量为 4 块

[root@yxb ~]# mdadm -G /dev/md5 -n 4 -c 32

https://img4.sycdn.imooc.com/611144bc0001463009200152.jpg

阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于 raid5 来说,只能增加成员盘,不能减少。而对于 raid1 来说,可以增加成员盘,也可以减少。

停止 MD5 阵列

[root@yxb ~]# mdadm -As  #-A 激活磁盘阵列 s 扫描配置文件得到阵列信息

mdadm: /dev/md5 has been started with 4 drives.


 激活 MD5 阵列

[root@yxb ~]# mdadm -As  #-A 激活磁盘阵列 s 扫描配置文件得到阵列信息
mdadm: /dev/md5 has been started with 4 drives.复制代码


删除 RAID

[root@yxb ~]# umount /dev/md0 /raid0 #如果你已经挂载 raid,就先卸载。


[root@yxb ~]# mdadm -Ss #停止 raid  设备

[root@yxb ~]# rm -rf /etc/mdadm.conf #删除 raid  配置文件

[root@yxb ~]# mdadm --zero-superblock /dev/sdb #清除物理磁盘中的 raid 标识

[root@yxb ~]# mdadm --zero-superblock /dev/sdc #清除物理磁盘中的 raid 标识

[root@yxb ~]# mdadm -Dsv #清除物理磁盘中的 raid 标识



作者:yao


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
33
获赞与收藏
206

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消