RAID有哪几种?有什么区别?

由于众所周知的原因,我决定无限期暂停在知乎发文,知乎的旧文也不再更新,新来的同学可以关注我的Blogger和微信公众号,详情请看:

黎小白:关于暂停在知乎发文的通知

目录

SSD、SSHD和HDD哪个好?

1. 日渐式微的机械硬盘

2. 电脑储存器的革命——固态硬盘

2.1 最佳固态硬盘品牌

2.2 固态硬盘主要规格剖析

2.2.1 固态硬盘的关键组件——控制器

2.2.2 固态硬盘的关键组件——内存

2.2.3 老司机带你理清各种固态硬盘接口

2.2.3.1 硬盘接口标准——IDE、AHCI和NVMe咋选?

2.3 如何看懂SSD评测数据?

2.4 固态硬盘的注意事项

2.5 2017年第三季度最佳固态硬盘

3. 尴尬的固态混合硬盘

4.聊聊磁盘阵列功能(本文)

聊聊磁盘阵列功能

★简介

独立硬盘冗余阵列RAIDRedundant Array of Independent Disks),旧称廉价磁盘冗余阵列Redundant Array of Inexpensive Disks),简称磁盘阵列

其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘数组组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。

最初的RAID分成不同的等级,每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。这些年来,出现对于RAID观念不同的应用。

★标准RAID

◇RAID 0

  • 优点:使用 n 颗硬盘,即可拥有将近 n 倍的读写效能。
  • 缺点:数据安全性较低,同组数组中任一硬盘发生问题就会造成数据遗失。
  • 硬盘数量:最少 2 个。

◇RAID 1

  • 优点:安全性依照数组里的实体硬盘数量倍数成长。
  • 缺点:空间利用率是所有 RAID 中最没有效率的。
  • 硬盘数量:最少 2 个。

在 RAID 0 追求效能极端的彼岸,存在着强调数据安全性的RAID 1,RAID 1 的数据储存方式恰好与 RAID 0相反,欲写入硬盘的数据被复制成与硬盘相同数量的份数,分别写入数组中的各颗硬盘。如此一来每个硬盘内都拥有着同份数据的不同拷贝,只要数组中的其中 1 颗硬盘还可使用,数据就不会遗失,可忍受 n-1 颗硬盘同时损毁(n 为数组中实体硬盘的个数)。

效能部分则分为写入和读取 2 种不同状况,写入时因为须将数据复制多份写入各颗硬盘,写入效能与单颗硬盘差不多;读取时则能够同时从各颗硬盘同时读取数据的不同部分,所以能够和 RAID 0 相提并论,约是单颗硬盘读取效能乘上数组中的硬盘个数,不过也有以单颗硬盘读取的设计。

数组可使用容量是 RAID 1 最大的缺点,由于各实体硬盘中的数据几乎是以镜像的方式储存,因此无论数组中放入了多少颗硬盘,可用容量都是以最小的那颗硬盘为主;同 RAID 0,如果数组中有着硬盘容量不一的情形,大硬盘的剩余容量能否可利用端看控制器的设计,之后的 RAID 模式也是如此,将不再赘述。

◇RAID 5

  • 优点:兼顾空间利用率与安全性。
  • 缺点:需要额外的运算资源,仅能忍受 1 个硬盘损毁。
  • 硬盘数量:至少 3 个。

◇RAID 6

  • 优点:容错硬盘数量比 RAID 5 多 1 颗。
  • 缺点:运算量比 RAID 5 大、空间利用率比 RAID 5 低。
  • 硬盘数量:至少 4 个。

◇RAID 2、3、4 呢?

RAID2、3、4较少实际应用,它们大多只在研究领域有实作。

★混合RAID

◇JBOD

JBOD 为 ”Just a Bunch Of Disks” 的缩写,意思就是「一堆硬盘」,指的是RAID 磁盘阵列以外的所有组态。

实作上 JBOD 有 2 种方式,第一种与我们直接将硬盘安装在计算机中相同,各颗实体各自管理自己的容量,当然也可进行磁盘区分割。第二种则是能够将不同实体硬盘的空间串在一起,例如 2 颗 1TB 硬盘串成 1 个 2TB 的空间运用,如此能够放入大于 1TB 的单一档案。

◇RAID 7

RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称。

RAID 7的效能超越了许多其他RAID标准的实做产品,但也因为如此,在价格方面非常的高昂。

