NAS, RAID

http://www.zhihu.com/question/19786074

NAS - Network Attached Storage: 是一种存储类型,说白了就是主机通过Ethernet网络访问存储数据的一种类型存储。

与之相对的是

SAN (storage area network) storage: 主机通过Fibre Channel访问存储数据的一种类型存储

通过Ethernet网络访问存储数据,采用的协议当前有NFS、SMB、iSCS

NFS和SMB都是基于文件系统访问的运行在ethernet网络的协议,NFS用于Unix操作系统平台 (比如: AIX,HP-UX,各种Linux) 的访问协议;SMB协议用于windows系统平台的文件系统访问协议。

而iSCSI又称为IP-SAN, 是一种基于ethernet网络下的SCSI-3协议,它是基于块设备(block)的数据访问协议。

NAS storage 支持 NFS、SMB、iSCSI 协议

更传统的性能更高,但是成本也更高的是基于 Fibre Channel 的 SCSI-3 访问协议, 它是基于块设备 (block)的数据访问协议

SAN storage 使用基于 Fibre Channel 的 SCSI-3 访问协议

NFS是一种网络文件系统,也可以理解为网络文件传输协议。就是定义文件数据如何在网络中传输,通过怎样的协议去访问网络端的文件。

NAS指的是在网络中提供文件服务的设备。

一般的NAS都支持NFS这种协议,当然还会支持CIFS、FTP等多种网络文件传输协议。

RAID

RAID, 全称是 Redundant Array of Inexpensive/Independent Disks, 也就是磁盘冗余阵列, 这里的 I 有两种说法, 一种是 Inexpensive, 廉价, 另一种是 Independent, 独立。所谓 RAID 就是将多块磁盘组合在一起, 对外抽象成一个容量大, 读写速度高, 容错性好的大型磁盘。

https://post.smzdm.com/p/a83d9q5n/

Raid 0

RAID 0 是最早出现的 RAID 模式, 即 Data Stripping 数据分条技术。RAID 0 是组建磁盘阵列中最简单的一种形式, 只需要 2 块以上的硬盘即可, 成本低, 可以提高整个磁盘的性能和吞吐量。RAID 0 没有提供冗余或错误修复能力, 但实现成本是最低的。RAID 0 最简单的实现方式就是把 N 块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。在使用中电脑数据依次写入到各块硬盘中, 它的最大优点就是可以整倍的提高硬盘的容量。如使用了三块 80GB 的硬盘组建成 RAID 0 模式, 那么磁盘容量就会是240GB。其速度方面, 各单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障, 整个系统将会受到破坏, 可靠性仅为单独一块硬盘的 1/N。

为了解决这一问题, 便出现了 RAID 0 的另一种模式。即在 N 块硬盘上选择合理的带区来创建带区集。其原理就是将原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。

在创建带区集时, 合理的选择带区的大小非常重要。如果带区过大, 可能一块磁盘上的带区空间就可以满足大部分的 I/O 操作, 使数据的读写仍然只局限在少数的 一、两块硬盘上, 不能充分的发挥出并行操作的优势。另一方面, 如果带区过小, 任何 I/O 指令都可能引发大量的读写操作, 占用过多的控制器总线带宽。 因此, 在创建带区集时, 我们应当根据实际应用的需要, 慎重的选择带区的大小。

带区集虽然可以把数据均匀的分配到所有的磁盘上进行读写。但如果我们把所有的硬盘都连接到一个控制器上的话, 可能会带来潜在的危害。 这是因为当我们频繁进行读写操作时, 很容易使控制器或总线的负荷超载。为了避免出现上述问题, 建议用户可以使用多个磁盘控制器。 最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。虽然 RAID 0 可以提供更多的空间和更好的性能, 但是整个系统是非常不可靠的, 如果出现故障, 无法进行任何补救。所以, RAID 0 一般只是在那些对数据安全性要求不高的情况下才被人们使用。

RAID 1

RAID 1 是将一个两块硬盘所构成 RAID 磁盘阵列, 其容量仅等于一块硬盘的容量, 因为另一块只是当作数据"镜像”。RAID 1 磁盘阵列显然是最可靠的一种阵列, 因为它总是保持一份完整的数据备份。它的性能自然没有 RAID 0 磁盘阵列那样好, 但其数据读取确实较单一硬盘来的快, 因为数据会从两块硬盘中较快的一块中读出。RAID 1 磁盘阵列的写入速度通常较慢, 因为数据得分别写入两块硬盘中并做比较。RAID 1 磁盘阵列一般支持"热交换”, 就是说阵列中硬盘的移除或替换可以在系统运行时进行, 无须中断退出系统。RAID 1 磁盘阵列是十分安全的, 不过也是较贵一种 RAID 磁盘阵列解决方案, 因为两块硬盘仅能提供一块硬盘的容量。RAID 1 磁盘阵列主要用在数据安全性很高, 而且要求能够快速恢复被破坏的数据的场合。

