Raid磁盘冗余阵列

为什么学RAID

一、为什么要学习磁盘阵列

  1. 数据安全方面
    • 在企业和数据中心环境中,数据是至关重要的资产。磁盘阵列通过冗余技术,如RAID 1(镜像)、RAID 5和RAID 6等,可以防止因单块磁盘故障而导致的数据丢失。例如,在一个使用RAID 1的系统中,数据同时被写入两块磁盘。如果其中一块磁盘损坏,另一块磁盘仍然保存着完整的数据副本,从而保障了数据的安全性。
    • 对于存储关键业务数据的服务器,如银行的交易记录存储服务器、医院的患者病历存储服务器等,磁盘阵列提供的冗余功能可以避免因磁盘故障造成业务中断和数据灾难。
  2. 性能提升方面
    • 磁盘阵列可以通过多种方式提升存储系统的性能。例如,RAID 0(条带化)将数据分散存储在多个磁盘上,通过并行读写操作来提高读写速度。在需要处理大量数据的应用场景中,如视频编辑工作站,RAID 0可以显著缩短数据读取和写入的时间,提高工作效率。
    • 一些高级的磁盘阵列技术还支持缓存功能,通过在内存或高速存储介质中缓存经常访问的数据,进一步加快数据访问速度。
  3. 存储容量管理方面

    • 磁盘阵列允许用户根据需求灵活地扩展存储容量。通过添加新的磁盘到阵列中,可以增加存储容量而无需更换整个存储系统。这对于数据量不断增长的企业和组织来说是非常重要的,例如互联网公司的数据存储需求随着用户数量和业务规模的扩大而持续增加,磁盘阵列的可扩展性可以很好地满足这种需求。
  4. 成本效益方面

    • 相较于使用高端、大容量的单个磁盘,磁盘阵列可以通过组合多个相对低成本的磁盘来实现高容量和高性能的存储解决方案。而且,通过合理配置磁盘阵列的冗余级别,可以在保证数据安全的前提下,优化存储成本。例如,RAID 5在提供一定程度的数据冗余的同时,比RAID 1更有效地利用磁盘空间,从而在成本和数据安全之间取得较好的平衡。

二、磁盘阵列是什么

  1. 定义
    • 磁盘阵列(Redundant Array of Independent Disks,RAID)是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。它还可以通过数据冗余技术来提供数据保护,防止数据因磁盘故障而丢失。
  2. 工作原理
    • 条带化(RAID 0):将数据分成多个块(block),并按照一定的顺序将这些数据块分别存储在多个磁盘上。例如,将一个文件分成4个数据块,分别存储在4个磁盘的相同位置区间。在读取数据时,多个磁盘可以同时工作,每个磁盘读取一个数据块,从而提高了读取速度。但是,RAID 0没有数据冗余,如果其中一个磁盘损坏,整个文件都可能无法恢复。
    • 镜像(RAID 1):数据同时被写入到两个或多个磁盘中。例如,当有新的数据写入时,它会同时被复制到两块磁盘上。这样,在读取数据时,可以从任意一块磁盘读取。如果其中一块磁盘出现故障,另一块磁盘上的数据仍然完整,可以继续提供数据服务。不过,RAID 1的磁盘利用率相对较低,只有50%(两块磁盘时),因为一半的磁盘空间用于存储数据副本。
    • 奇偶校验(RAID 5):它是一种分布式奇偶校验的独立磁盘结构。数据和相对应的奇偶校验信息存储于不同的磁盘上。例如,对于一个由5个磁盘组成的RAID 5阵列,数据块被分别存储在4个磁盘上,而奇偶校验信息存储在剩下的1个磁盘上。当其中一个磁盘出现故障时,可以通过其他磁盘上的数据和奇偶校验信息来恢复丢失的数据。RAID 5的磁盘利用率相对较高,通常为(n - 1)/n(n为磁盘数量)。
    • 双重奇偶校验(RAID 6):与RAID 5类似,但它使用了两个独立的奇偶校验算法,能够在两块磁盘同时出现故障的情况下,仍然可以恢复数据。这使得RAID 6在数据安全性方面更具优势,但会占用更多的磁盘空间用于存储奇偶校验信息。

三、如何学习RAID(磁盘阵列的主要技术)

  1. 理论学习
    • 阅读专业书籍:可以选择如《存储技术原理分析:RAID与磁盘阵列》等书籍,系统地学习RAID的基本概念、不同RAID级别(如RAID 0 - RAID 6)的工作原理、性能特点和应用场景。通过阅读书籍,可以深入理解RAID技术背后的数学原理和数据存储方式。
    • 在线课程学习:许多在线学习平台,如Coursera、edX等,提供关于存储系统和RAID技术的课程。这些课程通常由专业的讲师讲解,结合动画、实例等多种方式帮助学员理解RAID的复杂概念。例如,在课程中可能会通过模拟磁盘故障和数据恢复的过程,让学员更直观地感受RAID的工作机制。
    • 研究技术文档:各大磁盘阵列设备制造商,如戴尔、惠普、华为等,都提供了详细的产品技术文档。这些文档详细说明了他们的磁盘阵列产品所支持的RAID级别、配置方法、性能参数等。通过研究这些文档,可以了解到不同品牌设备在RAID实现上的差异和特点。
  2. 实践操作
    • 使用软件模拟器:有一些磁盘阵列模拟器软件,如StarWind RAID模拟器。通过这些软件,可以在计算机上模拟创建不同RAID级别的磁盘阵列,进行数据读写测试,观察不同RAID级别在性能和数据保护方面的表现。例如,在模拟器中创建一个RAID 0阵列,然后向其中写入大量文件,通过软件提供的性能监测工具,记录读写速度,再与RAID 1阵列的读写速度进行对比。
    • 搭建实验环境:如果条件允许,可以购买几块闲置的磁盘和一个磁盘阵列控制器,搭建一个简单的磁盘阵列实验环境。在这个环境中,可以实际配置不同RAID级别,进行真实的数据存储和读取操作,还可以模拟磁盘故障,观察数据恢复的过程。不过,在搭建实验环境时,需要注意正确的操作方法,避免因操作不当导致磁盘损坏或数据丢失。
  3. 案例分析
    • 企业存储案例:研究企业存储系统的实际案例,了解不同行业的企业是如何根据自身需求选择和配置磁盘阵列的。例如,一家大型电商企业可能会采用RAID 5或RAID 6来存储用户订单信息和商品库存信息,以确保数据安全和高效的读写性能。通过分析这些案例,可以学习到如何根据数据重要性、读写频率、存储容量需求等因素来选择合适的RAID级别。
    • 数据中心案例:数据中心通常需要处理海量的数据存储和高速的数据访问。分析数据中心的磁盘阵列应用案例,可以了解到在大规模存储环境下,如何通过磁盘阵列技术实现高可用性、高性能和高可扩展性。例如,一些云数据中心会采用分层存储的方式,将热数据存储在高性能的RAID 0阵列中,将冷数据存储在具有高容量和一定数据冗余的RAID 5或RAID 6阵列中。