◇RAID N+N

在厂商支持的情况下,使用者甚至可以将 2 种以上的 RAID 组态放在同 1组磁盘阵列内,也就是有时可以看到的双位数 RAID 01、10、50、60……等。

建立的方式也很好理解,首先利用前位数字的 RAID 方式建立数组,接着再将后方数字所代表的数组建立其上。

譬如 RAID 10 就是先建立 2 组 RAID 1,接着这 2 组 RAID 1 再组合成 RAID 0;RAID50 就是先建立 2 组 RAID 5,接着再组合成 1 组 RAID 0。

当然,这种组合等级的成本一般都非常昂贵,因此只在少数特定场合应用。

★1+1大于2,SSD组RAID 0真的值得吗?[3] [4]

◇引言

在HDD机械硬盘横行的时代,有人为了追求性能而组RAID 0,理论上能获得双倍的读写速度提升,而在SSD固态硬盘时代中,RAID似乎变得更加麻烦了,因为二者的工作原理太不一样了,光是一个RIAD下的TRIM问题就困扰了玩家很久,直到RST 11驱动才解决。

SSD组RAID 0还有一个问题就是性能提升与成本提升不那么明显,因为主流SSD的速度已经够快,组RAID对随机性能提升也不明显,再加上成本方面的影响,SSD组RAID只是少数玩家才会考虑的事。

◇测试

Tom’s Hardware就做了一个类似的测试,对比是256GB SSD vs.128GB RAID 0、512GB vs.256GB
RAID 0下的SSD性能,包括连续读写、随机及日常应用等各个方面。

组成RIAD 0模式之后,SSD性能提升最明显的就是连续读写速度了,简单来说就是从500MB/s量级提高到了900-1000MB/s量级。

其实从随机性能上的测试来看,IOMeter中的数据库IOPS之类的性能也是有变化的,但是从延迟上来看RAID 0的延迟确实比单SSD要高了一点,PCMark及日常应用测试中其性能并没有随读写速度的提升而改善,有的甚至还下降了。

◇小结:读写速度提升,但总体弊大于利

所以,Tom’s Hardware的最终态度就是不赞成SSD组RAID 0,用户还是选择大容量的SSD产品,组RAID 0还要面临成本更高、风险更大等问题,所以还是单块大容量SSD算了,除非用户对连续读写速度有非常强烈的需要。

★选择适合的 RAID 模式

对于玩家们或是强调系统效能的主机来说,通常都是为了要来增加数据传输的速度。而对于重视数据备援及安全性的用户或是企业用户来说,磁盘阵列就是一个很好的数据保护模式。

像我们这种屌丝,一般只有一块SSD或一块SSD+一块机械硬盘,RAID好像没什么卵用。

但是近几年 NAS 这项产品的需求大开,不论是什么原因而购买了NAS 这项产品,大部分的用户都很难逃过「该选哪种 RAID 模式」这一关。

RAID 0 和 RAID 1 最少都需要 2 颗硬盘,RAID 0 是效能和储存空间的最大化,不注重安全性,因此比较适合放一些消失不见也没关系的档案,例如快取、或是整理档案时的暂存空间,RAID 1 则是安全性最大化,适合放一些重要的数据。

在 4颗硬盘规格的 NAS 产品中,RAID 5、RAID6、RAID 10则是可以放在一起探讨,以安全性来排序由高至低为 RAID 6>RAID 10>RAID5,空间利用率则是 RAID 5>RAID 6=RAID 10。此外还必须加入处理效能去探讨,如果处理效能不高,那么使用 RAID 10能够获得比 RAID 6、RAID 5 还要高的访问速度(因为不用运算校验码)。

★参考文献

1. RAID – 维基百科,自由的百科全书

2. 组建 NAS 磁盘脑袋不再卡卡,RAID 模式全方位分析 | T客邦 – 我只推荐好东西

3. 1+1大于2?SSD组RAID 0真的值得吗? – 超能网

4. One SSD Vs. Two In RAID: Which Is Better?

继续浏览内容
知乎
发现更大的世界
打开
Chrome
继续

更多回答