新建的 raid 1 会进入 长时间的 sync 状态, raid 工作在文件系统层, raid 并不知道磁盘上存储了多少数据, 它能看到的只有 blocks, 所以 新建的 raid 1 要 sync 一次来保证每一个 block 都是一致的.

https://serverfault.com/questions/1106138/when-adding-a-new-disk-to-raid-1-why-does-it-sync-unused-space

RAID 5

RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5 可以理解为是 RAID 0 和 RAID 1 的折中方案。RAID 5 可以为系统提供数据安全保障, 但保障程度要比 Mirror 低而磁盘空间利用率要比 Mirror 高。RAID 5 具有和 RAID 0 相近似的数据读取速度, 只是多了一个奇偶校验信息, 写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息, RAID 5 的磁盘空间利用率要比 RAID 1 高, 存储成本相对较低, 是目前运用较多的一种解决方案。 一句话介绍: 至少需要三个硬盘, 提供容错保护功能并提高了读取性能。RAID 5 可在单个硬盘丢失时得以维持运行。

RAID 6

  1. RAID 6 磁盘阵列由 N (N>=4) 块盘组成阵列, 存储容量为N块磁盘容量总和的 (N-2) /N。
  2. RAID 6 技术是在 RAID 5 基础上, 为了进一步加强数据保护而设计的一种RAID方式, 实际上是一种扩展 RAID 5 等级。与 RAID 5 的不同之处于除了每个硬盘上都有同级数据 XOR 校验区外, 还有一个针对每个数据块的 XO R校验区。当然, 当前盘数据块的校验数据不可能存在当前盘而是交错存储的。
  3. RAID 6每个数据块有两个校验保护屏障 (一个分层校验,一个是总体校验), 因此 RAID 6 的数据冗余性能相当好。即使同时损失两块磁盘也不会影响数据使用, 但是由于增加了一个校验, 所以写入的效率较 RAID 5 还差, 而且控制系统的设计也更为复杂, 第二块的校验区也减少了有效存储空间。

RAID10

RAID 10 也被称为镜象阵列条带。象 RAID0 一样, 数据跨磁盘抽取;象 RAID1 一样, 每个磁盘都有一个镜象磁盘, 所以 RAID 10 的另一种会说法是 RAID 0+1。RAID 10 提供 100% 的数据冗余, 支持更大的卷尺寸, 但价格也相对较高。对大多数只要求具有冗余度而不必考虑价格的应用来说, RAID10提供最好的性能。使用RAID10, 可以获得更好的可靠性, 因为即使两个物理驱动器发生故障 (每个阵列中一个), 数据仍然可以得到保护。RAID 10 需要 4 + 2*N 个磁盘驱动器 (N >=0), 而且只能使用其中一半(或更小, 如果磁盘大小不一)的磁盘用量, 例如 4 个 250G 的硬盘使用RAID10 阵列, 实际容量是 500G。

实现原理:

Raid10 其实结构非常简单,首先创建2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。磁盘1和磁盘2组成一个Raid1,磁盘3和磁盘4又组成另外一个Raid1;这两个Raid1组成了一个新的Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。 虽然Raid10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。 当我们需要恢复RAID10中损坏的磁盘时,只需要更换新的硬盘,按照RAID10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。 总结:

磁盘空间利用率: 50%。

读性能: N/2*单块硬盘的读性能

写性能: N/2*单块硬盘的写性能

冗余: 只要一对镜像盘中有一块磁盘可以使用就没问题。

群晖 SHR

Synology Hybrid RAID (SHR) 是 Synology 的自动 RAID 管理系统,经专门设计,可快速和方便地部署存储卷。它可使存储卷部署比传统的 RAID 系统更加轻松。SHR 可让用户进行 RAID 管理、扩充存储器、使存储容量最大化,即便它们没有很好掌握各种 RAID 级别。SHR 允许 1 块或 2 块硬盘冗余 - 这意味着 SHR 卷能够经受住最多 2 块硬盘发生故障而数据卷仍可使用。请注意,一个 RAID 卷 (传统 RAID 或 SHR) 不是备份系统。SHR 基于 Linux RAID 管理系统,且使用时完全可选。在寻求存储数据保护方面,SHR 不仅使传统 RAID 系统的专家用户受益,也能使没有太多技术背景的新手用户受益。

NFS, iSCSI

与NFS和iSCSI是虚拟化所使用的两大IP存储协议。而与很多引起热烈争论的IT话题一样,NFS或iSCSI,哪个更好?

要在任何两种流行的竞争技术之间进行选择,关注其整体更优的人并不多,更多的人关注的是它们能否最好地解决面前的挑战。这两种协议根据应用场合的不同,各自都存在优缺点。但是存储的未来发展将会成为做出最终选择的重要依据。

