服务器应该使用哪种类型的RAID阵列?
独立磁盘冗余阵列(RAID)是将多个机械硬盘(HDD)或固态硬盘(SSD)组合为一个逻辑卷的过程 , 从而使其阵列避免或减少硬盘故障带来的损失 。 RAID阵列有很多种类型 , 以下将讨论企业应该选择哪一种RAID阵列 。
什么是RAID阵列?
假设在一台服务器中接入两块1TB的硬盘 , 这样具有2TB的可用空间 。 但是 , 在服务器环境中 , 最好将第二块硬盘作为备份 , 构建成一个RAID阵列 。 这可以使用RAID控制器实时完成 , 该RAID控制器连接到硬盘并管理RAID阵列 。 还有软件RAID阵列 , 但是大多数服务器都将配备专用的RAID控制器 。
如果没有RAID阵列 , 就不会有冗余 。 但是这并不是主要问题 。 而一个良好的备份策略永远不会真正丢失数据 , 但是如果硬盘出现故障 , 则这台服务器在还原时可能会经历严重的停机问题 。 这在服务器环境中是不可接受的 , 并且比暂时的数据丢失要严重得多 。
RAID阵列可以在仍然可用的情况下重建 , 当一块硬盘出现故障时 , 不必从备份中恢复 。 这是RAID阵列的主要优势 。 服务器被设计为即使在许多意外情况下也不会停机 。 工作人员可以从网络服务器上拔出硬盘 , 尽管性能较低 , 但它仍会继续运转 。
在许多方面 , 配置RAID阵列比配置一块容量更大的硬盘要好得多 。 一块8TB大容量硬盘的弹性不如RAID5阵列中配置的五块2TB驱动器 。 而现在很难找到只安装一块硬盘的服务器 。
RAID阵列采用容量和品牌相同的硬盘效果最佳 。 它可以与各种硬盘一起使用 , 但通常会受到速度最慢和容量最小的限制 , 使其性能欠佳 。
这实际上只适用于用户自己管理服务器的情况 , 如家用网络附属存储(NAS)采用了许多硬盘;在这种情况下 , 选择的RAID阵列类型非常重要 。 如果是从AWS公司或者其他云计算供应商那里租用虚拟服务器 , RAID阵列通常由托管服务商为用户配置 , 因为这个级别的控制是从企业那里抽象出来的 。
在开始采用RAID阵列之前需要注意:用于指定不同RAID级别的数字实际上没有任何意义 。 RAID5的性能不是RAID1的5倍 。 此外还有其他几个RAID级别 , 例如RAID2、3和4 , 但它们在实践中并未使用 , 因此不用解释 。
JBOD

文章图片
从技术上讲 , 这不是RAID阵列配置 , 但是在这里需要进行解释 。 从技术上讲 , JBOD意思是“硬盘的联合批处理” , 但是可以将其理解为“只是一堆硬盘” , 因为基本上就是这样 。 JBOD只是将硬盘连接在一起成为一个大容量硬盘 。 这不会带来任何性能上的改进 , 也没有提供任何冗余 , 而用户并不关心其中接入了哪些硬盘 。
许多RAID控制器将提供JBOD模式 。 除非拥有许多容量不同的硬盘并将它们连接在一起 , 否则不应该使用它 。
RAID0阵列

文章图片
RAID0阵列中的数据分散在多个硬盘上;例如 , 如果想从RAID阵列读取文件 , 则将并行读取多个硬盘 , 这使RAID0阵列的读取速度比任何一块硬盘快得多 。
但是 , 由于没有镜像、奇偶校验或其他冗余机制 , 因此 , 如果某块硬盘发生故障 , 则会丢失整个阵列上的所有数据 。 因此 , 可以在速度至关重要时使用RAID0阵列 , 并且不需要冗余 。
在某种程度上 , RAID0阵列与根本没有采用RAID阵列非常相似 。 它可以将所有硬盘放在一个大容量硬盘中 , 并获得更高的访问速度 。 但是 , 单块硬盘故障可能会对阵列上的数据造成灾难性的影响 , 因此 , 除非是临时数据 , 否则在没有备份解决方案的情况下切勿运行RAID0阵列 。
RAID0阵列还可以最大化存储容量 , 因为没有用于冗余的存储空间 。 如果有两个1TB硬盘 , 则其阵列的容量为2TB 。 但是 , RAID0阵列被限制为阵列中容量最小的硬盘 , 如果尝试将2TB硬盘与1TB硬盘一起构建成RAID0阵列 , 则只有2TB的空间 , 而另一个1TB硬盘的空间则会完全浪费 。
采用SSD硬盘的RAID0阵列很常见 , 考虑到SSD硬盘的故障率较低 , 因此更合理 。 这是高端服务器系统中的常见设置 , 因为速度比冗余更重要 。
RAID1阵列