一共有0~6一共7种,这其中RAID 0、RAID1、RAID 5和RAID6比较常用。
RAID 0:如果你有n块磁盘,原来只能同时写一块磁盘,写满了再下一块,做了RAID 0之后,n块可以同时写,速度提升很快,但由于没有备份,可靠性很差。n最少为2。
RAID 1:正因为RAID 0太不可靠,所以衍生出了RAID 1。如果你有n块磁盘,把其中n/2块磁盘作为镜像磁盘,在往其中一块磁盘写入数据时,也同时往另一块写数据。坏了其中一块时,镜像磁盘自动顶上,可靠性最佳,但空间利用率太低。n最少为2。
RAID 3:为了说明白RAID 5,先说RAID 3.RAID 3是若你有n块盘,其中1块盘作为校验盘,剩余n-1块盘相当于作RAID 0同时读写,当其中一块盘坏掉时,可以通过校验码还原出坏掉盘的原始数据。这个校验方式比较特别,奇偶检验,1 XOR 0 XOR 1=0,0 XOR 1 XOR 0=1,最后的数据时校验数据,当中间缺了一个数据时,可以通过其他盘的数据和校验数据推算出来。但是这有个问题,由于n-1块盘做了RAID 0,每一次读写都要牵动所有盘来为它服务,而且万一校验盘坏掉就完蛋了。最多允许坏一块盘。n最少为3.
RAID 5:在RAID 3的基础上有所区别,同样是相当于是1块盘的大小作为校验盘,n-1块盘的大小作为数据盘,但校验码分布在各个磁盘中,不是单独的一块磁盘,也就是分布式校验盘,这样做好处多多。最多坏一块盘。n最少为3.


RAID 6:在RAID 5的基础上,又增加了一种校验码,和解方程似的,一种校验码一个方程,最多有两个未知数,也就是最多坏两块盘。
总体来说,

以上。

继续浏览内容
知乎
发现更大的世界
打开
Chrome
继续

title: RAID磁盘阵列配置和调优小结
date: 2016-03-10 15:52:17
categories: 学习 | Study
description: RAID的本质是平衡可用性与成本

## 前言

RAID解释我偷个小懒引用WikipediA,独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。写这篇文章当然不是单纯的介绍概念和使用方法,更重要的是如何针对不同的业务场景做合理的RAID配置和参数优化,对于SSD固态硬盘的加入我引入小米运维团队的实验数据,同时我也相信分布式存储会逐步走向成熟,以OpenStack,VSAN,Nutanix为代表头顶软件定义和超融合概念的技术也已经开始了暗战。


> RAID的本质是平衡可用性与成本

## 更新历史

2016年03月11日 – 初稿

阅读原文 – RAID磁盘阵列配置和调优小结

**扩展阅读**

RAID – zh.wikipedia.org/wiki/R
RAID技术发展综述 – RAID技术发展综述
SSD阵列卡方案优化:考虑使用RAID 50替代RAID 10 – SSD阵列卡方案优化:考虑使用RAID 50替代RAID 10

## RAID基础知识

>感谢@刘爱贵,详细知识点可参考扩展阅读

### 基本原理

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID (即 RAID0 )。

RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性, Redundant 也由此而来。

这里要提一下 JBOD ( Just a Bunch of Disks )。最初 JBOD 用来表示一个没有控制软件提供协调控制的磁盘集合,这是 RAID 区别与 JBOD 的主要因素。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。

RAID 的两个关键目标是提高数据可靠性和 I/O 性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些 RAID 等级允许更多地 磁盘同时发生故障,比如 RAID6 ,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘, RAID 会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在 RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合 I/O 带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如, RAID1 存储空间利用率仅有 50% , RAID5 会损失其中一个磁盘的存储容量,空间利用率为 (n-1)/n 。

磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换 ( Hot Swapping ),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说, RAID 不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于 RAID 系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾 备等数据保护措施是非常必要的,与 RAID 相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。

RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。 不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

RAID 思想从提出后就广泛被业界所接纳,存储工业界投入了大量的时间和财力来研究和开发相关产品。而且,随着处理器、内存、计算机接口等技术的不断发展, RAID 不断地发展和革新,在计算机存储领域得到了广泛的应用,从高端系统逐渐延伸到普通的中低端系统。 RAID 技术如此流行,源于其具有显著的特征和优势,基本可以满足大部分的数据存储需求。总体说来, RAID 主要优势有如下几点:
(1) 大容量
这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,大多数的存储需求都可以满足。一般来说, RAID 可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。
(2) 高性能
RAID 的高性能受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有 限,容易成为系统性能的瓶颈。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。
(3) 可靠性
可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不 会导致数据的丢失,不影响系统的连续运行。
(4) 可管理性
实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。

