热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

使用c++获取服务的启动类型_服务器应该使用哪种类型的RAID阵列?

独立磁盘冗余阵列(RAID)是将多个机械硬盘(HDD)或固态硬盘(SSD)组合为一个逻辑卷的过程,从而使其阵列避免或减少硬盘故障带来的损失。RAID阵列有很多种类型&

独立磁盘冗余阵列(RAID)是将多个机械硬盘(HDD)或固态硬盘(SSD)组合为一个逻辑卷的过程,从而使其阵列避免或减少硬盘故障带来的损失。RAID阵列有很多种类型,以下将讨论企业应该选择哪一种RAID阵列。

什么是RAID阵列?

假设在一台服务器中接入两块1TB的硬盘,这样具有2TB的可用空间。但是,在服务器环境中,最好将第二块硬盘作为备份,构建成一个RAID阵列。这可以使用RAID控制器实时完成,该RAID控制器连接到硬盘并管理RAID阵列。还有软件RAID阵列,但是大多数服务器都将配备专用的RAID控制器。

如果没有RAID阵列,就不会有冗余。但是这并不是主要问题。而一个良好的备份策略永远不会真正丢失数据,但是如果硬盘出现故障,则这台服务器在还原时可能会经历严重的停机问题。这在服务器环境中是不可接受的,并且比暂时的数据丢失要严重得多。

RAID阵列可以在仍然可用的情况下重建,当一块硬盘出现故障时,不必从备份中恢复。这是RAID阵列的主要优势。服务器被设计为即使在许多意外情况下也不会停机。工作人员可以从网络服务器上拔出硬盘,尽管性能较低,但它仍会继续运转。

在许多方面,配置RAID阵列比配置一块容量更大的硬盘要好得多。一块8TB大容量硬盘的弹性不如RAID 5阵列中配置的五块2TB驱动器。而现在很难找到只安装一块硬盘的服务器。

RAID阵列采用容量和品牌相同的硬盘效果最佳。它可以与各种硬盘一起使用,但通常会受到速度最慢和容量最小的限制,使其性能欠佳。

这实际上只适用于用户自己管理服务器的情况,如家用网络附属存储(NAS)采用了许多硬盘;在这种情况下,选择的RAID阵列类型非常重要。如果是从AWS公司或者其他云计算供应商那里租用虚拟服务器,RAID阵列通常由托管服务商为用户配置,因为这个级别的控制是从企业那里抽象出来的。

在开始采用RAID阵列之前需要注意:用于指定不同RAID级别的数字实际上没有任何意义。RAID 5的性能不是RAID 1的5倍。此外还有其他几个RAID级别,例如RAID 2、3和4,但它们在实践中并未使用,因此不用解释。

JBOD

47359d8c55df1a8f72557b78e1470860.png

从技术上讲,这不是RAID阵列配置,但是在这里需要进行解释。从技术上讲,JBOD意思是“硬盘的联合批处理”,但是可以将其理解为“只是一堆硬盘”,因为基本上就是这样。JBOD只是将硬盘连接在一起成为一个大容量硬盘。这不会带来任何性能上的改进,也没有提供任何冗余,而用户并不关心其中接入了哪些硬盘。

许多RAID控制器将提供JBOD模式。除非拥有许多容量不同的硬盘并将它们连接在一起,否则不应该使用它。

RAID 0阵列

f49248550259f5f902fa4e3bba14fdb8.png

RAID 0阵列中的数据分散在多个硬盘上;例如,如果想从RAID阵列读取文件,则将并行读取多个硬盘,这使RAID 0阵列的读取速度比任何一块硬盘快得多。

但是,由于没有镜像、奇偶校验或其他冗余机制,因此,如果某块硬盘发生故障,则会丢失整个阵列上的所有数据。因此,可以在速度至关重要时使用RAID 0阵列,并且不需要冗余。

在某种程度上,RAID 0阵列与根本没有采用RAID阵列非常相似。它可以将所有硬盘放在一个大容量硬盘中,并获得更高的访问速度。但是,单块硬盘故障可能会对阵列上的数据造成灾难性的影响,因此,除非是临时数据,否则在没有备份解决方案的情况下切勿运行RAID 0阵列。

