Linux磁盘管理 - RAID
一、RAID技术详解
1 RAID介绍
独立磁盘冗余阵列(RAID)是一种存储技术,通过将两个或多个硬盘驱动器(HDD)或固态硬盘(SSD)合并成一个协调的存储单元或阵列,从而创建数据丢失的故障安全机制。
RAID存储通过将数据重复或重新创建,并将其存储在附加的驱动器上来防止磁盘驱动器数据的完全丢失,这个过程也被称为数据冗余。
提供数据丢失保护的配置被称为“容错”配置,这意味着即使磁盘驱动器发生故障,阵列仍然可以成功运行并提供可恢复的数据。
最初,RAID的目标是通过将多个廉价的磁盘驱动器组合起来,以取代昂贵的大型磁盘驱动器,从而提供更高的性能和容错能力。
因此,RAID的原始名称是“Redundant Array of Inexpensive Disks”(廉价磁盘冗余阵列)。
性能特征的不同,RAID级别分为多个类型,如RAID 0、RAID 1、RAID 5、RAID 6等。
RAID的发展离不开硬件和软件技术的进步。早期的RAID实施通常依赖于软件,即操作系统提供的RAID功能。
然而,随着硬件技术的进步,硬件RAID控制器出现了,提供更高的性能和更强大的功能。
条带化
当多个进程同时访问一个磁盘时,可能会出现磁盘冲突。磁盘系统对访问次数(每秒的IO操作,IOPS)和数据传输速率(读写速率,TPS)有限制。当达到这些限制时,后面需要访问磁盘的进程就需要挂起等待,这就是磁盘冲突。避免磁盘冲突是优化I/O性能的一个重要目标。
条带化技术是一种自动的将I/0负载均衡到多个物理磁盘上的技术。条带化技术将一块连续的数据分成很多小部分,并把他们分别存储到不同的磁盘上去。
这样就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突,最大化I/0性能。
RAID存储提供了不同的级别,每个级别具有不同的冗余和性能特性。
RAID 0:条带化(数据分块)但没有冗余,提供较高的读写性能。
RAID 1:镜像,数据完全复制到另一个驱动器,提供容错能力。
RAID 5:条带化加分布式奇偶校验,提供数据冗余和读取性能。
RAID 6:类似于RAID 5,但提供更高级别的容错能力。
RAID 10:RAID 1+0,将RAID 1镜像组合成RAID 0条带化,提供较高的容错能力和读写性能。
RAID 50:RAID 5组合成RAID 0,提供较高的性能和容错能力。
RAID 60:RAID 6组合成RAID 0,提供更高级别的性能和容错能力。
2 常见的RAID级别
RAID 0
RAID 0使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,而不进行冗余备份。
数据被分成固定大小的块,并依次存储在每个磁盘上。例如,如果有两个驱动器(驱动器A和驱动器B),一块数据的第一个部分存储在驱动器A上,第二个部分存储在驱动器B上,以此类推。
这种条带化的方式可以同时从多个驱动器读取或写入数据,从而提高系统的性能。
RAID 0特点:
-
至少需要两块磁盘
-
数据条带化分布到磁盘,拥有高读写性能,100%的存储空间利用率
-
数据没有冗余策略,一块磁盘故障,数据将无法恢复
RAID 0适用于需要高性能而不关心数据冗余的场景。
视频编辑和处理:在视频编辑中,需要快速读取和写入大量数据。RAID 0可以通过并行读写操作提高数据传输速度,加快视频编辑和处理的速度。
实时流媒体:对于需要实时传输和处理大量数据的流媒体应用,RAID 0可以提供足够的带宽和吞吐量,确保流媒体内容的平滑播放。
RAID 0也存在一些缺点:
缺乏冗余:由于RAID 0不提供数据冗余,如果任何一个驱动器发生故障,所有数据都可能丢失。因此,RAID 0不适合存储关键数据。
可靠性降低:由于没有冗余备份,RAID 0的可靠性相对较低。如果任何一个驱动器发生故障,整个阵列的可用性将受到影响。
RAID 1
RAID 1使用数据镜像(mirroring)的方式将数据完全复制到两个或多个磁盘驱动器上。
当写入数据时,数据同时写入所有驱动器。这样,每个驱动器都具有相同的数据副本,从而实现数据的冗余备份。
如果其中一个驱动器发生故障,系统可以继续从剩余的驱动器中读取数据,确保数据的可用性和完整性。
RAID1特点:
-
至少需要2块磁盘
-
数据镜像备份写到磁盘上(工作盘和镜像盘),可靠性高,磁盘利用率为50%
-
读性能可以,但写性能不佳
-
一块磁盘故障,不会影响数据的读写
RAID 1适用于对数据冗余和高可用性要求较高的场景。
关键数据存储:对于关键数据的存储,如企业的财务数据、客户信息等,RAID 1可以提供数据冗余备份,以防止数据丢失。
数据库服务器:对于需要高可用性和容错性的数据库服务器,RAID 1可以确保数据的持久性和可用性,即使一个驱动器发生故障,也可以从其他驱动器中读取数据。
文件服务器:对于共享文件的服务器,RAID 1可以提供冗余备份,确保文件的可靠性和高可用性。
RAID 1也存在一些缺点:
成本增加:由于需要额外的磁盘用于数据冗余备份,RAID 1的成本相对较高。需要考虑额外的硬件成本。
写入性能略低:由于数据需要同时写入多个驱动器,相对于单个驱动器的写入性能,RAID 1的写入性能可能略低。
RAID 5
RAID 5使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇偶校验实现数据的冗余备份。
数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的驱动器上。
当写入数据时,奇偶校验信息也会被更新。如果其中一个驱动器发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。
这种方式可以同时提供性能增强和数据冗余。
RAID 5特点:
至少需要3块磁盘
数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
以奇偶校验(分散)做数据冗余
一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
是目前综合性能最佳的数据保护解决方案
兼顾了存储性能、数据安全和存储成本等各方面因素(性价比高)
适用于大部分的应用场景
RAID 5适用于需要性能增强和数据冗余的场景。以下是几种适合使用RAID 5的场景:
文件服务器:对于文件服务器,RAID 5可以提供高性能的数据访问和数据冗余备份,确保文件的安全性和可用性。
数据库服务器:对于需要高性能和数据冗余的数据库服务器,RAID 5可以提供快速的数据读取和写入,同时保护数据免受驱动器故障的影响。
小型企业环境:对于小型企业,RAID 5提供了经济实惠的解决方案,同时提供了性能和数据冗余的好处。
RAID 5具有以下优点:
1、性能增强:通过数据条带化和并行读写操作,RAID 5可以提供较高的数据传输速度和系统性能。
2、数据冗余备份:通过分布式奇偶校验,RAID 5可以提供数据的冗余备份,保护数据免受驱动器故障的影响。
3、成本效益:相对于其他RAID级别(如RAID 1),RAID 5只需要额外一个驱动器用于奇偶校验信息,从而在成本上更具竞争力。
RAID 5也存在一些缺点:
写入性能受限:由于写入数据时需要重新计算奇偶校验信息,相对于读取操作,RAID 5的写入性能较低。
驱动器故障期间的数据完整性:如果一个驱动器发生故障,系统在恢复数据时需要进行计算,这可能导致数据访问速度较慢,并且在此期间可能会有数据完整性的风险。
RAID 6
RAID 6使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇偶校验和双重奇偶校验实现数据的冗余备份。
数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的驱动器上,并通过双重奇偶校验提供更高的数据冗余性。
当写入数据时,奇偶校验信息也会被更新。如果其中两个驱动器发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。
这种方式可以同时提供性能增强和更高级别的数据冗余。
RAID6特点:
-
至少需要4块磁盘
-
数据条带化存储在磁盘,读取性能好,容错能力强
-
采用双重校验方式保证数据的安全性
-
如果2块磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
-
成本要比其他等级高,并且更复杂
-
一般用于对数据安全性要求非常高的场合
RAID 6适用于需要更高级别的数据冗余和性能增强的场景。以下是几种适合使用RAID 6的场景:
大容量存储系统:对于需要大容量存储和数据冗余备份的系统,如大型文件服务器或存档系统,RAID 6可以提供更高级别的数据冗余性。
长时间运行的应用程序:对于需要长时间运行的关键应用程序,如数据库服务器,RAID 6可以提供更高级别的数据冗余和故障容忍性。
虚拟化环境:在虚拟化环境中,需要高性能和更高级别的数据冗余来支持多个虚拟机的运行。RAID 6可以满足这些要求。
RAID 6具有以下优点:
更高级别的数据冗余:通过分布式奇偶校验和双重奇偶校验,RAID 6可以提供更高级别的数据冗余性,即使同时发生两个驱动器故障,仍能恢复丢失的数据。
性能增强:通过数据条带化和并行读写操作,RAID 6可以提供较高的数据传输速度和系统性能。
RAID 6也存在一些缺点:
写入性能略低:由于数据需要同时写入多个驱动器,并进行双重奇偶校验计算,相对于读取操作,RAID 6的写入性能较低。
较高的成本:由于需要额外的磁盘用于奇偶校验信息和更复杂的计算,RAID 6的成本相对较高。需要考虑额外的硬件成本。
RAID 10
RAID 10使用条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过镜像(mirroring)实现数据的冗余备份。
数据被分成固定大小的块,并依次存储在不同的驱动器上,类似于RAID 0。
然而,每个数据块都会被完全复制到另一个驱动器上,实现数据的冗余备份,类似于RAID 1。这样,RAID 10在提供性能增强的同时,也提供了数据的冗余保护。
RAID10特点:
-
RAID10是RAID1+RAID0的组合
-
至少需要4块磁盘
-
两块硬盘为一组先做RAID1,再将做好RAID1的两组做RAID0
-
兼顾数据的冗余(RAID1镜像)和读写性能(RAID0数据条带化)
-
磁盘利用率为50%,成本较高
RAID 10适用于需要高性能和数据冗余的场景。以下是几种适合使用RAID 10的场景:
数据库服务器:对于需要高可用性和性能的数据库服务器,RAID 10可以提供快速的数据读取和写入,同时保护数据免受驱动器故障的影响。
虚拟化环境:在虚拟化环境中,需要高性能和数据冗余来支持多个虚拟机的运行。RAID 10可以满足这些要求,提供性能增强和数据保护。
关键业务应用:对于关键业务应用,如金融交易系统或在线电子商务平台,RAID 10可以提供高可用性和快速的数据访问,确保业务的连续性和稳定性。
RAID 10具有以下优点:
高性能:通过数据条带化和并行读写操作,RAID 10可以提供较高的数据传输速度和系统性能。
数据冗余备份:通过数据镜像将数据完全复制到另一个驱动器上,RAID 10提供了数据的冗余备份,保护数据免受驱动器故障的影响。
较高的可靠性:由于RAID 10采用镜像的方式进行数据冗余备份,即使一个驱动器发生故障,仍然可以从其他驱动器中读取数据,确保数据的可用性和连续性。
快速的故障恢复:在RAID 10中,如果一个驱动器发生故障,系统可以直接从镜像驱动器中恢复数据,而无需进行复杂的计算,从而加快故障恢复的速度。
RAID 10也存在一些缺点:
较高的成本:相对于其他RAID级别,RAID 10需要更多的驱动器用于数据镜像,从而增加了硬件成本。
低效的空间利用:由于RAID 10的数据镜像特性,有效的存储容量只等于所有驱动器中一半的容量,因此空间利用率较低。
RAID级别总结
RAID级别 | 最小磁盘数 | 容错能力 | 磁盘空间开销 | 读取速度 | 写入速度 | 硬件成本 |
---|---|---|---|---|---|---|
RAID 0 | 2 | 无 | 0% | 高 | 高 | 低 |
RAID 1 | 2 | 单个磁盘 | 50% | 高 | 低 | 中 |
RAID 5 | 3 | 单个磁盘 | 1 / N | 中 | 低 | 中 |
RAID 6 | 4 | 两个磁盘 | 2 / N | 中 | 低 | 高 |
RAID 10 | 4 | 多个磁盘 | 50% | 高 | 中 | 高 |
RAID 50 | 6 | 单个磁盘 | 1 / N | 高 | 中 | 高 |
RAID 60 | 8 | 多个磁盘 | 50% | 高 | 中 | 高 |
3 软硬RAID
软RAID
软RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。软RAID有以下特点:
占用内存空间
占用CPU资源
如果程序或者操作系统故障就无法运行
总结:基于以上缺陷,所以现在企业很少用软RAID。
硬RAID
通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。
RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。
不同的RAID卡支持的RAID功能不同,支持RAID0、RAID1、RAID4、RAID5、RAID10不等。
4 mdadm命令
在介绍RAID的创建之前,需要先了解mdadm工具,它是Linux系统中用于管理软件RAID的主要命令行工具。
mdadm(multiple disk admin)是Linux系统中管理和监控软件RAID设备的工具。它提供了创建、管理、监控RAID设备的完整功能。
-- 在这之前先创建一个磁盘,创建一个10G差不多了-- 然后分区
gdisk/dev/sdbn1回车+1G回车wmdadm [模式] <RAID设备名称> [选项] [成员设备...]
创建RAID0
mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
格式化
mkfs.ext4 /dev/md0
挂载就行:
mount /dev/md0 /mnt