磁盘阵列raid

RAID,全称为Redundant Arrays of Independent Drives,即磁盘冗余阵列。

这是由多块独立磁盘(多为硬盘)组合的一个超大容量磁盘组。

计算机一直是在飞速的发展,更新,整体计算机硬件也得到极大的提升,由于磁盘的特性,需要持续、频繁、大量的读写操作,相比较于其他硬件设备,很容易损坏,导致数据丢失。

大白话的解释
磁盘冗余阵列,就是将很多块硬盘组合成一个整体,不同的RAID级别,可以实现不同的功能
如加速数据读写、如实现数据备份。

商业存储服务器


存储服务器也就是比普通服务器支持更多的硬盘扩展,支持的容量存储更多。
也被称作NAS (network attached storage ,网络连接存储)
现在也有很多服务器,支持足够大的存储容量,当做存储服务器来用了。
如https://item.jd.com/10040339075681.html
dell 740xd

Raid历史

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列 )技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。

RAID就是一种由 多块廉价磁盘构成 的冗余阵列,在操作系统下是作为一个独立的 大型存储设备 出现。

RAID可以充分发挥出多块硬盘的优势,可以 提升硬盘速度 , 增大容量 ,提供 容错功能 ,能够 确保数据安全性 , 易于管理 的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

Raid特性

Raid磁盘阵列组能够提升数据冗余性,当然也增加了硬盘的价格成本(需要更多的硬盘),只不过数据本身的价值是超过硬盘购买的价格的,Raid除了能够保障数据丢失造成的严重损失,还能提升硬盘读写效率,被应用在广泛的企业中。

  1. 性能特性
    • 高读写速度(RAID 0)
      • RAID 0通过条带化技术将数据分散存储在多个磁盘上。例如,当读取一个大型文件时,若该文件被分成多个数据块分别存储在3个磁盘上,系统可以同时从这3个磁盘读取数据块,而不是像单个磁盘那样顺序读取。这种并行读取的方式大大提高了读取速度。在写入数据时也类似,多个磁盘可以同时接收和存储数据块,从而提升写入速度。
      • 对于需要处理大量连续数据的应用场景,如视频编辑、大型数据库的批量数据插入操作等,RAID 0的高读写速度优势尤为明显。比如在视频编辑过程中,频繁地读取和写入高分辨率视频素材,RAID 0能够有效减少等待时间,提高工作效率。
    • 负载均衡
      • 在一些高级的磁盘阵列系统中,尤其是包含多个磁盘的复杂RAID配置(如RAID 10、RAID 50等),负载均衡是一个重要的特性。这些系统能够动态地分配数据读写请求到各个磁盘,避免某些磁盘过度使用,而其他磁盘闲置的情况。
      • 例如,在一个由8个磁盘组成的RAID 10阵列中,当有多个用户同时访问存储在阵列中的数据时,磁盘阵列控制器会根据各个磁盘的当前负载情况,将读写请求合理地分配到不同的磁盘镜像组中,确保每个磁盘的工作量相对均衡,从而延长磁盘的使用寿命,并维持整个系统的高性能。
  2. 数据保护特性
    • 镜像(RAID 1)
      • RAID 1采用数据镜像技术,将所有数据同时写入两个或多个磁盘。例如,在一个双磁盘的RAID 1配置中,当向阵列写入数据时,数据会被复制并同时写入两块磁盘。这样,在任何一块磁盘出现故障时,另一块磁盘上的数据仍然完整可用。
      • 对于存储重要数据,如企业的财务数据、医疗系统中的患者病历等,RAID 1提供了很高的数据冗余性,确保数据的安全性和可用性。即使一块磁盘损坏,系统可以无缝切换到另一块磁盘继续提供数据服务,数据不会丢失,业务也不会中断。
    • 奇偶校验(RAID 5和RAID 6)
      • RAID 5在存储数据的同时,还会计算并存储奇偶校验信息。这些奇偶校验信息分布在阵列中的各个磁盘上。例如,在一个由5个磁盘组成的RAID 5阵列中,4个磁盘用于存储数据块,1个磁盘用于存储奇偶校验块。当其中一个磁盘发生故障时,可以通过其他磁盘上的数据块和奇偶校验块来恢复丢失的数据。
      • RAID 6在RAID 5的基础上,采用了双重奇偶校验机制。这使得RAID 6能够在两块磁盘同时出现故障的情况下,依然可以恢复数据。这种更高的数据保护级别适用于对数据安全要求极高的环境,如金融机构的数据存储中心、科研机构的重要实验数据存储等。
  3. 容量特性
    • 有效利用磁盘空间(RAID 5和RAID 6)
      • RAID 5通过巧妙地利用奇偶校验信息,在保证数据冗余的前提下,有效地利用了磁盘空间。其磁盘空间利用率为(n - 1)/n(n为磁盘数量)。例如,在一个由4个磁盘组成的RAID 5阵列中,可用磁盘空间为3/4,相比RAID 1的50%磁盘空间利用率(双磁盘情况),RAID 5能够存储更多的数据。
      • RAID 6的磁盘空间利用率稍低于RAID 5,因为它需要存储更多的奇偶校验信息,但仍然能够在提供更高数据安全性的同时,合理利用磁盘空间。例如,在一个由6个磁盘组成的RAID 6阵列中,其磁盘空间利用率通常在(n - 2)/n左右,即4/6左右,这使得它在存储大量数据的同时,能够承受两块磁盘故障的风险。
    • 可扩展性
      • 许多磁盘阵列系统支持通过添加磁盘来扩展存储容量。例如,一些企业级磁盘阵列产品允许在不停机的情况下,将新的磁盘添加到现有RAID阵列中。对于RAID 5或RAID 6阵列,添加磁盘后,系统可以自动重新分配数据和奇偶校验信息,实现存储容量的无缝扩展。
      • 这种可扩展性对于数据量不断增长的企业和组织非常重要。比如互联网公司随着用户数量的增加和业务数据的积累,需要不断扩大存储容量,磁盘阵列的可扩展性能够满足这种长期的存储需求。