### 关键技术

> 镜像

镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。

镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要   至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,镜像通过 “ 拆分 ” 能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。

> 数据条带

磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。

数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。

数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。

> 数据校验

镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。

采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

海明校验码和 异或校验是两种最为常用的 数据校验算法。海明校验码是由理查德 · 海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。

## 常见RAID类型

> 常见5种RAID类型对比,n位磁盘数量,详细介绍可参考扩展阅读

RAID 等级 | RAID0 | RAID1 | RAID5 | RAID6 | RAID10
—-|—-|—-|—-|—-|—-
别名 | 条带 | 镜像 | 分布奇偶校验条带 | 双重奇偶校验条带 | 镜像加条带
容错性 | 无 | 有 | 有 | 有 | 有
冗余类型 | 无 | 有 | 有 | 有 | 有
热备盘 | 无 | 有 | 有 | 有 | 有
读性能 | 高 | 低 | 高 | 高 | 高
随机写性能 | 高 | 低 | 一般 | 低 | 一般
连续写性能 | 高 | 低 | 低 | 低 | 一般
需要磁盘数 | n≥1 | 2n (n≥1) | n≥3 | n≥4 | 2n(n≥2)≥4
可用容量 | 全部 | 50% | (n-1)/n | (n-2)/n | 50%

## RAID 等级

### 标准 RAID 等级

SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准 RAID 可以组合,即 RAID 组合等级,满足 对性能、安全性、可靠性要求更高的存储应用需求。

### JBOD

JBOD ( Just a Bunch Of Disks )不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。 JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。 JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。 JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制, JBOD 可用存储容量等于所有成员磁盘的存储空间之和。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。

### RAID0

RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验, RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

### RAID1

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。

RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

### RAID5

RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。

RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

### RAID6

前面所 述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。

RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。

RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择

### RAID 组合等级

标准 RAID 等级各有优势和不足。自然地,我们想到把多个 RAID 等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的 RAID 系统。目前在业界和学术研究中提到的 RAID 组合等级主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在 少数特定场合应用。

### RAID10 和 RAID01

一些文献把这两种 RAID 等级看作是等同的,本文认为是不同的。 RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力。

RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。


### RAID 50

RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬盘,因此要以多组RAID 5构成RAID 50,至少需要6颗硬盘。以RAID 50最小的6颗硬盘配置为例,先把6颗硬盘分为2组,每组3颗构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。

RAID 50在底层的任一组或多组RAID 5中出现1颗硬盘损坏时,仍能维持运作,不过如果任一组RAID 5中出现2颗或2颗以上硬盘损毁,整组RAID 50就会失效。

RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高,容量利用率比RAID5要低。比如同样使用9颗硬盘,由各3颗RAID 5再组成RAID 0的RAID 50,每组RAID 5浪费一颗硬盘,利用率为(1-3/9),RAID 5则为(1-1/9)。

### RAID 60

RAID 6与RAID 0的组合:先作RAID 6,再作RAID 0。换句话说,就是对两组以上的RAID 6作Stripe访问。RAID 6至少需具备4颗硬盘,所以RAID 60的最小需求是8颗硬盘。

由于底层是以RAID 6组成,所以RAID 60可以容许任一组RAID 6中损毁最多2颗硬盘,而系统仍能维持运作;不过只要底层任一组RAID 6中损毁3颗硬盘,整组RAID 60就会失效,当然这种情况的概率相当低。

比起单纯的RAID 6,RAID 60的上层通过结合多组RAID 6构成Stripe访问,因此性能较高。不过使用门槛高,而且容量利用率低是较大的问题。


## 关于RAID参数调优

> 通常情况下建议系统(RAID1)与数据(RAID[5|10])分离,这里引用@叶金荣老师的一段话

1. 使用SSD或者PCIe SSD设备,至少获得数百倍甚至万倍的IOPS提升
2. 购置阵列卡同时配备CACHE及BBU模块,可明显提升IOPS(主要是指机械盘,SSD或PCIe SSD除外。同时需要定期检查CACHE及BBU模块的健康状况,确保意外时不至于丢失数据)
3. 有阵列卡时,设置阵列写策略为WB,甚至FORCE WB(若有双电保护,或对数据安全性要求不是特别高的话),严禁使用WT策略。并且闭阵列预读策略
4. 尽可能选用RAID-10,而非RAID-5(`这句话有待商榷`)
5. 使用机械盘的话,尽可能选择高转速的,例如选用15KRPM,而不是7.2KRPM的盘,不差几个钱的;