RAID 0阵列还可以最大化存储容量,因为没有用于冗余的存储空间。如果有两个1 TB硬盘,则其阵列的容量为2TB。但是,RAID 0阵列被限制为阵列中容量最小的硬盘,如果尝试将2TB硬盘与1TB硬盘一起构建成RAID 0阵列,则只有2TB的空间,而另一个1TB硬盘的空间则会完全浪费。

采用SSD硬盘的RAID 0阵列很常见,考虑到SSD硬盘的故障率较低,因此更合理。这是高端服务器系统中的常见设置,因为速度比冗余更重要。

RAID 1阵列

131134bdcba0946d68140d5b698faac3.png

RAID 1阵列是RAID阵列的另一种基本类型。与RAID 0阵列类似,它使用两块或多块硬盘,但不是将数据实现条带化,而是将数据从第一块硬盘镜像到第二块硬盘(以及阵列中的其他硬盘)。如果有两块硬盘,则其中一块硬盘将完全用作一种实时备份硬盘,从而在此过程中将总存储容量减半。如果一块硬盘发生故障,可以继续从另一块硬盘读取数据,并通过更换故障的硬盘来重建阵列。

由于可以使用两块硬盘,因此确实具有一些读取性能上的好处,但是由于它从每块硬盘中读取相同的数据,因此通常不如RAID 0阵列好。其写入性能将受限于读写速度最慢的硬盘的速度。

如果拥有两个硬盘并且无法承受硬盘故障而无法取出数据带来的损失,则RAID 1阵列则是唯一可行的选择。不过,这并不是最有效的,因为将存储容量减少了一半,因此其成本是单块硬盘的两倍。

但是,服务器设置中的冗余阵列比单块硬盘的价格要有价值得多。如果只需要基本的硬盘设置,可以使用简单的RAID 1阵列。当接入两块硬盘时,大多数RAID控制器将默认为RAI​​D 1阵列。

RAID 5阵列

c3731625412d961d86cc319cc460f54d.png

RAID 5阵列让事情开始变得有趣起来。RAID 5阵列不会像RAID 1阵列那样复制数据,而是使用奇偶校验这种效率更高的方法。

奇偶校验是错误检查的一种形式,就像哈希校验一样,但是要简单得多。通常用于确保网络流量不会混淆。基本上,假设有7位数据要发送给某人,并且想确保它完整无缺地传输。如果传输过程有些混乱,他们将无从得知。解决方案是对所有正数位进行计数。如果有偶数,则奇偶校验将为0。如果有奇数,则奇偶校验将为1。将其添加到要发送的数据中,另一端的人在收到该数据时将会自动计算奇偶校验。如果发生错误,并且发生了位翻转(甚至是奇偶校验位本身),对方也会知道并请求重新发送数据。当然,如果单次传输中有两个错误,则该系统会中断,但这并不常见。

RAID 5阵列不需要存储数据的副本(就像发送两次消息一样),而只是存储奇偶校验位。可以想象它像具有冗余功能的RAID 0阵列一样,它至少需要三块硬盘。除一块硬盘之外,所有硬盘均像常规RAID 0阵列一样使用,但最后一块硬盘用于奇偶校验。如果其中一块硬盘出现故障,则可以反向执行奇偶校验计算以恢复任何硬盘上的所有数据(尽管这是一个漫长而费力的操作)。

实际上,RAID 5阵列不使用专用硬盘进行奇偶校验,因为在所有硬盘上剥离奇偶校验位的速度更快,但是在计算RAID 5阵列将提供多少存储空间时,可以这样考虑。本质上,除了一块硬盘之外,将所有硬盘加起来,这就是将拥有的存储空间。RAID 5阵列可以通过增加硬盘来提高空间效率,采用三块硬盘的效率为66%,但是10块硬盘的效率为90%。与RAID 1阵列相比,这显著降低了成本。