图解Raid

  • 单机
  • 热交换
  • 集群

image-20191205092557188

于超老师先不谈磁盘,饮水机各位应该都了解

  • standalone

独立模式,最常见的模式,一台饮水机,一桶水

(一块磁盘读写数据)

  • Hot swap

热备份模式,一桶水可能会喝完,水桶可能会坏,旁边放一个预备水桶,随时替代

(防止单独一块硬盘突然损坏,故障,另一块硬盘随时等待接替)

  • Cluster

集群模式,一堆饮水机一起提供服务,提高用户接水效率

(一堆硬盘共同提供工作,提高读写效率)

不同的Raid级别

由于技术角度因素、成本控制因素等,不同的企业在数据的可靠性以及性能上做了权衡,制定出不同的Raid方案。

  1. RAID 0(条带化)
    • 原理:将数据分成大小相同的块(block),并按照一定的顺序将这些数据块分别存储在多个磁盘上。例如,假设有一个文件大小为12MB,使用3个磁盘组成的RAID 0阵列,每个磁盘存储容量足够,那么这个文件可能会被平均分成3个4MB的数据块,分别存储在这3个磁盘上。数据读写时是并行操作的,多个磁盘同时工作,极大地提高了读写速度。
    • 性能:读写速度快,是所有RAID级别中读写性能最高的。因为数据是分散存储并且同时读写,所以在理想情况下,读写速度与磁盘数量成正比。例如,使用4个磁盘的RAID 0阵列的读写速度可能是单个磁盘的4倍。
    • 数据安全性:没有数据冗余,如果阵列中的任何一块磁盘损坏,存储在该磁盘上的数据块将丢失,而且由于没有冗余信息,无法恢复丢失的数据,导致整个文件或数据集合可能无法正常使用。
    • 应用场景:适用于对读写速度要求极高,而对数据丢失不太敏感的场景。例如,视频编辑的临时素材存储,因为这些素材在编辑过程中需要频繁快速读写,并且如果素材丢失可以重新获取原始素材进行编辑。
  2. RAID 1(镜像)
    • 原理:数据同时被写入到两个或多个磁盘中。例如,在一个双磁盘的RAID 1阵列中,当有新的数据写入时,数据会被复制并同时写入两块磁盘。读取数据时,可以从任意一块磁盘读取。
    • 性能:读取性能可以得到提升,因为数据可以从两块磁盘中的任意一块读取,相当于有了两个读取通道。但写入性能与单个磁盘类似,因为数据需要同时写入两块磁盘。例如,在读取数据时,系统可以选择负载较轻的磁盘进行读取,提高读取效率;而在写入时,由于要同时写入两块磁盘,所以写入速度不会因磁盘数量增加而变快。
    • 数据安全性:数据冗余性高,提供了很好的数据保护。如果其中一块磁盘出现故障,另一块磁盘上的数据仍然完整,可以继续提供数据服务,确保数据不会丢失。
    • 应用场景:适用于存储重要数据,如企业的财务系统数据、数据库的关键表等,这些数据一旦丢失会造成严重后果,所以需要高可靠性的存储方式。
  3. RAID 2
    • 原理:采用汉明码纠错技术,将数据按位分散存储在多个磁盘上,同时还会有专门的磁盘用于存储纠错码。这种方式在理论上可以纠正多位错误,但在实际应用中很少使用。
    • 性能:读写操作较为复杂,因为涉及到纠错码的计算和处理,所以读写速度相对较慢。
    • 数据安全性:通过纠错码能够在一定程度上纠正数据错误,但由于其复杂性和对硬件要求较高,实际数据安全性优势在一般场景下不太明显。
    • 应用场景:由于其复杂的实现方式和较低的性价比,在现代存储系统中应用极少,一般只在一些对数据准确性要求极高、并且有特殊需求的专业领域(如科学研究中的高精度数据存储)可能会考虑。
  4. RAID 3
    • 原理:将数据以字节或位为单位进行条带化存储在多个磁盘上,同时使用一个单独的磁盘来存储奇偶校验信息。与RAID 2不同的是,RAID 3的校验方式更简单。
    • 性能:连续读取性能较好,因为数据是按顺序分布在多个磁盘上,适合读取大型连续数据。但写入性能会受到奇偶校验盘的限制,因为每次写入数据都需要更新奇偶校验信息。
    • 数据安全性:有一定的数据保护能力,通过奇偶校验盘可以在单个磁盘故障时恢复数据。
    • 应用场景:适用于对连续数据读取要求较高的场景,如大型数据库的顺序数据读取,或者对数据安全性有一定要求的视频存储等。
  5. RAID 4
    • 原理:与RAID 3类似,也是将数据进行条带化存储,不同的是RAID 4是以数据块为单位进行条带化,并且奇偶校验信息是存储在一个单独的磁盘上。
    • 性能:读取性能较好,尤其是在读取多个数据块时,因为可以从多个磁盘同时读取。但写入性能会因为奇偶校验盘成为瓶颈,每次写入数据都需要更新奇偶校验盘上的信息。
    • 数据安全性:能够在单个磁盘故障时通过奇偶校验信息恢复数据。
    • 应用场景:在一些需要频繁读取数据块的应用场景中可能会用到,如文件服务器,它需要经常读取不同文件的数据块,但由于写入性能的限制,应用范围相对较窄。
  6. RAID 5(分布式奇偶校验)
    • 原理:数据和相对应的奇偶校验信息存储于不同的磁盘上。例如,对于一个由5个磁盘组成的RAID 5阵列,数据块被分别存储在4个磁盘上,而奇偶校验信息存储在剩下的1个磁盘上。当其中一个磁盘出现故障时,可以通过其他磁盘上的数据和奇偶校验信息来恢复丢失的数据。
    • 性能:读写性能较好,读取时多个磁盘可以同时工作,写入时虽然需要计算奇偶校验信息,但由于是分布式存储,不会像RAID 3和RAID 4那样出现奇偶校验盘的瓶颈。
    • 数据安全性:有数据冗余能力,能在单个磁盘故障时恢复数据,提供了较好的数据保护。
    • 应用场景:应用广泛,适用于一般企业的数据存储,如文件服务器、邮件服务器等,在性能和数据安全之间取得了较好的平衡。
  7. RAID 6(双重奇偶校验)
    • 原理:在RAID 5的基础上,采用了双重奇偶校验算法,能够在两块磁盘同时出现故障的情况下,仍然可以恢复数据。
    • 性能:读写性能与RAID 5类似,但由于需要计算和存储更多的奇偶校验信息,读写速度可能会稍慢一些。
    • 数据安全性:数据安全性更高,能够承受两块磁盘同时出现故障的情况,适合对数据安全要求极高的环境。
    • 应用场景:适用于对数据安全要求极高的场景,如金融机构的数据存储中心、科研机构的重要实验数据存储等。
  8. RAID 10(RAID 1 + RAID 0)
    • 原理:先进行镜像(RAID 1),然后对镜像后的磁盘组进行条带化(RAID 0)。例如,先将4个磁盘两两组成镜像对,然后将这两对镜像磁盘进行条带化操作。
    • 性能:读写性能都很好,读取时可以利用条带化的优势进行并行读取,写入时因为有镜像的存在,数据安全性也有保障,写入速度也不会太慢。
    • 数据安全性:具有较高的数据安全性,因为它结合了RAID 1的镜像和RAID 0的高性能。即使一对镜像磁盘中的一个磁盘损坏,另一块磁盘仍然可以提供完整的数据,并且由于条带化,其他磁盘组也不受影响。
    • 应用场景:适用于对读写性能和数据安全都有很高要求的场景,如企业的核心数据库服务器、高性能计算中心等。