## SSD阵列卡方案优化

> 感谢@小米noops运维团队,详细实验数据请参考扩展阅读


**性能测试结论**

性能测试显示,相同容量的R50和R10性能接近:其中小块文件的随机读R50要全面好于R10,随机写4K虽然R50和R10差距在28%,但是块增大后R50要全面优于R10。顺序读写方面,R50和R10十分接近。

容错方面,R50接近R10:第二块盘容错率R50十分接近R10,两者相差30%。R10的优势主要是在有一定的概率提供第三、甚至第四块磁盘的容错率,但是考虑到并非100%容错,因此从容错角度来看R50虽然和R10有一些差距,但也已体现出较好的容错率,至少优于R5。而且R50搭配灵活,甚至可以指定3组R5以达到最大3块磁盘的容错;

成本方面,R50有很大优势:按这个配置计算R50只有R10的3/4。

**总结**

RAID 50提供了接近RAID 10性能、可用性以及接近RAID 5成本的特性,具有较好的整体性价比优势,所以考虑使用RAID 50替换RAID 10吧

虚拟机硬盘直通挽救黑群晖数据

我这个黑群晖是1个U盘作为引导盘,一块1T硬盘安装DSM和存放数据.无法被群晖助手搜索的原因应该是安装DSM的硬盘分区出现了问题。因为我使用PE使用Diskgenius,还是可以看到这块硬盘的分区情况。如下图

经检查,这个硬盘没有发现坏道,用SMART或者DG自带的坏道检测都没查出来

个人感觉无法进入DSM的原因是硬盘系统区由于频繁快速断电导致某些文件受损,在读写的时候可能只保存了一半就断电导致文件缺失。而非硬件故障。这种情况恢复数据是很有希望的。

在无法启动DSM的情况下,我用DG把硬盘的第一个分区,也是群晖DSM的安装分区给备份后重新格式化掉,原来格式为EXT4,格式化成FAT(但是千万不要删除任何一个分区)准备重新安装DSM

但是,重新安装DSM也失败,报错无法安装此文件,文件可能已经损毁如下

其实这也是早就料到的事情,只要DSM发生损坏,不把硬盘上所有的分区都删掉的话,是无法直接安装DSM的。换句话说,黑群晖的DSM安装的时候必须挂一块空白盘。但是删除分区意味着这块盘上的所有数据都没了。

但是好处是,虽然自带DSM已经损坏,又无法安装新DSM,但是数据区的东西还是在硬盘上的,只不过因为是Linux 软 raid形式的磁盘分区,所以拆下来用Windows系统是看不了的,我们这里可以采用群晖官网的方法,制作一个Ubuntu的启动盘(和制作PE启动盘差不多),然后在linux中读取软raid分区中的数据,参考文章如下

https://www.synology.com/zh-cn/knowledgebase/DSM/tutorial/Storage/How_can_I_recover_data_from_my_DiskStation_using_a_PC

如果你打不开上面的连接,那么通过输入下面命令来读取即可

在Ubuntu的Disk工具或者PE下面的Diskgenius工具中可以看到这块硬盘的分区结构如下

第一分区安装DSM,第二个和最大那个分区就是群晖里设置的一个存储“集群”

通过这种方式,可以像开启了群晖中的终端机一样读取文件,可以在Ubuntu中把数据拷贝出来(硬盘是只读的),放到其他磁盘上去,挽救数据。

可是我现在没有那么大的硬盘把数据拷贝出来,而是想把这块硬盘插到黑群晖里继续读写数据。此时有原理相同的两种方案。

1、在一个黑群晖物理中插入至少两块硬盘,一块新硬盘,一块是我坏掉的那个,先使用USB加那个新硬盘引导并安装DSM,不要插旧硬盘,正常启动后,再插入坏掉的硬盘到SATA口上。正常启动,就可以在新的DSM中看到老硬盘中的“储存空间”和“储存集群”了。

2、在普通操作系统上装VirtualBox虚拟机,然后在虚拟机中使用两块虚拟硬盘安装DSM,正常运行后,再使用VirtualBox的物理硬盘直通方式把坏掉的硬盘转为vmdk文件,挂到虚拟机的下面。和第一种方法一样,能在新的DSM中看到原来的文件。

