环境准备

虚拟机添加6块20G 硬盘,sdb sdc sdd sde sdf sdg

RAID 技术历史

1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等人首次在论文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念 ,即廉价磁盘冗余阵列( Redundant Array of Inexpensive Disks )。由于当时大容量磁盘比较昂贵, RAID 的基本思想是将多个容量较小、相 对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠 性。随着磁盘成本和价格的不断降低, RAID 可以使用大部分的磁盘, “廉价” 已经毫无意义。因 此, RAID 咨询委员会( RAID Advisory Board, RAB )决定用 “ 独立 ” 替代 “ 廉价 ” ,于时 RAID 变成了独立磁盘冗余阵列( Redundant Array of Independent Disks )。但这仅仅是名称的变 化,实质内容没有改变。

RAID 实现方式

从实现角度看, RAID 主要分为:

软 RAID:所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率最低。

硬 RAID :配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,成本很高。

软硬混合 RAID:具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序 来完成,性能和成本在软 RAID 和硬 RAID 之间。

RAID 级别

RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据 运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用 的需求。 D. A. Patterson 等的论文中定义了 RAID1 ~ RAID5 原始 RAID 等级, 1988 年以来又 扩展了 RAID0 和 RAID6

近年来,存储厂商不断推出诸如 RAID7 、 RAID10/01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等级,但这些并无统一的标准。目前业界公认的标准是 RAID0 ~ RAID5 ,而在实际应用领域中使 用最多的 RAID 等级是 RAID0 、 RAID1 、 RAID4 、 RAID5 、 RAID6 和 RAID10。

RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用 户的数据应用特点,综合考虑可用性、性能和成本来选择合适的 RAID 等级,以及具体的实现方 式。

下面我们来详细介绍一下RAID的各个级别

RAID 0

原理

RAID 0使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,而不进行冗余备 份。数据被分成固定大小的块,并依次存储在每个磁盘上。例如,如果有两个驱动器(驱动器A和 驱动器B),一块数据的第一个部分存储在驱动器A上,第二个部分存储在驱动器B上,以此类 推。这种条带化的方式可以同时从多个驱动器读取或写入数据,从而提高系统的性能。

适用场景

RAID 0适用于需要高性能而不关心数据冗余的场景。以下是几种适合使用RAID 0的场景:

1. 视频编辑和处理:在视频编辑中,需要快速读取和写入大量数据。RAID 0可以通过并行读写 操作提高数据传输速度,加快视频编辑和处理的速度。

2. 大型数据库应用:对于需要频繁访问和查询数据库的应用程序,RAID 0可以提供更快的数据 访问速度,加快数据库操作的响应时间。

3. 实时流媒体:对于需要实时传输和处理大量数据的流媒体应用,RAID 0可以提供足够的带宽 和吞吐量,确保流媒体内容的平滑播放。

优点

RAID 0具有以下优点:

1. 高性能:通过数据条带化和并行读写操作,RAID 0可以提供更快的数据传输速度和更高的系 统性能。

2. 成本效益:相对于其他RAID级别(如RAID 1或RAID 5),RAID 0不需要额外的磁盘用于冗 余备份,因此在成本上更具竞争力。

缺点

RAID 0也存在一些缺点:

1. 缺乏冗余:由于RAID 0不提供数据冗余,如果任何一个驱动器发生故障,所有数据都可能丢 失。因此,RAID 0不适合存储关键数据。

2. 可靠性降低:由于没有冗余备份,RAID 0的可靠性相对较低。如果任何一个驱动器发生故 障,整个阵列的可用性将受到影响。

RAID 1

原理

RAID 1使用数据镜像(mirroring)的方式将数据完全复制到两个或多个磁盘驱动器上。当写入数 据时,数据同时写入所有驱动器。这样,每个驱动器都具有相同的数据副本,从而实现数据的冗 余备份。如果其中一个驱动器发生故障,系统可以继续从剩余的驱动器中读取数据,确保数据的 可用性和完整性。