Raid 0

RAID0磁盘总容量

两个或两个以上相同型号容量的硬盘组合,磁盘阵列的总容量便是多个硬盘的总和。

RAID0特点

  • 至少需要两块磁盘
  • 数据 条带化 分布到磁盘, 高的读写性能 ,100% 高存储空间利用率
  • 数据 没有冗余策略 ,一块磁盘故障,数据将无法恢复
  • 应用场景:
    • 对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储。
备注
条带化技术就是一种自动的将 I/O 的负载均衡到多个物理磁盘上的技术

磁盘条带化是指利用条带化技术就是将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上去。

img

数据依次写入物理硬盘,理想状态下,硬盘读写性能会翻倍,性能大于单个硬盘。

但是raid 0 任意一块硬盘故障都会导致整个系统数据被破坏,数据分别写入两个硬盘设备,没有数据备份的功能。

raid0场景

Raid 0 适用于对于数据安全性不太关注,追求性能的场景。

好比你有一些小秘密,不想放云盘,数据量又比较大,可以快速写入raid 0。

  • 本来读写都是一块硬盘,数据都得排队,效率肯定低

  • raid 0 把数据打散,好比多了条队同时排,效率一下子就提升了,因此raid 0 可以大幅度的提升,硬盘的读写能力。

image-20220302184307065

raid 1

由于raid 0的特性,数据依次写入到各个物理硬盘中,数据是分开放的,因此损坏任意一个硬盘,都会对完整的数据破坏,对于企业数据来说,肯定是不允许。

Raid 1技术,是将两块以上硬盘绑定,数据写入时,同时写入多个硬盘,因此即使有硬盘故障,也有数据备份。

img

但是这种方式,无疑极大降低磁盘利用率,假设两块硬盘一共4T,真实数据只有2TB,利用率50%,如果是三块硬盘组成raid 1,利用率只有33%,也是不可取的。

image-20220302184419944

RAID1特点

  • 至少需要2块磁盘
  • 数据 镜像备份 写到磁盘上(工作盘和镜像盘), 可靠性高 ,磁盘利用率为50%
  • 读性能可以,但写性能不佳,写入数据要同步,因此速度很慢。
  • 一块磁盘故障,不会影响数据的读写,因为是镜像盘,冗余性好,只要有一块是好的,数据还是玩转的。
  • RAID 1应用场景:
    • 对数据安全可靠要求较高的场景,比如邮件系统、交易系统等。

那有没有一种方案,能够控制成本、保证数据安全性、以及读写速度呢?

raid 5

img

RAID5特点:

  • 至少需要3块磁盘
  • 数据 条带化 存储在磁盘, 读写性能好 ,磁盘利用率为(n-1)/n
  • 一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
    • 校验算法是计算机二进制的的异或运算(了解即可)
    • 只能允许坏掉一块盘。
  • 是目前综合 性能最佳 的 数据保护 解决方案
  • 兼顾了存储性能、数据安全和存储成本等各方面因素( 性价比高 )
  • 适用于大部分的应用场景
  • 可以看到raid 5 是两两数据就会计算出一个校验值,存储在一个硬盘上
    • 如果遇见磁盘损坏,且只能挂掉一块,还是可以用其他磁盘恢复数据的。

img

raid 6

比起raid5提供的数据校验,又多了一层校验,双层校验。

image-20220302192707102

RAID6特点:

  • 至少需要4块磁盘
  • 数据 条带化 存储在磁盘,读取性能好,容错能力强
  • 采用 双重校验 方式保证数据的安全性
  • 如果 2块磁盘同时故障 ,可以通过两个校验数据来重建两个磁盘的数据
  • 成本要比其他等级高,并且更复杂
  • 一般用于对数据安全性要求 非常高 的场合

