小白也能学会的RAID磁盘冗余阵列教程

背景

我们每个人的笔记本上都会安装机械硬盘,我们的JDK 、开发工具都是存储在上面的。如果追求性能或是喜欢玩大型游戏的小伙伴,可能会选择安装固态硬盘。固态硬盘体积小、重量轻、读写速度快。所以很受大家的青睐。

固态硬盘给我们带来读写速度的同时,也带来了成本问题。

file

相同容量的固态和机械硬盘价格差距很大。

而在企业中,磁盘的存储能力,是能玩转多大数据量的先决条件。存储能力的扩展,不能仅仅考虑磁盘的数量而不考虑数据存储质量的问题。因为数据的存储质量,是决定容错能力的一个重要部分。

file

长期频繁读写一块磁盘,极易造成磁盘故障和数据丢失,所以综合存储容量、性能、可靠性和成本考虑,利用虚拟化存储技术,把多块硬盘组合起来,形成一个或多个阵列组,提升了性能和冗余性,这个技术就是 Raid 磁盘冗余阵列(Redundant Array of Inexpensive Disks)

虚拟化存储技术

前面我们介绍了利用虚拟化技术 的 Raid 磁盘冗余阵列的出现背景,这一小节,我们来介绍一下什么是虚拟化存储技术。

从虚拟机说起

虚拟化,这个词藻可能略显抽象。不知道虚拟化的概念,但是咱用过虚拟机呀。

比较常用的虚拟机有:VirtualBox、VMware Workstation、Virtual PC等。

对了,我们Java 开发 不是也有一个JVM虚拟机吗,有啥区别呢?

所谓的虚拟机,其实都是都是对真实环境的虚拟化,以达到便捷的目的,只是种类不同罢了。虚拟机目前分三种:

  • 系统虚拟机,例如:VMware。
  • 程序虚拟机,例如:Java虚拟机(JVM)。
  • 操作系统层虚拟化,例如:Docker。

它们是针对不对层次上的虚拟化,包括硬件层上的虚拟化,操作系统层面上的虚拟化,编程语言层面上的虚拟化,存储层面上的虚拟化,这几种虚拟化应对的场景不同,能解决的问题不同。

什么是虚拟化?

先说概念:虚拟化是为一些组件(例如虚拟应用、服务器、存储和网络)创建基于软件的(或虚拟)表现形式的过程。它是降低所有规模企业的 IT 开销,同时提高其效率和敏捷性的最有效方式。

虚拟化有什么好处?

最直观的一个好处就是,在相同的业务场景下,虚拟化可以减少服务器部署的数量。

通过虚拟化,使得每个应用和操作系统,都能够处于单独的容器之中。也就是上文说的虚拟机。虚拟机是完全独立的。而计算资源,存储、网络等资源则放置在一个资源池中。

举例:我们自己的电脑就像是一个集中的资源池,运行的多个虚拟机是从这个资源池中申请资源的。

基于存储设备的虚拟化

编程语言的虚拟化,JVM虚拟机的诞生,使得我们编写的Java应用程序能够做到平台无关性,达到 “一次编译,随处运行”的特点,那么数据存储的虚拟化该如何来理解呢?

其实,存储设备的虚拟化是在存储设备上加入一个逻辑层,通过逻辑层访问存储资源。

对运维管理员来说,可以很方便的调整存储资源,提高存储利用率。

对终端用户来说,集中的存储设备可以提供更好的读写性能和易用性。

file

这个存储设备之上的逻辑层,其实就是类似于Java开发里面的接口抽象和实现的关系。它使得物理资源和逻辑资源不再是一 一对应的关系,屏蔽了大量的细节,使得底层硬件逻辑得以抽象隔离,同时也提高了可扩展性和管理难度。

Raid 磁盘冗余阵列组成

铺垫完虚拟化技术的相关知识后,我们正式进入Raid磁盘冗余阵列的介绍。

Raid 就是包含多块硬盘组成的一个冗余阵列,它把多块物理硬盘组合成一块逻辑硬盘,从上层来看,就像是使用一块实体硬盘一样,在需要保证数据存储质量和高效率存储上得以运用。

简单来说,RAID把多个硬盘组合成为一个逻辑硬盘,因此,操作系统只会把它当作一个实体硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为普通用户的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。

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

RAID 的特点

  • 安全性