文章图片
RAID1阵列是RAID阵列的另一种基本类型 。 与RAID0阵列类似 , 它使用两块或多块硬盘 , 但不是将数据实现条带化 , 而是将数据从第一块硬盘镜像到第二块硬盘(以及阵列中的其他硬盘) 。 如果有两块硬盘 , 则其中一块硬盘将完全用作一种实时备份硬盘 , 从而在此过程中将总存储容量减半 。 如果一块硬盘发生故障 , 可以继续从另一块硬盘读取数据 , 并通过更换故障的硬盘来重建阵列 。
由于可以使用两块硬盘 , 因此确实具有一些读取性能上的好处 , 但是由于它从每块硬盘中读取相同的数据 , 因此通常不如RAID0阵列好 。 其写入性能将受限于读写速度最慢的硬盘的速度 。
如果拥有两个硬盘并且无法承受硬盘故障而无法取出数据带来的损失 , 则RAID1阵列则是唯一可行的选择 。 不过 , 这并不是最有效的 , 因为将存储容量减少了一半 , 因此其成本是单块硬盘的两倍 。
但是 , 服务器设置中的冗余阵列比单块硬盘的价格要有价值得多 。 如果只需要基本的硬盘设置 , 可以使用简单的RAID1阵列 。 当接入两块硬盘时 , 大多数RAID控制器将默认为RAI??D1阵列 。
RAID5阵列

文章图片
RAID5阵列让事情开始变得有趣起来 。 RAID5阵列不会像RAID1阵列那样复制数据 , 而是使用奇偶校验这种效率更高的方法 。
奇偶校验是错误检查的一种形式 , 就像哈希校验一样 , 但是要简单得多 。 通常用于确保网络流量不会混淆 。 基本上 , 假设有7位数据要发送给某人 , 并且想确保它完整无缺地传输 。 如果传输过程有些混乱 , 他们将无从得知 。 解决方案是对所有正数位进行计数 。 如果有偶数 , 则奇偶校验将为0 。 如果有奇数 , 则奇偶校验将为1 。 将其添加到要发送的数据中 , 另一端的人在收到该数据时将会自动计算奇偶校验 。 如果发生错误 , 并且发生了位翻转(甚至是奇偶校验位本身) , 对方也会知道并请求重新发送数据 。 当然 , 如果单次传输中有两个错误 , 则该系统会中断 , 但这并不常见 。
RAID5阵列不需要存储数据的副本(就像发送两次消息一样) , 而只是存储奇偶校验位 。 可以想象它像具有冗余功能的RAID0阵列一样 , 它至少需要三块硬盘 。 除一块硬盘之外 , 所有硬盘均像常规RAID0阵列一样使用 , 但最后一块硬盘用于奇偶校验 。 如果其中一块硬盘出现故障 , 则可以反向执行奇偶校验计算以恢复任何硬盘上的所有数据(尽管这是一个漫长而费力的操作) 。
实际上 , RAID5阵列不使用专用硬盘进行奇偶校验 , 因为在所有硬盘上剥离奇偶校验位的速度更快 , 但是在计算RAID5阵列将提供多少存储空间时 , 可以这样考虑 。 本质上 , 除了一块硬盘之外 , 将所有硬盘加起来 , 这就是将拥有的存储空间 。 RAID5阵列可以通过增加硬盘来提高空间效率 , 采用三块硬盘的效率为66% , 但是10块硬盘的效率为90% 。 与RAID1阵列相比 , 这显著降低了成本 。
但是 , RAID5阵列并非没有缺点 。 由于每次写入硬盘时都必须计算奇偶校验 , 因此会降低写入性能 。 考虑到以下事实 , 其问题就更加严重:在一块硬盘中翻转一个位需要读取所有的硬盘 , 以便重新计算该块的奇偶校验 。 实际上 , 如果RAID0阵列可以扩展n块硬盘的性能 , 则RAID5阵列可以为n-1块硬盘提供写入操作的性能 。 但是 , 如果阵列足够大 , 问题并没有那么严重 。
另外 , 无论拥有多少块硬盘 , 都只能承受一块硬盘故障的损失 。 这似乎不是一个主要问题 , 因为故障很少见 , 而且不太可能同时遇到两个故障 , 但是阵列重建在硬盘上可能会非常密集 , 基本上是在每个故障最易受攻击的时候从每个故障中读取每一位数据 。 因此 , 如果其中一块硬盘发生故障 , 则另一块硬盘也很有可能也会发生故障 。
如果有3块硬盘 , 则应该选择RAID5阵列 , 因为RAID1阵列会浪费空间 。 如果有4块硬盘 , 那么它可能仍然是最佳选择 , 但是此列表上的其他两个选项也可以使用 。
RAID6阵列