Raid 10

对于企业来说,最核心的就是数据,成本不是问题。

img

RAID10特点:

  • RAID10是raid1+raid0的组合
  • 至少需要4块磁盘
  • 两块硬盘为一组先做raid1,再将做好raid1的两组做raid0
  • 兼顾 数据的冗余 (raid1镜像)和 读写性能 (raid0数据条带化)
  • 磁盘利用率为50%,成本较高

  • 只要坏的不是同一个组中,所有的硬盘,就算坏掉一半硬盘都不会丢数据。

  • 因此raid10是最实用的方案。

总结raid级别

类型 读写性能 可靠性 磁盘利用率 成本
RAID0 最好 最低 100% 较低
RAID1 读正常;写两份数据 50%
RAID5 读:近似RAID0 写:多了校验 RAID0<RAID5<RAID1 (n-1)/n RAID0<RAID5<RAID1
RAID6 读:近似RAID0 写:多了双重校验 RAID6>RAID5 RAID6<RAID5 RAID6>RAID1
RAID10 读:RAID10=RAID0 写:RAID10=RAID1 50% 最高

生产环境下的RAID选择

  1. 数据读写性能主导的场景
    • 应用特点
      • 对于一些对读写速度要求极高的应用,如大型视频编辑工作室、3D渲染农场等,数据的快速读写是保证工作效率的关键。这些应用通常需要频繁地读取和写入大量的连续数据,例如高分辨率视频素材、复杂的3D模型数据等。
    • RAID级别选择
      • RAID 0:是这种场景下的首选。因为RAID 0通过将数据条带化存储在多个磁盘上,实现了并行读写,能够极大地提高读写速度。例如,在一个由4块高速磁盘组成的RAID 0阵列中,读写速度理论上可以达到单块磁盘的4倍。但需要注意的是,RAID 0没有数据冗余,任何一块磁盘的故障都可能导致数据丢失。所以在使用RAID 0时,通常需要配合其他数据备份策略,如定期将数据备份到外部存储设备。
      • RAID 10:也是一个不错的选择。它结合了RAID 1的镜像和RAID 0的条带化。先通过RAID 1对磁盘进行两两镜像,保证数据的安全性,然后再通过RAID 0对镜像后的磁盘组进行条带化,提高读写性能。这样既可以获得较高的读写速度,又能在一定程度上防止数据丢失。不过,RAID 10的磁盘利用率相对较低,只有50%。
  2. 数据安全至关重要的场景
    • 应用特点
      • 在金融机构的数据存储、医院的患者病历存储、企业的核心业务数据存储等场景中,数据的安全性和完整性是首要考虑的因素。这些数据一旦丢失或损坏,可能会导致严重的后果,如金融交易记录丢失、患者医疗信息泄露等。
    • RAID级别选择
      • RAID 1:对于存储极为重要的数据且对读写性能要求不是特别高的场景,RAID 1是一个很好的选择。它通过将数据同时写入两块或多块磁盘,实现数据的镜像备份。例如,在银行的关键交易数据存储系统中,采用RAID 1可以确保在一块磁盘出现故障时,另一块磁盘上的数据仍然完整可用,从而保证金融交易的连续性。不过,RAID 1的磁盘利用率较低,一般只有50%。
      • RAID 6:在需要更高的数据冗余度,并且能够承受两块磁盘同时故障的场景下,RAID 6是比较合适的。它采用双重奇偶校验机制,将数据和两个独立的奇偶校验信息分布存储在多个磁盘上。这样,即使两块磁盘出现故障,也能够通过奇偶校验信息恢复数据。例如,在一些对数据安全要求极高的科研机构的数据存储系统中,RAID 6可以为实验数据提供可靠的保护。
  3. 性能与安全平衡的场景
    • 应用特点
      • 大多数企业的文件服务器、邮件服务器等应用场景,既需要一定的数据读写性能,以保证员工能够高效地访问和处理文件、邮件等数据,又需要一定的数据安全保障,防止数据丢失对企业运营造成影响。
    • RAID级别选择
      • RAID 5:是这类场景中最常用的RAID级别。它将数据和奇偶校验信息分布存储在多个磁盘上,通过合理的算法实现数据冗余。在读写性能方面,RAID 5能够实现多磁盘的并行操作,读写速度相对较快。在数据安全方面,它可以在单个磁盘出现故障时,利用奇偶校验信息恢复数据。例如,在一个企业的文件服务器中,RAID 5可以在保证员工正常访问文件的同时,提供数据安全保障。不过,RAID 5在写入数据时需要计算奇偶校验信息,可能会对写入性能有一定的影响,并且在重建数据(当磁盘出现故障后恢复数据)过程中,性能会有所下降。
  4. 存储容量和成本考虑的场景

    • 应用特点
      • 在一些对存储容量需求较大,同时对成本比较敏感的场景中,如数据归档系统、监控存储系统等,需要在保证一定的数据存储容量的同时,尽可能地降低成本。
    • RAID级别选择
      • RAID 5或RAID 6:这两种RAID级别在磁盘空间利用率方面相对较高。RAID 5的磁盘利用率为(n - 1)/n(n为磁盘数量),RAID 6的磁盘利用率稍低,通常为(n - 2)/n左右。例如,在一个由5块磁盘组成的RAID 5阵列中,磁盘利用率为4/5 = 80%,相比RAID 1的50%利用率,可以存储更多的数据。不过,在选择RAID 5或RAID 6时,需要考虑数据重建时间和对读写性能的潜在影响。对于监控存储系统,可能会有大量的视频数据需要长期存储,RAID 5或RAID 6可以在保证一定数据安全的前提下,提供较大的存储容量。
  5. 可能用

  6. 可能不用
物理服务器、使用物理raid卡来实现

云服务器、完全不用关心raid搭建,云厂商会给你提供靠谱的高性能、高安全性的磁盘底层技术。
于超老师问过阿里云的技术客服,他们已经不用raid了,而是用2种方式