适用场景

RAID 1适用于对数据冗余和高可用性要求较高的场景。以下是几种适合使用RAID 1的场景:

1. 关键数据存储:对于关键数据的存储,如企业的财务数据、客户信息等,RAID 1可以提数据冗余备份,以防止数据丢失。

2. 数据库服务器:对于需要高可用性和容错性的数据库服务器,RAID 1可以确保数据的持久性和可用性,即使一个驱动器发生故障,也可以从其他驱动器中读取数据。

3. 文件服务器:对于共享文件的服务器,RAID 1可以提供冗余备份,确保文件的可靠性和高可 用性。 优点 RAID 1具有以下

优点:

1. 数据冗余备份:RAID 1通过数据镜像将数据完全复制到多个驱动器上,提供冗余备份,保护 数据免受驱动器故障的影响。

2. 高可用性:由于数据的冗余备份,即使一个驱动器发生故障,系统仍然可以从其他驱动器中 读取数据,保证数据的可用性和连续性。

3. 读取性能提升:RAID 1可以通过并行读取数据的方式提升读取性能,从而加快数据访问速 度。

缺点

RAID 1也存在一些缺点:

1. 成本增加:由于需要额外的磁盘用于数据冗余备份,RAID 1的成本相对较高。需要考虑额外 的硬件成本。

2. 写入性能略低:由于数据需要同时写入多个驱动器,相对于单个驱动器的写入性能,RAID 1 的写入性能可能略低。

RAID 5

原理

RAID 5使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇 偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式 存储在不同的驱动器上。当写入数据时,奇偶校验信息也会被更新。如果其中一个驱动器发生故 障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。这种方式可以同时提供性能增强和 数据冗余。

适用场景

RAID 5适用于需要性能增强和数据冗余的场景。以下是几种适合使用RAID 5的场景:

1. 文件服务器:对于文件服务器,RAID 5可以提供高性能的数据访问和数据冗余备份,确保文 件的安全性和可用性。

2. 数据库服务器:对于需要高性能和数据冗余的数据库服务器,RAID 5可以提供快速的数据读 取和写入,同时保护数据免受驱动器故障的影响。

3. 小型企业环境:对于小型企业,RAID 5提供了经济实惠的解决方案,同时提供了性能和数据 冗余的好处。

优点

RAID 5具有以下优点:

1. 性能增强:通过数据条带化和并行读写操作,RAID 5可以提供较高的数据传输速度和系统性 能。

2. 数据冗余备份:通过分布式奇偶校验,RAID 5可以提供数据的冗余备份,保护数据免受驱动 器故障的影响。

3. 成本效益:相对于其他RAID级别(如RAID 1),RAID 5只需要额外一个驱动器用于奇偶校验 信息,从而在成本上更具竞争力。

缺点

RAID 5也存在一些缺点:

1. 写入性能受限:由于写入数据时需要重新计算奇偶校验信息,相对于读取操作,RAID 5的写 入性能较低。

2. 驱动器故障期间的数据完整性:如果一个驱动器发生故障,系统在恢复数据时需要进行计 算,这可能导致数据访问速度较慢,并且在此期间可能会有数据完整性的风险。

RAID 6

原理 RAID 6使用数据条带化(striping)的方式将数据分散存储在多个磁盘驱动器上,并通过分布式奇 偶校验和双重奇偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校 验信息被分布式存储在不同的驱动器上,并通过双重奇偶校验提供更高的数据冗余性。当写入数 据时,奇偶校验信息也会被更新。如果其中两个驱动器发生故障,系统可以通过重新计算奇偶校 验信息来恢复丢失的数据。这种方式可以同时提供性能增强和更高级别的数据冗余。

管理软 RAID

管理 RAID0