两种方法下,原先DSM中安装的套件,Docker容器都无法找回,只能找回原来的文件。

使用虚拟机的方法成本较低,因为只需要把坏掉的硬盘插入到随便一台比较好的机器就可以了,具体方法可以看我上一篇博客《Windows10下VirtualBox 硬盘直通设置方式》我是用的Ubuntu宿主机开的VirtualBox,因为linux下面的权限更方便调整

下面是我的VirtualBox上虚拟机的配置截图

第一块是虚拟硬盘,写入了1.04b的引导文件,第二块是用来安装DSM的,第三块是我的物理直通硬盘。

首先只插入第一块和第二块虚拟硬盘,安装全新的DSM。启动正常运行后,再插入第三块物理直通硬盘,就可以在新DSM中看到原来的文件了。由于这块硬盘原来安装了一个DSM,所以系统会提示你

原先建立的存储空间可以直接看到

存储集群也能正常看到,不过由于DSM所在分区已经损毁,会提示你“无法存取系统集群”,但是健康状态仍然为良好

虽然有红色叹号,但是并不影响我们读写原来存储的数据文件


使用File Station可读可写,跟用普通的一样。

至于套件,就相当于都卸载了,如果你之前用了moments,那么照片的实体文件还在,只是不大好找,需要开“终端机”找。同样Docker如果持久化了,那么物理文件还在,如果你原先的DSM版本和现在的DSM版本一致或者相似,那么可以去“套件中心”再下载Docker和Moments的套件,这样原先的套件和里面的内容据都恢复了。另外也可以通过docker命令行的技术把原先docker恢复出来,不过这就是另外一项高深的技术了。

下面是我恢复后的Docker套件里原来的容器,不仅还都在,而且能正常的启动,恢复dou效果非常好,同样Moments,Chat,Note Station都可以重新安装试一下,不要忘记把现在DSM的用户新建几个成为原来DSM一样名称的用户哦

下面是我恢复后的Docker原来的容器,还可以正常的启动和运行,wordpress里面的图片和文章都还在

系统配置,原来的用户、权限设定,网络设定肯定都没了,因为是新DSM了,如果你之前备份出单独文件来的话,那就非常好了。

对了,我坏掉的旧DSM版本为DSM_DS918+_24922,恢复到虚拟机的新DSM版本为DSM_DS918+_25426,小小升级了一下,引导程序都是918+的1.04b

系统内部服务 [pgsql, synoindexd] 无法启动

本人小白一枚!前几天家里的216Play消息里出现“系统事件——系统内部服务 [pgsql, synoindexd] 无法启动。请联络 Synology 支持小组以获得帮助”,同时手机端套件DS photo、DS vedio等都无法远程访问了!并且,在升级photo station、download station等套件时无法升级还会提示“此套件需要您启动 [pgsql]”。
我已将上述问题通过技术支持中心反馈给了群晖,得到了邮件回复,是通过putty登录admin账户,再sudo -i获取root权限,然后逐行输入
rm /var/services/pgsql
servicetool –set-pgsql
synoservicecfg –resume-by-reason pgsql no-volume
另实例:

ssh进去把 /volume1/@database/pgsql 重命名下,然后新建一个 pgsql 目录,用 chown 把所属用户组改成和原来相同,然后重启试试。

黑群晖安装和使用FFMPEG

黑群晖有很多地方没有办法使用,因为没有洗白,使用moments时,上传的视频没有缩略图,还有使用video station时没有办法转码,我想是不是可以通过其他的手段来解决这些呢?后来我在网上看到,可以使用ffmpeg来解决转码的问题,因为官方本来就自带ffmpeg,在官方提供的套件上找不到ffmpeg这个套件,只有通过第三方的套件中心来解决。

当然我也不知道通过自己安装ffmpeg是否能够解决转码或缩略图的问题,不过今天我打算试上一试,那么我先来安装ffmpeg这个套件,我先在自己的黑群晖添加第三方套件Synocommunity,这个比较简单就是添加一个网址。

Synocommunity

https://packages.synocommunity.com/

黑群晖安装和使用FFMPEG

选择任何发行者

黑群晖安装和使用FFMPEG

增加Synocommunity

设置完成之后选择左下角的社群后,在套件中心里找到ffmpeg安装即可,这里同时可以找到python3并且安装,作为中级电脑低手的我对于其作用并不明确,但是因为代码是拿python3写的,所以我装了。

让ffmpeg正常工作