1.本地高性能硬盘,nvme技术
如https://search.jd.com/Search?keyword=nvme&enc=utf-8

2.分布式存储技术,具体看阿里云文档
https://help.aliyun.com/document_detail/25383.html?source=5176.11533457&userCode=r3yteowb&type=copy

硬raid、软raid

  1. 硬RAID(硬件RAID)
    • 定义与实现方式
      • 硬RAID是通过专门的硬件控制器来实现RAID功能。这些硬件控制器通常是独立的扩展卡,插在计算机的主板插槽上,或者集成在服务器的主板中。它有自己独立的处理器、缓存和ROM(只读存储器),用于管理和传输磁盘阵列中的数据。例如,在企业级服务器中,像戴尔PowerEdge系列服务器配备的PERC(PowerEdge RAID Controller)系列硬件RAID控制器,这些控制器能够独立于服务器的CPU处理磁盘阵列的读写请求。
    • 性能优势
      • 高效的处理能力:由于有自己独立的处理器,硬RAID可以在不占用主机CPU资源的情况下,快速处理大量的RAID运算。例如,在处理复杂的奇偶校验计算(如RAID 5和RAID 6)时,硬件RAID控制器能够迅速完成计算,而不会使主机CPU的使用率大幅上升,从而保证了系统的整体性能。
      • 高速缓存支持:许多硬RAID控制器配备了高速缓存(Cache),缓存可以存储经常访问的数据,加快数据的读写速度。例如,对于频繁读取的文件,缓存可以直接提供数据,减少了磁盘的读取次数,大大提高了响应速度。并且,在写入数据时,缓存可以先暂存数据,然后在合适的时机将数据写入磁盘,优化了写入性能。
      • 更好的兼容性和稳定性:硬件RAID控制器通常经过了严格的测试和认证,与各种不同品牌和型号的磁盘有良好的兼容性。在长时间的运行过程中,硬件RAID能够提供更稳定的性能,减少数据错误和系统故障的概率。
    • 缺点和局限性
      • 成本较高:硬件RAID控制器本身价格较贵,而且如果控制器出现故障,需要购买相同型号的控制器进行更换,增加了硬件成本和维护成本。例如,一款高端的企业级硬件RAID控制器可能需要花费数千美元。
      • 配置相对复杂:与软RAID相比,硬RAID的配置过程通常需要一定的专业知识和经验。需要通过控制器的BIOS(基本输入输出系统)或者专门的管理软件进行设置,包括创建RAID阵列、设置磁盘参数、分配缓存等操作。
  2. 软RAID(软件RAID)

    • 定义与实现方式
      • 软RAID是通过操作系统或软件层来实现RAID功能。它利用计算机的CPU和内存来执行RAID算法,将磁盘连接到普通的磁盘控制器(如SATA控制器)上,通过软件来管理和组织磁盘,形成磁盘阵列。例如,在Linux操作系统中,可以使用mdadm工具来创建和管理软RAID。通过简单的命令行操作,就可以将多个磁盘组合成不同级别的RAID阵列。
    • 性能特点
      • 成本效益高:软RAID不需要额外购买昂贵的硬件RAID控制器,只需要普通的磁盘和计算机硬件即可实现RAID功能。这对于预算有限的用户或者小型企业来说是一个很大的优势。例如,在一个小型办公环境中,使用软RAID可以在不增加太多硬件成本的情况下,提升文件服务器的存储性能和数据安全性。
      • 配置灵活简单:软RAID的配置相对简单,通过操作系统提供的工具或者软件,用户可以方便地创建、修改和管理RAID阵列。例如,在Windows Server操作系统中,通过磁盘管理工具可以轻松地设置RAID 0、RAID 1等阵列。而且,软件RAID可以根据用户的需求随时调整RAID级别和磁盘分配。
    • 缺点和局限性
      • 占用系统资源:由于软RAID是通过软件来实现的,它会占用主机CPU和内存资源。在处理大量数据读写或者复杂的RAID运算(如奇偶校验计算)时,会使主机CPU的使用率大幅上升,从而影响系统的整体性能。例如,在高负载的数据读写情况下,软RAID可能会导致系统响应变慢。
      • 性能相对较低:相比硬RAID,软RAID的读写性能通常较低。因为它没有专门的硬件来加速数据处理和缓存,所以在处理高速数据读写时可能无法满足需求。而且,软件RAID的性能在很大程度上依赖于操作系统和计算机硬件的性能。
  3. 软件控制的raid磁盘冗余阵列

    • 由CPU去控制硬盘驱动器进行数据转换、计算的过程就是软件RAID
  4. 硬件控制

    • 由专门的RAID卡上的主控芯片操控,就是硬件RAID

1. 软RAID

软RAID运行于 操作系统底层 ,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。软RAID有以下特点:

  • 占用内存空间
  • 占用CPU资源
  • 如果程序或者操作系统故障就无法运行

总结:基于以上缺陷,所以现在企业很少用软raid。

2. 硬RAID

通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。

RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。

不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID4、RAID5、RAID10不等。

软件RAID和硬件RAID的差异

  • 软件RAID额外消耗CPU资源,性能弱
  • 硬件RAID更加稳定,软件RAID可能造成磁盘发热过量,造成威胁
  • 兼容性问题,软件RAID依赖于操作系统,硬件RAID胜出

  • 可见,硬件Raid、完虐软件Raid。

认识硬件raid卡

image-20220302194517381


image-20220302194538781


image-20220302194547769