引入 RAID ,最直观的好处就是 提高了数据的安全性(当然不是所有 RAID 都具备,后面会细讲),同一份数据在其他磁盘上会有冗余备份,当一块磁盘损坏后,数据仍能从其他磁盘上恢复,从而避免数据的丢失。

  • 提升并行度

通过多块磁盘的组合,形成磁盘组,相比单个物理磁盘而言,能够提供更大的存储容量和更高的存储性能。从原先的读写单块磁盘,变成了同时读写多块磁盘。

Raid的分类

RAID0

事实上,RAID0 不是真正意义上的 RAID。

因为它不仅不能提供任何的容错措施。还会增加数据丢失的可能性。因为在 RAID0 中,没有数据会被复制。而是将数据分布到了两块独立的磁盘上。如果一块磁盘损坏,那所有的数据将会不可用。

file

你可能会疑惑,RAID0 存在的意义是什么?

其实前文提到了,RAID0存在的意义就是,它虽然没有提供备份冗余,但是它的写入很快。两块磁盘组合起来,能更好的提高读写的并行度,加快数据的读写。

RAID1

RAID1的工作原理是,将一块磁盘的数据镜像到另一块磁盘上,提供100%的数据冗余,但是相当于只有50%的磁盘利用率,在企业中可以应用于监控类型,数据重要性强,高可用的业务场景下。

RAID1 所需要的磁盘数量最少是两个,在出现问题时,最多允许损坏一块磁盘,并且需要及时更换,否则将导致系统的崩溃,写入原理图如下:

file

RAID5

RAID5 是一种存储性能,数据安全和存储成本兼顾的存储解决方案。

它不像RAID1一样,完全使用一块镜像磁盘来冗余数据,而是使用一种叫做奇偶校验位的方式来记录校验数据。它同样也不对数据进行备份,而是把和数据相对应的奇偶校验信息存储到其他磁盘上去,当一个磁盘发生损坏后,可以利用身下的其他磁盘数据加相应的奇偶校验信息恢复被损坏的数据。

RAID5需要三块或者以上的磁盘,最大程度上能支撑2块数据盘的损坏。

file

奇偶校验位用于磁盘发生故障时的数据恢复。由于所有的奇偶校验位几乎需要一个磁盘大小的容量,所以在磁盘阵列中,真正数据存储的容量会被降低。假如四块盘中,每块盘的存储容量都是1TB,最后用于存储数据的容量大概是3TB,因为大概奇偶校验的信息所占空间为1TB左右。

RAID10

RAID 10 ( 也被称之为 RAID 0 + 1 )就是 RAID0 与 RAID1 的组合,它提供了高性能,高可用性,在性能上要比 RAID5 好,特别适合大量写入的应用程序,但是就是成本比较高,无论是多少块磁盘你都是将损失一半的磁盘存储。按照我的理解,至少需要 4 块硬盘才能完成,A 和 B 做数据分割,分别存储一半的数据,C 和 D 分别对应做A和B的镜像备份。这样一来,可真是完美了,也是我理想中的最佳状态。也不需要 RAID 5的奇偶校验。很显然,这样子成本也会高一些。

file

如何选择适合的 RAID 策略

RAID 策略的选择可以从三个因素来考虑,即数据可用性、 I/O 性能和成本。 如果不要求可用性,选择 RAID0 以获得高性能。如果可用性和性能是重要的,而成本不是一个主要因素,则根据磁盘数量选择 RAID1 。如果可用性,成本和性能都同样重要,则根据一般的数据传输和磁盘数量选择 RAID5 。在实际应用中,应当根据用户的数据应用特点和具体情况,综合考虑可用性、性能和成本来选择合适的 RAID 策略,
综合各个RAID策略的特点和业务场景的需要,归纳总结一下选择的依据:

file

总结

本文从机械硬盘和SSD的对比说起,延伸到虚拟机和虚拟化技术的概念,介绍了不同级别的虚拟化,如系统级别的虚拟化代表VMware。编程语言级别的虚拟化JVM虚拟机,操作系统层虚拟化代表Docker。
企业需要考虑从存储容量、可靠性、性能、成本方面来均衡进行合理的容量规划。

也探讨了磁盘冗余阵列的组成,其安全性和并行度的特点。总结如何根据不同的业务场景选择合适的RAID策略。

file

欢迎关注 侠梦的开发笔记,这里是一个有温度的Java社区,分享经验心得,愿与你砥砺前行 想邀你加入这个有温度的Java社群 分享经验和心得 集思广益,高效解答问题 帮助他人,锻炼自己
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值