由于需要用到ssh,在浏览器界面找到SSH并打开,windows用户下载putty,linux和osx可以直接用命令行连接服务器,我用的是osx所以无法在这里演示putty的使用方法,所以请自行百度一下;osx的用户打开终端之后输入ssh root@192.168.1.x(NAS的局域网ip地址)之后输入管理员密码即可。

登陆NAS之后,输入ffmpeg -version即可查看当前ffmpeg的版本号,如果和你在套件中心安装的ffmpeg版本号不同那么执行如下操作:

mv /usr/bin/ffmpeg /usr/bin/ffmpeg_bak

cp -r /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg

安装python3:

mv /usr/bin/python /usr/bin/python_bak

cp -r /usr/local/python3/bin/python3  /usr/bin/python

python –version

如果显示python 版本为3.5即表明完成

再次执行ffmpeg -version查看ffmpeg的版本号

黑群晖安装和使用FFMPEG

显示版本号为4.1,与套件中心显示的4.1-11一致

将脚本复制到NAS

脚本下载链接

建议创建一个新的共享文件夹作为测试,里面拷贝一些测试的视频。

通过网页登陆DSM将代码上传的共享文件夹根目录后,执行:

python /volume1/xxx/photo_thumb.py(这里的路径就是上传代码的文件路径)

黑群晖安装和使用FFMPEG

中文字似乎会乱码但是生成的缩略图正常

默认会生成mp4、avi、wmv、mkv、flv文件的缩略图,其他格式的如有需要,在代码types的中括号里添加文件格式并用英文逗号隔开,外面添加英文单引号即可。

ffmpeg默认不能生成rmvb和rm的缩略图,由于我这里测试发现VideoStation自己会生成rmvb的缩略图,所以并不提供解决办法。

最后在任务计划里添加把之前python运行的命令添加进去设置每天运行就可以了,如果添加了新的共享文件夹需要增加对应的命令,脚本会对文件夹进行遍历,所以有子文件夹时只需要在根目录运行脚本就可以。

黑群晖通过DDSM半洗白后,正常使用video staton转码功能

本人的群晖是在淘宝网购买的蜗牛星际主机来搭建的,使用群晖的DS918+ DSM 6.2-23739软件。目前使用了两个多月很正常的,但是我安装群晖的moments和video station后,发现有一些问题,就是无法正常转码,moments上传的小视频无法获得缩略图,后来通过第三方套件来安装ffmpeg来解决无法获得缩略图的问题,不过video station转码功能还是无法使用,经过百度搜索发现通过DDSM半洗白能够解决这个问题,经过我自己的操作以后,目前video station的转码功能可以正常使用了。

黑群晖通过DDSM半洗白的教程:

1、安装:先通过套件中心后安装好docker

黑群晖通过DDSM半洗白后,正常使用video staton转码功能

2、首次使用docker前需要在控制面板—网络—网络界面—管理—启用open vswitch

黑群晖通过DDSM半洗白后,正常使用video staton转码功能

3、完成设置之后进入docker套件界面选择DSM,创建DDSM容器,然后一直下一步

黑群晖通过DDSM半洗白后,正常使用video staton转码功能
4、至选择DDSM安装文件界面,点击“立即下载”,下载DDSM安装文件至本地,文件版本应该和群晖自身版本有关,下载文件名为DSM_DDSM_23739.pat

黑群晖通过DDSM半洗白后,正常使用video staton转码功能
5、然后浏览手动上传刚刚下载的DSM_DDSM_23739.pat,继续下一步直至DDSM容器创建成功后,在docker界面点击DSM开机按钮

黑群晖通过DDSM半洗白后,正常使用video staton转码功能

6、之后通过DDSM的IP地址(如果选取的是自动分配就去路由器里查看DDSM分配的IP地址)进入DDSM,查看“产品序列号”并记

黑群晖通过DDSM半洗白后,正常使用video staton转码功能

将黑群群引导盘内grub.cfg文件里的SN=XXXXXX替换为DDSM的产品序列号,之后重启黑群晖,至此替换DDSM序列号洗白成功。

也可以参阅本人的《群晖安装成功后,通过SSH修改黑群晖DS3617 DS918+的SN/MAC》文章通过ssh方法修改SN。

7、进入VIDEO STATION

黑群晖通过DDSM半洗白后,正常使用video staton转码功能

进入video station后,通过设置 公开共享,允许转码来启用转码功能。