ubuntu软件Raid

  1. 检查磁盘设备
    • 在部署软RAID之前,首先需要确定系统中可用的磁盘设备。在Ubuntu系统中,可以使用lsblk命令来查看磁盘设备的信息。这个命令会列出所有块设备,包括硬盘、分区、虚拟设备等的详细信息,如设备名称、大小、挂载点等。例如,运行lsblk后可能会看到类似/dev/sda/dev/sdb等磁盘设备的名称,这些就是可以用于创建RAID阵列的基础设备。
    • 还可以使用fdisk -l命令来获取更详细的磁盘分区信息。它会显示每个磁盘的分区表,包括分区类型、起始和结束扇区等内容,帮助你确定磁盘是否已经有分区,以及分区的具体情况。
  2. 安装mdadm工具
    • mdadm是在Ubuntu中用于管理软件RAID的工具。如果系统中没有安装,可以通过apt包管理器进行安装。在终端中运行sudo apt-get update来更新软件包列表,然后运行sudo apt - get install mdadm来安装mdadm工具。
    • 安装完成后,可以使用mdadm --version来检查安装的版本信息,确保工具安装成功并且是较新的版本,以获得更好的功能和兼容性。
  3. 创建RAID阵列
    • 例如,要创建一个RAID 0阵列,假设使用/dev/sdb/dev/sdc两块磁盘。首先,需要对磁盘进行初始化,在终端中运行以下命令:
      • sudo mdadm --create /dev/md0 --level=0 --raid - devices=2 /dev/sdb /dev/sdc。这里/dev/md0是创建的RAID设备名称,--level=0表示创建RAID 0级别,--raid - devices=2表示使用两块磁盘来创建阵列,/dev/sdb/dev/sdc是参与创建阵列的磁盘设备。
    • 如果要创建其他级别的RAID,如RAID 1、RAID 5等,只需修改--level参数的值即可。例如,创建RAID 1可以将--level设置为1,并且在创建RAID 5时,至少需要使用3块磁盘。
  4. 格式化RAID阵列
    • 创建好RAID阵列后,需要对其进行格式化才能使用。可以使用常见的文件系统格式,如ext4。在终端中运行sudo mkfs.ext4 /dev/md0来将RAID阵列格式化为ext4文件系统。
    • 格式化过程可能需要一些时间,具体取决于RAID阵列的大小。完成格式化后,就可以在阵列上存储数据了。
  5. 挂载RAID阵列
    • 创建并格式化好RAID阵列后,需要将其挂载到文件系统中才能访问。首先,创建一个用于挂载RAID阵列的目录,例如/mnt/raid,可以通过sudo mkdir /mnt/raid来创建。
    • 然后,将RAID阵列挂载到这个目录下,运行sudo mount /dev/md0 /mnt/raid。现在,就可以像访问普通磁盘分区一样访问RAID阵列中的数据了。可以通过文件管理器或者命令行工具来在/mnt/raid目录下进行文件的读写操作。
  6. 配置自动挂载
    • 为了在系统重启后RAID阵列能够自动挂载,需要修改/etc/fstab文件。使用文本编辑器(如sudo nano /etc/fstab)打开/etc/fstab文件,在文件末尾添加一行/dev/md0 /mnt/raid ext4 defaults 0 0。这行内容表示在系统启动时,将/dev/md0设备(即创建的RAID阵列)挂载到/mnt/raid目录下,文件系统类型为ext4,并且使用默认的挂载选项。
    • 添加完成后,保存文件并退出。这样,在系统重启后,RAID阵列就会自动挂载,方便用户使用。
  7. 监控和管理RAID阵列
    • 可以使用mdadm工具来监控RAID阵列的状态。例如,运行sudo mdadm --detail /dev/md0可以查看/dev/md0这个RAID阵列的详细信息,包括阵列级别、设备状态、活动设备数量等内容。
    • 如果有磁盘出现故障,mdadm工具会发出警告。并且,可以通过mdadm来添加新的磁盘或者替换故障磁盘,以维护RAID阵列的正常运行。例如,当一块磁盘出现故障后,可以先将故障磁盘从阵列中移除(使用sudo mdadm /dev/md0 --fail /dev/sdbsudo mdadm /dev/md0 --remove /dev/sdb,这里假设/dev/sdb是故障磁盘),然后添加新的磁盘来替换故障磁盘(使用sudo mdadm /dev/md0 --add /dev/sdd,这里假设/dev/sdd是新添加的磁盘)。

软Raid 10实战

RAID 10 的硬盘数量要求:

  1. 硬盘数量
    RAID 10 至少需要 4 块硬盘
    更多硬盘可以是偶数(例如 6、8、10 块等),因为 RAID 10 需要将硬盘分为成对的镜像组。

  2. 硬盘容量要求

    • 每组镜像中的两块硬盘容量必须相同,因为 RAID 10 会完全复制数据到镜像中的另一块硬盘。
    • RAID 10 的总容量计算公式:
      [ 总容量 = (硬盘总数 ÷ 2) × 单块硬盘容量 ]
      • 例如:
        • 使用 4 块 1TB 的硬盘,容量为 ( (4 ÷ 2) × 1TB = 2TB )。
        • 使用 6 块 1TB 的硬盘,容量为 ( (6 ÷ 2) × 1TB = 3TB )。

特点:

  • RAID 10 同时具备 RAID 1(镜像)的数据冗余和 RAID 0(条带化)的性能提升。
  • 提高了读写速度,同时提供数据安全性,但硬盘利用率较低,仅为 50%。

注意事项:

  • 所有硬盘的规格和容量尽量一致,否则可能出现性能瓶颈或空间浪费。
  • RAID 10 容错能力:至少可以容忍每组镜像中一块硬盘的损坏,但损坏硬盘过多会导致数据丢失。

添加4块硬盘,搭建raid 10磁盘冗余阵列。

