Java写入磁盘阵列_什么是RAID?RAID有什么用?RAID原理
什么是RAID
硬盘是个很脆弱的东西,它经常会坏掉。所以,为了保证服务器可靠耐用,硬盘必须时时刻刻保持可用。所以有了RAID这个东西。它的目的是将好几个硬盘合并在一起,就算硬盘坏了一个,剩下还有好几个硬盘是正常的,这样服务器才不会挂掉。
当然,保证服务高可用只是RAID其中的一个功能。它还能提升储存容量、加快存取速度等能力。
RAID分为0~6级,另外还有RAID 1+0,简称RAID 10。下面分别介绍这几种RAID实现原理。
下图就是一个RAID实物图:
下图是RAID示意图:
它跟插线板是相似的概念。区别在于,插线板是为了扩展电源插孔,RAID是为了扩展硬盘插槽。
RAID-0
RAID 0没有数据冗余、没有奇偶校验。因此,如果一个硬盘坏掉了,整个RAID阵列的数据都没法正常使用了。它存在的意义在于加快读写速度,提升硬盘容量。通常在数据可靠性要求不高的情况下才会使用RAID 0。比如游戏、科学计算。
因为每个硬盘都可以独立读写,如果硬盘有n块,那么读写速度提升是n倍。
下图是RAID 0的数据分布方式:
RAID-1
RAID 1模式下,如果有n块硬盘,那么会把数据保存n份一模一样的。这样即使一份数据坏掉了,剩下的备份可以正常工作。性能方面,随机存取速度相当于所有硬盘的总和,写入性能和原来单个硬盘的性能一样。
RAID-1E
这种模式跟RAID 1的区别在于,当硬盘数量大于2时,RAID 1E对于同一份数据最多保存两份一模一样的。这样可以充分的利用硬盘空间。下图说明了这种储存方式。
RAID-1+0
这种模式全称是RAID-1加上RAID-0。它实现的原理如下图所示:
用几句话来描述吧。它相当于先把这些硬盘成对成对的用RAID-1方式组合起来,然后再把这些组合结果用RAID-0方式组合起来。这种模式下它支持高可用,又能有很好的读写性能。这种方式,由于需要存两份一模一样的数据,因此容量会损失一半。
这种方式是目前最常用的。
RAID-2
这种模式现在已经不太常用了。它把每个数据位都打散,然后均匀的放到各个硬盘上。使用了Hamming代码来做纠错,将Hamming代码放到专门的几个硬盘里面。下图可以看到这种模式的数据分布:
RAID-3
这种模式现在也已经不太常用了。它把每个数据字节都打散,然后均匀的分散到各个硬盘。然后将奇偶校验的数据放到专门的硬盘里。关于奇偶校验的数据在后面会提到。这种模式下,由于每个数据都分散到各个硬盘的不同地方,因此每次操作都需要所有硬盘来参与。所以,对于随机存取的场景下,这种模式的性能是很差的。对于特别长的顺序读写是非常合适的,比如视频监控数据。
RAID-4
这种模式把每个数据块打散,然后均匀的分散到各个硬盘。另外还设置了专门的硬盘用来储存奇偶校验的数据。这种模式下,随机读取的性能非常好。但是随机写入的性能却不行。因为需要将所有奇偶校验的数据全部写到专门的硬盘里面。
RAID-5
这种模式把每个数据块打散,然后均匀分布到各个硬盘。与RAID-4不同的是,它将奇偶校验的数据均匀的分散到不同的硬盘。这样如果有一个硬盘坏掉了,丢失的数据可以从奇偶校验里面计算出来。
通常RAID-5的容量会损失1/3,用来储存奇偶校验信息。
这种模式兼顾了成本、性能,也是比较常用的一种模式。
RAID-6
这种模式与其他模式的区别在于,它支持两块硬盘同时损坏,并且仍然能够正常工作。它有这般神奇的能力,是因为它保存了两种奇偶校验。一种是普通的XOR方式,跟RAID-5一样。另外一种比较复杂,需要消耗比较多的CPU。这种奇偶校验方式在后面再讲。
参考资料
https://en.wikipedia.org/wiki/RAID
https://en.wikipedia.org/wiki/Standard_RAID_levels
Java写入磁盘阵列_什么是RAID?RAID有什么用?RAID原理相关推荐
- Java写入磁盘阵列_磁盘阵列RAID介绍及计算公式
一.RAID介绍 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有"独立磁盘构成的具有冗余能力的阵列"之意. 磁盘阵列是由很多块 ...
- Java写入磁盘阵列_月光软件站 - 编程文档 - Java - 利用Linux创建磁盘阵列
磁盘阵列配置文件为/etc/raidtab raiddev /dev/md0 //指定磁盘阵列的设备名称 raid-level linear //指定采用的是Linear模式 nr-raid-disk ...
- java写入数组_如何在Java中将数组写入outputStream
我想通过Socket发送多个随机值.我认为数组是发送它们的最佳方式.但是我不知道如何将数组写入Socket outputStream? import java.io.ByteArrayOutputSt ...
- raid ahci模式哪个好_让硬盘速度更快还更安全的RAID到底是啥?
何为RAID我们首先来认识一下这个概念,RAID全称为Redundant Arrays of Independent Drives,中文名称为磁盘阵列,直译为"冗余独立驱动器阵列" ...
- java写入单个字符_将2个字符写入单个Java char
java写入单个字符 这是创建超低延迟的Chronicle FIX-Engine时使用的另一个好技巧. 在从字节流中读取数据时,如果可能的话,将数据存储在char而不是将其读取到String效率更高. ...
- java写入word文件_使用JAVA写入word文件
我读了一个word文档,想用 Java写入另一个word文件.我希望将读取文档中的内容的样式(字体,粗体,斜体,标题等)写入,因为它是创建的新文档. 我能够复制内容而不是格式样式. import ja ...
- linux自学笔记——RAID级别特性以及软RAID的实现
RAID,Redundant Arrays of Inexpensive Disks 廉价冗余磁盘阵列,又称为Redundant Arrays of Independent Disks,独立冗余磁盘阵 ...
- RAID 介绍(含有硬件RAID卡)
1.RAID的概念? RAID(Redundant Array of Inexpensive Disks)是一种利用多个磁盘驱动器实现数据冗余或提高读写性能的技术.RAID技术按照不同的方式组织多个磁 ...
- 图文并茂raid技术详解(raid大全)
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
- RAID技术超详细介绍(RAID大全)
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
最新文章
- Leetcode | Maximal Rectangle
- 2021/11/24 微软亚州研究院游记
- 图像亮度、对比度调节(伽马校正)
- Linux下unlink函数的使用
- [BUUCTF-pwn]——[BJDCTF 2nd]r2t3
- v4l2 框架下如何设置分辨率_【微学习】低压计量电表如何设置?(下)
- OpenStack基础知识
- A加载B,B发生的变化
- 剑指offer之统计数组中出现次数超过一半的数字
- wordpress文章,页面,小工具如何使用php代码
- PDF文件有密码怎么解除?
- 机器学习实战(第1章)
- Methods of integrating data to uncover genotype–phenotype interactions 翻译
- 软件测试-黑盒测试:正交实验设计法
- 君望永远--纠缠在爱情的起点上 (转载)
- 计算机硬盘用u盘维修,电脑维修:U盘和移动硬盘及固态硬盘的区别
- mysql 合并两个update_如何将多条update语句合并为一条
- 域名解析成ip的过程
- 【JAVA】(vip)蓝桥杯试题 基础练习 阶乘计算 BASIC-30 JAVA
- 解决tomcat启动时的45秒时间限制