文章图片
RAID6阵列与RAID5阵列相似 , 只是对“奇偶校验磁盘”进行了镜像 。 这使其阵列能够避免发生两次的硬盘故障 。 但是 , n-2块硬盘的写入性能更差 , 并且拥有更少的空间 。
如果有大量的硬盘(6块、8块或更多) , 则可能要考虑RAID6阵列的额外冗余 。 仅RAID6阵列即可实现3-2-1备份策略:至少存储三个数据副本 , 两个备份位于不同的介质上 , 其中至少一个位于异地 。 RAID6阵列可以承受两个硬盘故障 , 使其功能与具有三块磁盘的RAID1阵列相同(减去重建时间) 。
在实践中 , RAID6阵列几乎永远不会经历整个阵列故障 , 尤其是如果在公式中添加了更多的奇偶校验磁盘的话 。 结合其他数据中心中的备份和副本 , 这就是AWSGlacier和Backblaze等存档服务如何实现99.999999999%持久性的原因 。
RAID10(1+0)阵列

文章图片
RAID10阵列从技术上讲是嵌套RAID阵列的一种形式 , 这本身就是另一种复杂的事情 。 如果拥有四块硬盘 , 并且不想使用RAID5阵列或RAID6阵列 , 则唯一的其他选择是RAID0阵列和RAID1阵列 , 这两个都有问题 。 相反 , 如果将这些硬盘分成两部分 , 构成两个RAID1阵列 , 然后将这些阵列用于构建一个大的RAID0阵列 。 RAID10阵列至少需要四块硬盘并且还需要偶数总数的硬盘 。
这提供了RAID1阵列和RAID0阵列的所有优点 , 并且没有很多缺点 , 其具有快速的读取和写入速度 , 高冗余性和易于重建的功能 , 同时仍然可以使用所有硬盘总空间的一半 。 RAID10阵列实际上比RAID1阵列更具弹性 。 在上图中 , 硬盘1和硬盘3可能会发生故障 , 并且阵列仍可以完全重建(尽管如果硬盘0和硬盘1都发生故障 , 则该阵列将无法恢复) 。
RAID10阵列是服务器非常常见的RAID级别 。 它的速度非常快 , 并且可以承受一块硬盘故障 。 唯一真正的问题是价格 , 因为仍然要为保留所有数据的副本付出双倍的代价 , 但是对于一般的工作负载来说 , RAID10阵列在速度上超越了所有其他RAID配置 , 而在吞吐量方面仅输给RAID0阵列 。
RAID50/60阵列

文章图片
RAID50/60阵列基本上是RAID0阵列中的两个RAID5阵列或RAID56阵列 。 这与RAID10阵列一样提高了性能 , 最重要的是提高了写入性能 , 因为在计算奇偶校验时从其他硬盘读取数据更快 。
【服务器应该使用哪种类型的RAID阵列?】它至少需要6块硬盘(在RAID60的情况下为8块硬盘) , 并且由于有单独的RAID5阵列 , 因此需要附加的奇偶校验硬盘 , 从而降低了空间效率 , 但弹性更大 。 总体而言 , RAID50阵列本质上是RAID5阵列性能更高的版本 。
推荐阅读
- 三国杀:卡牌是否应该“界限突破”?且看这版「界闪电」设计如何
- 弹射刀——美国禁止非军方人士使用的刀具
- 新版“红绿灯”开始使用,取消读秒改名字,司机:一不小心扣18分
- 在《王者荣耀》里面,排三个站撸王,应该怎样排?
- 个性化定制订餐APP功能,增强用户的使用体验
- “吃鸡”大神推荐萌新使用的4把武器,上手简单,刷新率还很高!
- 透明的A柱发明得很早,为什么汽车公司不使用它?丰田:谁用谁挨骂!
- 逆光人像摄影有点难,使用这五个简单技巧,拍摄唯美迷人效果
- 在兰博基尼和保时捷,国内的AMG应该被原谅
- 纯净水、隔夜水有害?别道听途说,这4种水才不应该喝