文件 vs 块

我之前曾经说过,NFS和iSCSI两者无论就实施状况还是历史发展来看,都不存在很大的差异。NFS是由Sun公司在上世纪80年代初开发的,当时是作为通用的文件共享协议,允许网络用户到网络上的一台文件服务器上去读写文件。iSCSI出现的较晚,最初是在2000年初,作为光纤通道(FC)的一种IP替代方案出现的,它和FC类似,都是将块级SCSI命令进行封装,然后在网络上发送。

两者间的主要差别在于文件系统的实施和管理上。NFS使用文件级别的实施,服务器或存储阵列托管整个文件系统,客户到文件系统上读写文件。而iSCSI和FC则使用数据块,存储阵列向客户提供数据块集合,赋予原始存储数据一定的格式化,而不去管文件系统究竟如何使用。

虽然这种差异产生了诸多的后果,但最重要的后果可能在于,在诸如iSCSI和FC的块级协议中,存储阵列一般不会去管它存储的内容是什么。它只知道分配块集合给需要访问的客户。相反地,在诸如NFS的文件级协议中,存储阵列对存储在其中的应用数据具有充分的可视性。

从实用角度来看,对存储在NFS系统上数据的这种阵列端感知能力可以让存储阵列更容易跟踪实际的存储使用情况——例如在精简配置场合,它可以拍摄快照,或者对单个虚拟机做备份,甚至可以在阵列端对主存储数据进行重复数据删除。

不过最近在VMware的VAAI(vSphere API for Array Integration)中实现的SCSI T10增强功能为块存储也增加了类似的感知功能,通过支持UNMAP SCSI原始,可对空闲块增加虚拟化堆栈能力(因而允许阵列回收这些块)和阵列端副本卸载能力,可以加速虚拟机克隆等任务。从某种意义上说,一些智能化的hypervisor与阵列的集成也使得使用NFS的文件级系统可以移植到采用SCSI协议的块级系统中去。

但我不能因此而肯定文件与块的竞争是否已经结束。尽管增加了这些SCSI原始可允许基于SCSI存储协议的系统执行某些类似NFS的功能,但在其他情形下,文件级协议依然拥有某些领先之处——延伸集群就是一个很好的例子。在此类可同步复制、地理分布不同的存储系统中,存储层具备将每个虚拟机视作单独存储资源的能力——可以单独对其进行删除和故障处理——这一点极其重要,也是使用块存储协议的系统所无法实现的。

在网络上

从网络角度看,NFS和iSCSI也存在明显的差异。采用NFS,额外所需的吞吐量和冗余主要是通过网络链路汇聚来获得,还需小心注意去平衡阵列端多个IP地址别名上的存储连接,以确保负载均衡能够生效。而另一方面,iSCSI内置了多路径能力,可提供更多的高级负载均衡算法,在多条服务器和阵列端存储路径上智能化地平衡存储流量。

在这两种情形下,10G以太网的使用可以减轻为提高存储性能而采用多路径的必要性,理由是绝大多数组织的吞吐量要接近1Gbps都是不可想象的(至少今天还是如此)。不过在这方面,iSCSI要略胜NFS一筹,尤其当汇聚多个1Gbps以太网链路时。

从网络安全的角度看,iSCSI也有一定优势。除了NFS和iSCSI都支持的源IP安全限制以外,iSCSI还内置了对双向挑战握手认证协议(CHAP)的支持,该协议可防止未经认证的服务器连接存储资源,允许服务器去验证他们准备连接的存储阵列是否经过了认证。

关于现代NFS实施的一个常见误区是,认为其实施是基于UDP/IP的。这一误解通常来自NFS v2完全基于UDP这一事实。尽管UDP是一个相对低延迟的IP传输协议,但它缺少安全和交付机制,在跟踪目前的TCP/IP网络时难以保障状态连接所带来的好处。而从NFS v3开始,TCP成了它所支持的一个传输协议。这也是目前大多数NFS存储阵列和hypervisor,如VMware vSphere所采用的办法,把NFS放在了和基于TCP/IP的iSCSI同等的位置上。

未来前景

今天来看,iSCSI似乎更具赢家风范,至少从网络角度看是这样,因为它可提供更好的多路径支持,更高程度的端到端安全。不过NFS仍然保有相当的优势,尤其是在阵列端的适当使用,因为它能让阵列拥有对虚拟化堆栈的可视性,可智能化地参与加速、快照和重复删除等存储流程。正是这些阵列端的智能优势,再结合上多路径与安全提升,有可能在NFS 4.1发布时有望实现NFS客户端,最终刺激对NFS需求的长期规模增长。

https://blog.csdn.net/holandstone/article/details/7964160
https://zhuanlan.zhihu.com/p/108636766

JBOD

全称是 Just Bunch Of Disks,翻译过来就是一堆普通磁盘的意思。