# Linux RAID详解 RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种通过将多个磁盘组合在一起来提高数据存储性能和可靠性的技术。通俗的讲就是把多块硬盘组成一个独立的磁盘阵列进行管理。RAID 可以将多个磁盘组合成一个逻辑卷,从而提供更高的数据吞吐量、更好的数据保护和更高的可用性。 ## RAID等级介绍 RAID 技术有多种不同的级别,每种级别都有不同的优点和缺点。以下是常见的 RAID 级别及其特点: ### RAID 0 RAID 0 是一种将多个磁盘组合在一起来提高数据存储性能的技术。RAID 0 不提供数据冗余,因此如果其中一个磁盘故障,所有数据都将丢失。RAID 0 的主要优点是可以提供更高的数据吞吐量和更快的读写速度。 ### RAID 1 RAID 1 是一种将多个磁盘组合在一起来提高数据存储可靠性的技术。RAID 1 将数据复制到多个磁盘上,从而提供数据冗余和更高的可用性。如果其中一个磁盘故障,系统可以从其他磁盘中恢复数据。RAID 1 的主要优点是提供更高的数据可靠性和更好的数据保护。 ### RAID 5 RAID 5 是一种将多个磁盘组合在一起来提高数据存储性能和可靠性的技术。RAID 5 将数据分散存储在多个磁盘上,并使用奇偶校验码来检测和纠正数据错误。如果其中一个磁盘故障,系统可以使用奇偶校验码从其他磁盘中恢复数据。RAID 5 的主要优点是提供更高的数据可靠性和更好的数据保护。 ### RAID 6 RAID 6 是一种将多个磁盘组合在一起来提高数据存储性能和可靠性的技术。RAID 6 类似于 RAID 5,但使用两个奇偶校验码来检测和纠正数据错误。如果其中两个磁盘故障,系统可以使用奇偶校验码从其他磁盘中恢复数据。RAID 6 的主要优点是提供更高的数据可靠性和更好的数据保护。 ### RAID 10 RAID 10 是一种将多个磁盘组合在一起来提高数据存储性能和可靠性的技术。RAID 10 将多个 RAID 1 组合在一起,从而提供更高的数据吞吐量和更好的数据保护。RAID 10 的主要优点是提供更高的数据可靠性和更好的数据保护。 ### 等级总结 | | 介绍 | 所需硬盘及容量 | 性能及安全 | 应用场景 | | --- | --- | --- | --- | --- | | RAID 0 | 把连续的数据分成几份,然后分散存储到阵列中的各个硬盘上。其中任何一个磁盘故障,都会导致数据丢失 | 最少一块硬盘;容量为所有硬盘容量的和 | 读写性能高,随机写性能高,无冗余,无热备,无容错性,安全性低 | 无故障的迅速读写,要求安全性不高的使用场景 | | RAID 1 | 把相同的数据分别写入阵列中的每一块磁盘中,最大限度的保证用户数据的可用性和可修复性。缺点是存储成本高 | 2n块硬盘,容量是总容量的一半 | 读写性能低,随机写性能低,利用复制进行冗余,有热备,可容错,安全性高 | 随机数据写入,要求安全性高,如服务器、数据库存储领域 | | RAID 5 | 是一种存储性能、数据安全和存储成本兼顾的存储方案,也可理解为是RAID 0和RAID 1的折衷方案。其原理是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。相对于RAID 0,只是多了一个奇偶校验信息 | 3块或更多的硬盘,容量为(n-1)/n,n为磁盘数量 | 随机和连续写性能低,读性能高,利用奇偶校验进行冗余,可容错,安全性高 | 随机数据传输要求安全性高,如金融、数据库、存储等 | | RAID 10 | 兼顾存储性能和数据安全,提供了与RAID 1一样的数据安全保障,同时具备与RAID 0近似的存储性能。缺点是存储成本高 | 4n块硬盘,容量为总量的一半 | 读写性能适中,利用复制进行冗余,可容错,安全高 | 适于于要求存取数据量大,安全性高,如银行、金融等领域 | ## RAID区别 RAID 分为硬RAID(RAID卡)软RAID(软件实现的,没啥特殊需求就别用了,软件始终没有硬件稳定) 硬RAID就不解释了,主要在服务器等物理设备上体现,RAID卡等,本次主要介绍并实现下软RAID(没啥大病真的别用) ## 软RAID `mdadm`是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产环境下并不适用。但为了学习和了解RAID原理和管理,因此仍然进行一个详细的讲解: ### mdadm命令语法 `mdadm [mode] [options] ` 常用选项说明 ``` 模式: 创建: -C 装配:-A 监控:-F 管理:-f, -r, -a : /dev/md# :任意块设备 -C:创建模式 -n #:使用#个块设备来创建此RAID -l #:指明要创建的RAID的级别 -a {yes / no}:自动创建目标RAID设备的设备文件 -c CHUNK_SIZE:指明块大小,单位k -x #:指明空闲盘的个数 -D:显示raid的详细信息 mdadm -D / dev / md# 管理模式: -f:标记指定磁盘为损坏 -a:添加磁盘 -r:移除磁盘 观察md的状态: cat /proc/mdstat ``` ### 详细操作 #### 创建 RAID 设备 要创建一个新的 RAID 设备,可以使用以下命令: ``` mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 ``` 该命令将创建一个名为 /dev/md0 的 RAID 1 设备,使用 /dev/sda1 和 /dev/sdb1 两个磁盘作为 RAID 设备。 #### 格式化RAID设备 ``` mkfs.xfs /dev/md0 ``` #### 查看 RAID 设备信息 要查看当前系统中的 RAID 设备信息,可以使用以下命令: ``` mdadm --detail --scan ``` 该命令将显示当前系统中所有的 RAID 设备信息。 #### 添加磁盘到 RAID 设备 要将一个新的磁盘添加到一个 RAID 设备中,可以使用以下命令: ``` mdadm --add /dev/md0 /dev/sdc1 ``` 该命令将将 /dev/sdc1 磁盘添加到名为 /dev/md0 的 RAID 设备中。 #### 删除 RAID 设备中的磁盘 要从一个 RAID 设备中删除一个磁盘,可以使用以下命令: ``` mdadm --remove /dev/md0 /dev/sdc1 ``` 该命令将从名为 /dev/md0 的 RAID 设备中删除 /dev/sdc1 磁盘。 #### 替换 RAID 设备中的磁盘 要替换一个 RAID 设备中的磁盘,可以使用以下命令: ``` mdadm --replace /dev/md0 /dev/sdc1 ``` 该命令将将 /dev/sdc1 磁盘替换名为 /dev/md0 的 RAID 设备中的故障磁盘。 #### 监视 RAID 设备状态 要监视 RAID 设备的状态,可以使用以下命令: ``` mdadm --monitor --scan ``` 该命令将启动一个 mdadm 进程,用于监视系统中所有 RAID 设备的状态。 #### 停止RAID设备 ``` mdadm -S /dev/md0 ``` #### 激活RAID设备 ``` mdadm -A -s /dev/md0 ``` #### 删除raid信息 ``` mdadm --zero-superblock /dev/sdb1 ```