[root@lamp-241 ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 Mar  3 04:06 /dev/sda
brw-rw---- 1 root disk 8,  1 Mar  3 04:06 /dev/sda1
brw-rw---- 1 root disk 8,  2 Mar  3 04:06 /dev/sda2
brw-rw---- 1 root disk 8, 16 Mar  3 04:06 /dev/sdb
brw-rw---- 1 root disk 8, 32 Mar  3 04:06 /dev/sdc
brw-rw---- 1 root disk 8, 48 Mar  3 04:06 /dev/sdd
brw-rw---- 1 root disk 8, 64 Mar  3 04:06 /dev/sde

安装mdadm命令

mdadm 用于建设,管理和监控软件RAID阵列
可能需要单独安装

[root@lamp-241 ~]# yum install mdadm -y

参数

参数 解释
-C 用未使用的设备,创建raid
-a yes or no,自动创建阵列设备
-A 激活磁盘阵列
-n 指定设备数量
-l 指定raid级别
-v 显示过程
-S 停止RAID阵列
-D 显示阵列详细信息
-f 移除设备
-x 指定阵列中备用盘的数量
-s 扫描配置文件或/proc/mdstat,得到阵列信息

创建raid 10命令

mdadm -Cv /dev/md0  -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

-C 表示创建RAID阵列卡
-v 显示创建过程
/dev/md0 指定raid阵列的名字
-a  yes  自动创建阵列设备文件
-n 4 参数表示用4块盘部署阵列
-l 10 代表指定创建raid 10级别
最后跟着四块磁盘设备名


执行命令
[root@lamp-241 ~]# mdadm -Cv /dev/md0 -a  yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2mdadm: layout defaults to n2mdadm: chunk size defaults to 512Kmdadm: partition table exists on /dev/sdbmdadm: partition table exists on /dev/sdb but will be lost or
       meaningless after creating array
mdadm: size set to 20954112K

检查raid 10 分区

[root@lamp-241 ~]# fdisk -l |grep /dev/md
Disk /dev/md0: 42.9 GB, 42914021376 bytes, 83816448 sectors

有了分区,下一步就是创建文件系统

[root@lamp-241 ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

进行挂载分区

[root@lamp-241 ~]# mkdir /yuchao-linux
[root@lamp-241 ~]#
[root@lamp-241 ~]#
[root@lamp-241 ~]# mount /dev/md0 /yuchao-linux/
[root@lamp-241 ~]#
[root@lamp-241 ~]# mount -l|grep md0
/dev/md0 on /yuchao-linux type xfs (rw,relatime,attr2,inode64,sunit=1024,swidth=2048,noquota)

查看挂载后的磁盘使用情况

[root@lamp-241 ~]# df -hT /dev/md0
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/md0       xfs    40G   33M   40G   1% /yuchao-linux

写入数据

[root@lamp-241 ~]# ls /yuchao-linux/
[root@lamp-241 ~]#
[root@lamp-241 ~]# touch /yuchao-linux/超哥带你学linux.txt
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yuchao-linux/
超哥带你学linux.txt

查看raid 10信息

[root@lamp-241 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Mar  3 04:20:20 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Mar  3 04:25:12 2022
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : lamp-241:0  (local to host lamp-241)
              UUID : 8b05fda8:ea9f56df:d639157c:bf00d883
            Events : 21

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
[root@lamp-241 ~]#

可以看到显示是4个激活的硬盘

加入开机自动挂载

[root@lamp-241 ~]# tail -1 /etc/fstab
/dev/md0 /yuchao-linux xfs defaults 0 0

遇见磁盘故障

[root@lamp-241 ~]# fdisk -l|grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors

剔除一块硬盘

[root@lamp-241 ~]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0

检查raid 10信息

[root@lamp-241 ~]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
[root@lamp-241 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Mar  3 04:20:20 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Mar  3 04:28:33 2022
             State : clean, degraded
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : lamp-241:0  (local to host lamp-241)
              UUID : 8b05fda8:ea9f56df:d639157c:bf00d883
            Events : 23


可以看到/dev/sdd硬盘被移除了,faulty翻译是有故障的

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       -       0        0        2      removed
       3       8       64        3      active sync set-B   /dev/sde

       2       8       48        -      faulty   /dev/sdd

不影响raid 10的使用

[root@lamp-241 ~]# touch /yuchao-linux/天气确实不错.txt
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yuchao-linux/
天气确实不错.txt  超哥带你学linux.txt

重新加入/dev/sdd硬盘

RAID10磁盘阵列,挂掉一块硬盘并不影响使用,只需要购买新的设备,替换损坏的磁盘即可

1.先取消RAID10阵列的挂载,注意必须没有人在使用挂载的设备
[root@lamp-241 ~]# umount /dev/md0

2.重启机器
reboot




3.重新添加新的磁盘加入raid 10

[root@lamp-241 ~]# mdadm /dev/md0 -a /dev/sdd
mdadm: added /dev/sdd
[root@lamp-241 ~]#
[root@lamp-241 ~]#
[root@lamp-241 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Mar  3 04:20:20 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Mar  3 04:47:07 2022
             State : clean, degraded, recovering
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 6% complete  # 默认会有一个修复的过程,这里是进度条

              Name : lamp-241:0  (local to host lamp-241)
              UUID : 8b05fda8:ea9f56df:d639157c:bf00d883
            Events : 38

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       4       8       48        2      spare rebuilding   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
[root@lamp-241 ~]#

最终修复完毕

[root@lamp-241 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Mar  3 04:20:20 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Mar  3 04:48:45 2022
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : lamp-241:0  (local to host lamp-241)
              UUID : 8b05fda8:ea9f56df:d639157c:bf00d883
            Events : 54

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       4       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
[root@lamp-241 ~]#

如果重启,raid出错,解决办法

root@yc-ubuntu:~# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory

首先,尝试重新激活阵列,使用命令 mdadm --assemble --scan。这条命令会扫描系统的元数据信息,尝试重新组装所有标记为自动组装的 RAID 阵列

mdadm -D /dev/md/yc-ubuntu:0
mdadm --stop /dev/md/yc-ubuntu:0
mdadm --assemble --scan
mdadm -D /dev/md0
mdadm /dev/md0 -a /dev/sde

删除软件raid

1.卸载磁盘
[root@lamp-241 ~]# umount /dev/md0

2.停止raid服务
[root@lamp-241 ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

3.卸载raid中所有硬盘
[root@lamp-241 ~]#
[root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sdb
[root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sdc
[root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sdd
[root@lamp-241 ~]# mdadm --misc --zero-superblock /dev/sde

4.删除raid配置文件
rm -f /etc/mdadm.conf

5.删除开机自动挂载配置
修改/etc/fstab 
/dev/md0 /yuchao-linux xfs defaults 0 0  #删除

至此,就体验了一下raid 10 的创建、挂载读写、删除。

Copyright © www.yuchaoit.cn 2025 all right reserved,powered by Gitbook作者:于超 2025-01-11 21:37:06

results matching ""

    No results matching ""