但是,RAID 5阵列并非没有缺点。由于每次写入硬盘时都必须计算奇偶校验,因此会降低写入性能。考虑到以下事实,其问题就更加严重:在一块硬盘中翻转一个位需要读取所有的硬盘,以便重新计算该块的奇偶校验。实际上,如果RAID 0阵列可以扩展n块硬盘的性能,则RAID 5阵列可以为n-1块硬盘提供写入操作的性能。但是,如果阵列足够大,问题并没有那么严重。

另外,无论拥有多少块硬盘,都只能承受一块硬盘故障的损失。这似乎不是一个主要问题,因为故障很少见,而且不太可能同时遇到两个故障,但是阵列重建在硬盘上可能会非常密集,基本上是在每个故障最易受攻击的时候从每个故障中读取每一位数据。因此,如果其中一块硬盘发生故障,则另一块硬盘也很有可能也会发生故障。

如果有3块硬盘,则应该选择RAID 5阵列,因为RAID 1阵列会浪费空间。如果有4块硬盘,那么它可能仍然是最佳选择,但是此列表上的其他两个选项也可以使用。

RAID 6阵列

755e002b5fe2bf84fbcbc220b9ffbffd.png

RAID 6阵列与RAID 5阵列相似,只是对“奇偶校验磁盘”进行了镜像。这使其阵列能够避免发生两次的硬盘故障。但是,n-2块硬盘的写入性能更差,并且拥有更少的空间。

如果有大量的硬盘(6块、8块或更多),则可能要考虑RAID 6阵列的额外冗余。仅RAID 6阵列即可实现3-2-1备份策略:至少存储三个数据副本,两个备份位于不同的介质上,其中至少一个位于异地。RAID 6阵列可以承受两个硬盘故障,使其功能与具有三块磁盘的RAID 1阵列相同(减去重建时间)。

在实践中,RAID 6阵列几乎永远不会经历整个阵列故障,尤其是如果在公式中添加了更多的奇偶校验磁盘的话。结合其他数据中心中的备份和副本,这就是AWS Glacier和Backblaze等存档服务如何实现99.999999999%持久性的原因。

RAID 10(1+0)阵列

fc16040e84b20bbb023580db7a54271a.png

RAID 10阵列从技术上讲是嵌套RAID阵列的一种形式,这本身就是另一种复杂的事情。如果拥有四块硬盘,并且不想使用RAID 5阵列或RAID 6阵列,则唯一的其他选择是RAID 0阵列和RAID 1阵列,这两个都有问题。相反,如果将这些硬盘分成两部分,构成两个RAID 1阵列,然后将这些阵列用于构建一个大的RAID 0阵列。RAID 10阵列至少需要四块硬盘并且还需要偶数总数的硬盘。

这提供了RAID 1阵列和RAID 0阵列的所有优点,并且没有很多缺点,其具有快速的读取和写入速度,高冗余性和易于重建的功能,同时仍然可以使用所有硬盘总空间的一半。RAID 10阵列实际上比RAID 1阵列更具弹性。在上图中,硬盘1和硬盘3可能会发生故障,并且阵列仍可以完全重建(尽管如果硬盘0和硬盘1都发生故障,则该阵列将无法恢复)。

RAID 10阵列是服务器非常常见的RAID级别。它的速度非常快,并且可以承受一块硬盘故障。唯一真正的问题是价格,因为仍然要为保留所有数据的副本付出双倍的代价,但是对于一般的工作负载来说,RAID 10阵列在速度上超越了所有其他RAID配置,而在吞吐量方面仅输给RAID 0阵列。

RAID 50/60阵列

68389958169bcd4210db464446e7649f.png

RAID 50/60阵列基本上是RAID 0阵列中的两个RAID 5阵列或RAID 56阵列。这与RAID 10阵列一样提高了性能,最重要的是提高了写入性能,因为在计算奇偶校验时从其他硬盘读取数据更快。

它至少需要6块硬盘(在RAID 60的情况下为8块硬盘),并且由于有单独的RAID 5阵列,因此需要附加的奇偶校验硬盘,从而降低了空间效率,但弹性更大。总体而言,RAID 50阵列本质上是RAID 5阵列性能更高的版本。



推荐阅读
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
author-avatar
蓝染
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有