RAID磁盘阵列
一·、RAID介绍
1、什么是RAID
RAID,全称是Redundant Array of Independent Disks,中文意思是“独立磁盘冗余阵列”,或者叫做“磁盘阵列”。这是一种计算机存储技术,它通过将多个物理硬盘驱动器组合为一个或多个逻辑单元,以达到提高数据冗余性、提升存储性能等目的。
2、常见RAID分类
·RAID 0:
RAID 0是一种数据存储技术,其主要作用是提高存储系统的性能和容量。
优点:
- 性能提升:RAID 0通过将数据分割成小块并在多个硬盘上同时写入或读取,从而显著提高了数据的读写速度。因为数据可以同时在多个硬盘上进行操作,所以RAID 0能够充分利用各个硬盘的带宽和处理能力,从而加快数据访问速度。
- 容量增加:RAID 0将多个硬盘组合成一个逻辑单元,所有硬盘的容量累加起来形成了一个更大的存储空间。这种方式使得用户可以利用多个硬盘的容量来存储数据,从而获得更大的存储容量。
- 成本效益:相比于其他RAID级别(如RAID 1、RAID 5等)来说,RAID 0的成本较低。因为它不需要额外的硬盘来实现数据的冗余备份,只是简单地将数据分割存储在多个硬盘上,所以成本相对较低。
缺点:RAID 0没有冗余备份功能,一旦其中一个硬盘出现故障,所有数据都将丢失
·RAID 1:
RAID 1是一种数据存储技术,其主要作用是提供数据冗余备份以提高数据的可靠性和安全性。
优点:
1.数据冗余备份:RAID 1通过在两个硬盘上同时写入相同的数据来实现数据的冗余备份。这意味着如果其中一个硬盘发生故障,系统仍然可以从另一个硬盘中恢复数据,保障了数据的安全性和可靠性。
2.读取性能提升:虽然RAID 1的主要目的是提供数据冗余备份,但它也可以提升数据的读取性能。因为数据同时被写入两个硬盘,所以在读取数据时可以同时从两个硬盘中获取,从而提高了读取速度。
3.容错能力强:由于RAID 1具有数据冗余备份,因此具备较强的容错能力。即使其中一个硬盘损坏,系统仍然可以继续正常运行并保持数据的完整性,不会丢失任何数据。
4.简单可靠:相比于其他RAID级别,如RAID 5、RAID 6等,RAID 1的实现相对简单可靠。它只需要两个硬盘并在其上进行镜像写入,不涉及复杂的奇偶校验或条带化操作。
缺点:
1.成本较高:由于RAID 1需要两倍的硬盘空间来存储相同的数据,因此相对于其他RAID级别来说,RAID 1的成本较高。
2.写入性能略低:虽然RAID 1可以提升数据的读取性能,但在写入数据时,需要同时将数据写入两个硬盘,因此写入性能略低于单个硬盘的写入性能。
3.不提供容量增加:RAID 1的存储容量等于其中一个硬盘的容量,因此无法通过增加硬盘来扩展存储容量,只能通过替换硬盘来提升容量。
4.不适用于大规模存储:由于RAID 1的存储容量只是其中一个硬盘的容量,因此不适用于大规模存储需求,比如需要存储大量数据的企业级存储场景
·RAID 5:
RAID 5是一种数据存储技术,其主要作用是提高存储系统的性能、容量和数据冗余备份.
优点:
1.数据冗余备份和容错能力:RAID 5通过将数据和奇偶校验信息分布存储在多个硬盘中,实现了数据的冗余备份和容错能力。如果其中一个硬盘发生故障,系统可以根据奇偶校验信息恢复数据,而不会丢失任何数据。
2.性能提升:与RAID 1相比,RAID 5在写入数据时的性能更高。在RAID 5中,数据和奇偶校验信息分布存储在多个硬盘上,因此可以实现并行写入,提高了写入性能。
3.容量利用率高:RAID 5将数据和奇偶校验信息分布存储在多个硬盘上,并且只需要一个硬盘的容量用于存储奇偶校验信息,因此相比于RAID 1,RAID 5的存储容量利用率更高。
4.相对成本效益高:虽然RAID 5相比于RAID 1需要更多的硬盘来实现数据的冗余备份和奇偶校验信息的存储,但相对于其他RAID级别(如RAID 10、RAID 6等)来说,RAID 5的成本较低。
5.适用于中等规模存储需求:由于RAID 5提供了数据冗余备份、性能提升和相对高的存储容量利用率,因此适用于中等规模存储需求的场景,比如中小型企业的文件服务器、数据库服务器等。
缺点:
1.写入性能下降:尽管RAID 5在读取性能上有所提升,但在写入数据时,由于需要计算奇偶校验信息,写入性能可能会略微下降,特别是在大量写入小块数据的情况下。
2.重建时间较长:当RAID 5中的一块硬盘损坏时,需要重新计算和重建丢失的数据,这一过程可能需要较长的时间。在这段时间内,系统可能会处于脆弱状态,容易受到其他硬盘故障的影响。
3.不适用于大容量硬盘:随着硬盘容量的增加,RAID 5的容错能力可能会受到影响。在RAID 5中,重建过程需要读取所有硬盘上的数据,而在大容量硬盘上进行这样的操作可能会导致数据恢复时间过长,并增加其他硬盘发生故障的风险。
4.写入操作的性能不稳定:在RAID 5中,写入操作需要计算奇偶校验信息并更新多个硬盘上的数据,这可能导致写入操作的性能不稳定,特别是在高负载情况下。
5.对RAID控制器要求较高:由于RAID 5涉及复杂的数据分布和奇偶校验计算,对RAID控制器的性能和稳定性要求较高。低质量或不稳定的RAID控制器可能会影响整个RAID 5系统的性能和可靠性。
·RAID 10:
RAID 10是一种RAID级别,结合了RAID 1和RAID 0的特点,其主要作用是提高存储系统的性能和数据冗余备份。
优点:
1.高性能:RAID 10可以提供较高的读取和写入性能。它将数据分散存储在多个硬盘上,并利用条带化(striping)技术实现并行读写操作,从而提高了系统的性能。
2.数据冗余备份:与RAID 1相似,RAID 10也提供了数据的冗余备份。数据被镜像到多个硬盘上,因此如果一个硬盘损坏,系统仍然可以从镜像硬盘中恢复数据,确保数据的安全性和可靠性。
3.容错能力强:由于RAID 10结合了RAID 1和RAID 0的特点,它具有较强的容错能力。即使其中一个硬盘发生故障,系统仍然可以通过镜像硬盘中的数据进行恢复,而不会丢失任何数据。
4.适用于高性能和高可靠性需求:由于RAID 10可以提供较高的性能和数据冗余备份,因此非常适用于对性能和可靠性要求较高的应用场景,比如数据库服务器、虚拟化环境等。
5.较低的重建时间:当RAID 10中的一块硬盘损坏时,重建过程相对较快。因为RAID 10中的数据镜像已经存在于其他硬盘上,系统只需要将数据从镜像硬盘中复制到替换的硬盘上即可完成重建,重建时间相对较短。
缺点:
1.高成本:RAID 10需要至少四块硬盘来实现数据镜像和条带化,这导致了存储成本相对较高。由于需要的硬盘数量较多,RAID 10的成本通常高于其他RAID级别。
2.存储容量利用率低:由于RAID 10中的数据是通过镜像方式存储的,存储容量利用率相对较低。例如,使用四块硬盘的RAID 10中,只有一半的容量可用于存储数据,另一半用于数据的镜像。
3.不适用于大规模存储需求:对于需要大规模存储的应用场景,如大型数据中心或云存储环境,由于RAID 10的存储容量利用率低,其成本和管理复杂性可能会成为问题。
4.写入操作的性能可能受限:虽然RAID 10可以提供较高的读取和写入性能,但在某些情况下,特别是在同时进行大量写入操作时,由于需要进行数据镜像和条带化的计算,写入性能可能会受到一定的限制。
5.对RAID控制器的要求高:与RAID 5类似,RAID 10的实现也需要高质量和稳定的RAID控制器。不合适的RAID控制器可能会影响整个RAID 10系统的性能和可靠性。
二、搭建
1、设备硬件配置参考(添加4块磁盘)
2、设备中各节点设备名称和ip规划
---节点都要能ping通外网
主机名 | IP地址 | 准备 |
localhost | 192.168.100.128 | 系统为Centos7,内存大于2GB |
使用VMWare Workstation软件安装CentOS 7.2操作系统,镜像使用CentOS-7-x86_64-DVD-1511.iso,并添加4块20 GB硬盘。
3、搭建步骤与思路
A.创建raid
1、查看磁盘
利用磁盘分区新建2个磁盘分区,每个大小为20 GB。用这2个20 GB的分区来模拟1个40 GB的硬盘。
[root@localhost ~]# lsblk //用于查看磁盘信息
解析:
Lsblk:用于列出块设备信息,包括硬盘、分区和挂载点等。
2、配置本地yum源
[root@localhost ~]# mkdir /opt/centos
[root@localhost ~]#mount /dev/cdrom /opt/centos
[root@localhost ~]#df -hT //查看挂载信息
[root@localhost ~]#mv /etc/yum.repos.d/* /media
[root@localhost ~]#vi /etc/yum.repos.d/yum.repo
[centso]
name=centos
baseurl=file:///opt/centos/
gpgcheck=0
enabled=1
命令解析:
- yum
一个用于下载东西的命令,可以更方便的解决所安装的工具的依赖关系。
安装工具mdadm,使用已有YUM源进行安装,命令如下:
(mdadm工具能不能用网络源安装)
(mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具。)
[root@localhost ~]# yum install -y mdadm
3、创建RAID 0设备
创建一个RAID 0设备:这里使用/dev/sdb和/dev/sdc做实验。
将/dev/sdb和/dev/sdc建立RAID等级为RAID 0的md0(设备名)。
[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sd{b,c}
解析:
- -C v:创建设备,并显示信息。
- -l 0:RAID的等级为RAID 0。
- -n 2:创建RAID的设备为2块。
/dev/md0:对设备的命名
/dev/md0是一个Linux软件RAID(独立磁盘冗余阵列)设备。它是一种虚拟设备,将多个物理磁盘组合到一个逻辑单元中,以提高性能、可靠性和数据保护。md代表“多个设备”,数字0代表第一个软件RAID设备的标识符/在具有RAID配置的Linux系统中,dev/md0通常用作根文件系统或数据分区。
4、查看系统上的RAID
[root@localhost ~]# cat /proc/mdstat
解析:
是Linux中的一个系统文件,用于显示软件RAID(独立磁盘冗余阵列)设备的当前状态。它提供有关RAID阵列状态的信息,包括阵列类型、阵列中磁盘的数量、每个磁盘的状态(活动、非活动、故障等)以及阵列的总体运行状况。
Personalities : [raid0] //阵列类型
md0 : active raid0 sdc[1] sdb[0] //磁盘状态及数量
41908224 blocks super 1.2 512k chunks
unused devices: <none>
[root@localhost ~]# mdadm -Ds //简单查看
解析:
(阵列/dev/md0元数据=1.2名称=本地主机。本地域:0 UUID=2816724a:d2525a8b:8eaefd23:7e57f770)
- -s :扫描配置文件或/proc/mdstat,得到阵列缺失信息(即缺失或损坏设备的信息)
- -D :打印阵列设备的详细信息
[root@localhost ~]# mdadm -D /dev/md0 //详细查看
生成配置文件mdadm.conf:
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
解析:
生成 mdadm.conf 配置文件的作用是为了在系统引导时自动装载 RAID 设备并进行相应的配置。该配置文件包含了 RAID 设备的信息,如设备路径、RAID 级别、成员设备等,以便系统在启动时可以正确识别和装载这些 RAID 设备。
作用:
1.自动装载 RAID 设备:mdadm.conf 文件中包含了 RAID 设备的信息,系统在引导时会根据这些信息自动装载 RAID 设备,使其可用于系统操作。
2.配置 RAID 设备属性:mdadm.conf 文件可以包含有关 RAID 设备的配置信息,如 RAID 级别、磁盘故障处理策略等,以确保在系统启动时设备按照指定的方式进行配置。
3.避免手动配置:通过生成 mdadm.conf 文件,可以避免每次系统启动时手动配置 RAID 设备,节省了时间和工作量。
4.提高系统稳定性:正确配置的 mdadm.conf 文件可以确保系统在启动时正确识别和装载 RAID 设备,从而提高系统的稳定性和可靠性。
5、格式化并挂载查看
[root@localhost ~]# mkfs.xfs /dev/md0 //格式化
[root@localhost ~]# mkdir /raid0/
[root@localhost ~]# mount /dev/md0 /raid0/ //挂载
[root@localhost ~]# df -hT /raid0/
解析:
这是手动挂载,重起虚拟机后需要重新挂载才能使用
开机自动挂载
[root@localhost ~]# blkid /dev/md0
[root@localhost ~]# echo "UUID=5c2d683f-f170-4906-affa-84da6097e0fa /raid0 xfs defaults 0 0" >> /etc/fstab
解析:
blkid命令:用于查看块设备的文件系统类型和属性
/etc/fstab文件的作用:
磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。
系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。
6、删除RAID 0
[root@localhost ~]# umount /raid0
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /etc/mdadm.conf
[root@localhost ~]# rm -rf /raid0/
[root@localhost ~]# mdadm --zero-superblock /dev/sd{b,c}
[root@localhost ~]# vi /etc/fstab
UUID=5c2d683f-f170-4906-affa-84da6097e0fa /raid0 xfs defaults 0 0 //删除此行(即取消虚拟机的开机自动读取文件形成挂载 )
解析:
- -S:用于停止RAID设备
- --zero-superblock:命令用于清除指定 RAID 设备上的超级块信息
7、RAID 5 运维操作
利用3个20 GB的磁盘来模拟raid 5,加一个热备盘。
[root@localhost ~]# mdadm -C /dev/md5 -l 5 -n 3 /dev/sd{b,c,d} -x 1 /dev/sde
解析:
- -C, --create:创建一个新的阵列
- -v, --verbose:显示细节
- /dev/md5:指定的名称
- -l, --level=:设定 raid level.(及使用磁盘数量)
- -n, --raid-devices=:指定阵列中可用 device 数目,
- -x:用于指定RAID设备中备用磁盘的数量。它允许在出现故障的情况下自动替换故障设备,从而确保RAID系统的连续性。(如果其中一块被替代后,能否正常运行,整个磁盘阵列的数据会不会有丢失的情况)
·查看详细信息
[root@localhost ~]# mdadm -D /dev/md5
解析:
见上文
raid5,它需要校验(同步),就是这个状态:spare rebuilding。等一会,它完成校验了自动就出现active sync
如果想看一下进度到哪里了,cat /proc/mdstat 文件
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
·模拟硬盘故障
[root@localhost ~]# mdadm -f /dev/md5 /dev/sdb
-f : 设置某盘为坏盘
mdadm: set /dev/sdb faulty in /dev/md5
(mdadm:在/dev/md5中设置/dev/sdb故障)
查看:
[root@localhost ~]# mdadm -D /dev/md5
从以上结果可以发现原来的热备盘/dev/sde正在参与RAID 5的重建,而原来的/dev/sdb变成了坏盘。
·热移除故障盘:
[root@localhost ~]# mdadm -r /dev/md5 /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md5
解析:
- -r : 移除坏盘
注:模拟磁盘坏了以后不要第一时间移除,因为这可能磁盘里面的文件,导致磁盘中的文件不能全部转移到备份盘中
查看:
[root@localhost ~]# mdadm -D /dev/md5
- 格式化磁盘并挂载查看
[root@localhost ~]# mkfs.xfs /dev/md5 -f
解析:
- -f:强制格式化。如果设备内已经有了文件系统,则需要使用-f强制格式化
挂载并查看:
[root@localhost ~]# mount /dev/md5 /mnt/
[root@localhost ~]# df -h