[root@centos7 ~]# yum install -y mdadm
# 创建一个包含2个块设备的raid0设备/dev/md0
[root@centos7 ~]# mdadm --create /dev/md0 --level 0 --raid-devices 2 
/dev/sd{b,c}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看 RAID

# 查看 raid 概要信息
[root@centos7 ~]# cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] 
md0 : active raid0 sdc[1] sdb[0]
      41908224 blocks super 1.2 512k chunks
      
unused devices: <none>
# 查看 raid 设备详细信息
[root@centos7 ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Aug  2 17:03:58 2024
       Raid Level : raid0
       Array Size : 41908224 (39.97 GiB 42.91 GB)
     Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent
       Update Time : Fri Aug  2 17:03:58 2024
             State : clean 
Active Devices : 2
   Working Devices : 2
   Failed Devices : 0
     Spare Devices : 0
           Layout : original
       Chunk Size : 512K
Consistency Policy : none
             Name : centos7.linux.fun:0 (local to host 
centos7.linux.fun)
             UUID : afe03287:7cfb8b2e:82844a2e:8f721e04
           Events : 0
   Number   Major   Minor   RaidDevice State
       0       8       16        0     active sync   /dev/sdb
       1       8       32        1     active sync   /dev/sdc

格式化和挂载

[root@centos7 ~]# mkfs.xfs /dev/md0
[root@centos7 ~]# mkdir -p /raid/raid0
[root@centos7 ~]# mount /dev/md0 /raid/raid0
[root@centos7 ~]# df -h /raid/raid0
Filesystem     Size Used Avail Use% Mounted on
/dev/md0         40G 319M   40G   1% /raid/raid0
# 创建数据
[root@centos7 ~]# cp /etc/ho* /raid/raid0
[root@centos7 ~]# ls /raid/raid0/
host.conf hostname hosts

删除 RAID

# 卸载
[root@centos7 ~]# umount /dev/md0
# stop RAID阵列,将删除阵列
[root@centos7 ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
# 清除原先设备上的 md superblock
[root@centos7 ~]# mdadm --zero-superblock /dev/sd{b,c}

补充说明

raid0 条带不能增加新成员盘。

[root@centos7 ~]# mdadm --add /dev/md0 /dev/sdd
mdadm: add new device failed for /dev/sdd as 2: Invalid argument

raid0 条带不能强制故障成员盘。

root@centos7 ~]# mdadm --fail /dev/md0 /dev/sdc
mdadm: Cannot remove /dev/sdc from /dev/md0, array will be failed.

管理 RAID1

创建 RAID

# 创建一个包含2个块设备的raid1设备/dev/md1
[root@centos7 ~]# mdadm --create /dev/md1 --level 1 --raid-devices 2 
/dev/sd{b,c}
mdadm: Note: this array has metadata at the start and
   may not be suitable as a boot device. If you plan to
   store '/boot' on this device please ensure that
  your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

查看 RAID

[root@centos7 ~]# mdadm --detail /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Fri Aug  2 17:41:25 2024
       Raid Level : raid1
       Array Size : 20954112 (19.98 GiB 21.46 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
     Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent
       Update Time : Fri Aug  2 17:41:57 2024
             State : clean, resyncing 
   Active Devices : 2
   Working Devices : 2
   Failed Devices : 0
     Spare Devices : 0
Consistency Policy : resync
     Resync Status : 33% complete
             Name : centos7.linux.fun:1 (local to host 
centos7.linux.fun)
             UUID : f024b6e0:d2a5793c:f8bdebc6:6bcc7027
           Events : 5
   Number   Major   Minor   RaidDevice State
       0       8       16        0     active sync   /dev/sdb
       1       8       32        1     active sync   /dev/sdc

格式化和挂载

[root@centos7 ~]# mkfs.xfs /dev/md1
[root@centos7 ~]# mkdir /raid/raid1
[root@centos7 ~]# mount /dev/md1 /raid/raid1
[root@centos7 ~]# df -h /raid/raid1
Filesystem     Size Used Avail Use% Mounted on
/dev/md1         20G 175M   20G   1% /raid/raid1
# 创建数据
[root@centos7 ~]# cp /etc/ho* /raid/raid1
[root@centos7 ~]# ls /raid/raid1/
host.conf hostname hosts

增加热备盘

[root@centos7 ~]# mdadm --add /dev/md1 /dev/sdd
mdadm: added /dev/sdd
[root@centos7 ~]# mdadm --detail /dev/md1 |tail -5
   Number   Major   Minor   RaidDevice State
       0       8       16        0     active sync   /dev/sdb
       1       8       32        1     active sync   /dev/sdc
       2       8       48        -     spare   /dev/sdd
# /dev/sdd的状态为spare(备用)

模拟故障

# 强制成员盘故障
[root@centos7 ~]# mdadm --fail /dev/md1 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md1
# 查看成员状态
[root@centos7 ~]# mdadm --detail /dev/md1 |tail -5
   Number   Major   Minor   RaidDevice State
       0       8       16        0     active sync   /dev/sdb
 2       8       48        1     spare rebuilding   /dev/sdd
       1       8       32        -     faulty   /dev/sdc
# /dev/sdd立刻顶替故障磁盘,并进行同步
# 数据依然正常访问
[root@centos7 ~]# ls /raid/raid1/
host.conf hostname hosts
[root@centos7 ~]# cat /raid/raid1/hostname 
centos7.linux.fun

删除故障磁盘

[root@centos7 ~]# mdadm --remove /dev/md1 /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md1
[root@centos7 ~]# mdadm --detail /dev/md1 |tail -5
           Events : 43
   Number   Major   Minor   RaidDevice State
       0       8       16        0     active sync   /dev/sdb
       2       8       48        1     active sync   /dev/sdd

删除 RAID

# 卸载
[root@centos7 ~]# umount /dev/md1
# stop RAID 阵列,将删除阵列
[root@centos7 ~]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
# 清除原先设备上的 md superblock
[root@centos7 ~]# mdadm --zero-superblock /dev/sd{b..d}

管理 RAID5

创建 RAID

# 创建一个包含4个块设备的raid5设备/dev/md2
[root@centos7 ~]# mdadm --create /dev/md5 --level 5 --raid-devices 4 
/dev/sd{b..e}
mdadm: Defaulting to version 1.2 metadata

查看 RAID

[root@centos7 ~]# mdadm --detail /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Sat Aug  3 17:16:10 2024
       Raid Level : raid5
       Array Size : 62862336 (59.95 GiB 64.37 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
     Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent
       Update Time : Sat Aug  3 17:16:24 2024
             State : clean, degraded, recovering 
   Active Devices : 3
   Working Devices : 4
   Failed Devices : 0
     Spare Devices : 1
           Layout : left-symmetric
       Chunk Size : 512K
Consistency Policy : resync
   Rebuild Status : 17% complete
             Name : centos7.linux.fun:5 (local to host 
centos7.linux.fun)
             UUID : b1661262:66062c09:76e887ce:fecb1340
           Events : 3
   Number   Major   Minor   RaidDevice State
       0       8       16        0     active sync   /dev/sdb
       1       8       32        1     active sync   /dev/sdc
       2       8       48        2     active sync   /dev/sdd
       4       8       64        3     spare rebuilding   /dev/sde

格式化和挂载

[root@centos7 ~]# mkfs.xfs /dev/md5
[root@centos7 ~]# mkdir /raid/raid5
[root@centos7 ~]# mount /dev/md5 /raid/raid5
[root@centos7 ~]# df -h /raid/raid5/
Filesystem     Size Used Avail Use% Mounted on
/dev/md5         60G 461M   60G   1% /raid/raid5
# 创建数据
[root@centos7 ~]# cp /etc/ho* /raid/raid5
[root@centos7 ~]# ls /raid/raid5/
host.conf hostname hosts

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