存储技术介绍

一、存储介绍

狭义的存储定义:CD、DVD、ZIP,磁带,硬盘等存储介质

广义的存储定义:

  • 存储硬件系统(磁盘阵列,控制器,磁盘柜,磁带库等)
  • 存储软件(备份软件,管理软件,快照,复制等增值软件)
  • 存储网络(HBA卡,光纤交换机,FC/SAS线缆等)
  • 存储解决方案(集中存储,归档,备份,容灾等)

1、存储发展历程

存储架构的发展历程经历了传统存储、外挂存储、存储网络、分布式存储和云存储几个阶段。

传统存储是由单硬盘组成,1956年IBM发明了世界上第一块机械硬盘,这个硬盘有50个24英寸盘片,容量只有5 MB。体积与两台冰箱差不多大,重量超过一吨。被用于当时的工业领域,且独立于主机以外。

外挂存储即直连存储,最早的形态是JBOD,仅仅是将一些磁盘串联在一起,被称为JBOD(Just a Bunch Of Disks,磁盘簇),主机看到的就是一堆独立的硬盘,只增加了容量,无法提供安全保障。

SAN是典型的存储网络,主要使用FC网络传输数据,随后出现了IP存储区域网络。

分布式存储采用通用服务器硬件构建存储资源池,更适合云计算的场景。在后续的课程中会进行介绍。

(1)从附属于服务器到剥离成独立系统

硬盘在服务器内部:

  • 硬盘成为系统性能瓶颈
  • 硬盘槽位有限且容量小
  • 单硬盘存放数据,可靠性差
  • 本地存储,数据分散

外部硬盘陈列:在逻辑上把几个物理磁盘串联在一起,其目的纯粹是为了提高磁盘的容量。

智能硬盘阵列:控制器中包含RAID功能、大容量Cache,同时使得磁盘阵列具有多种使用的功能。

  • 提高数据的读写性能
  • 提升数据的安全性
(2)从独立系统到网络共享存储

通过存储引擎直接与服务器互联的方式可以解决之前的硬盘槽位有限、单盘存放数据、硬盘接口性能成为系统性能瓶颈等问题。

但无法解决存储空间利用率低、各存储系统之间数据分散管理、各存储系统之间数据文件共享能力弱等问题,网络共享存储可以通过SAN和NAS两种服务模式解决这些痛点问题。

解决问题:

  • 硬盘成为系统性能瓶颈
  • 有限硬盘槽位,容量小
  • 单硬盘存放数据,可靠性差,读写性能低
  • 存储空间利用率低
  • 数据无法共享

2、主流硬盘类型

硬盘是计算机最主要的存储设备。

硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与计算机之间的连接速度,直接影响着程序运行快慢和系统性能好坏。

特性/类型 SATA SAS NL-SAS SSD
主流转速(RPM) 7,200 15,000/10,000 7,200 NA
串行/并行 串行 串行 串行 串行
主流容量(TB) 1 T/2 T/3 T 0.6 T/0.9 T 2 T/3 T/4 T 0.6 T/0.8 T/1.2 T/1.6 T
MTBF (h) 1,200,000 1,600,000 1,200,000 2,000,000
备注 由ATA硬盘发展而来,采用串行方式传输,SATA 3.0实现600 MB/s最高数据传输率。 SATA硬盘年故障率大约2%。 SAS专为满足高性能企业需求而设计,并且兼容SATA硬盘。能够提供3.0 Gb/s到6.0 Gb/s的传输率,未来规划到12.0 Gb/s。 SAS硬盘年故障率小于2%。 带有SAS接口的"企业级SATA驱动器",适用于在一个磁盘阵列系统中实现分级存储,简化了磁盘阵列系统的设计。 NL-SAS硬盘年故障率大约2%。 固态硬盘(Solid State Disk)用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。 固态硬盘的接口规范和定义、功能及使用方法与普通硬盘完全相同,在产品外形和尺寸上也完全与普通硬盘一致。

MTBF:Mean Time Between Failure,平均无故障工作时间。

在价格方面,通常来说SATA和NL-SAS硬盘较为便宜,SAS硬盘较贵一些,SSD最为昂贵。

3、硬盘关键指标

  • 硬盘容量(Disk Capacity):容量的单位为兆字节(MB)或千兆字节(GB)。影响硬盘容量的因素有单碟容量和碟片数量。
  • 转速(Rotational speed):硬盘的转速指硬盘盘片每分钟转过的圈数,单位为RPM(Rotation Per Minute)。一般硬盘的转速都达到5400 RPM/7200 RPM。SCSI接口硬盘转速可达10000-15000 RPM。
  • 平均访问时间(Average Access Time)=平均寻道时间+平均等待时间。
  • 数据传输率(Date Transfer Rate):硬盘的数据传输率是指硬盘读写数据的速度,单位为兆字节每秒(MB/s)。硬盘数据传输率包括内部传输率和外部传输率两个指标。
  • IOPS(Input/Output Per Second):即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。
  • 另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如电视台的视频编辑,视频点播等则更关注吞吐量指标。
硬盘类型 IOPS (4K随机写) 带宽 (128K顺序读)
SATA 330 200 MB/s
SAS 10K 350 195 MB/s
SAS 15K 450 290 MB/s
SATA SSD 30K~60K 540 MB/s
SAS SSD 155K 1000 MB/s
NVMe SSD 300K 3500 MB/s

4、存储组网类型

(1)DAS存储

DAS(Direct Attached Storage):一种将存储设备通过电缆(如SATA、SAS、SCSI、USB等)直接连接到一台计算机或服务器上的存储架构。它是最简单和最传统的存储形式之一,通常用于个人电脑、工作站和小型服务器环境中。

  • 时间:70年代
  • 背景:用户最早因为数据量的增多而产生存储的需求,从而产生最早最简单的存储架构:直连附加存储DAS
  • 连接方式:FC,SCSI,SAS
  • 访问方式:直连式存储与服务器主机之间的连接通道通常采用SAS连接
  • 链路速率:3 Gbit/s、6 Gbit/s、12 Gbit/s
  • 提供快照、备份等功能
(2)NAS存储

NAS(Network Attached Storage,网络附加存储):是一种专为文件级数据存储设计的专用设备,它通过标准网络协议(如NFS、CIFS/SMB等)连接到网络上,使得多个用户和不同类型的客户端设备可以共享访问存储资源。

  • 时间:90年代初
  • 背景:网络飞速发展,大量数据需要共享和交换,出现专用的NAS存储设备,成为数据共享与交换的核心
  • 访问方式:多台前端服务器共享后端存储设备,后端NAS设备上的存储空间通过CIFS、NFS协议共享给前端主机,可同时对同一目录或文件进行并发读写
  • 文件系统位于后端存储设备

NFS(Network File System)是Sun Microsystems在1984年创建的Internet标准协议。开发NFS是为了允许在局域网上的系统之间共享文件。

  • Linux NFS客户端支持三个版本的NFS协议:NFSv2 [RFC1094]、NFSv3 [RFC1813] 和NFSv4 [RFC3530]。其中NFSv2使用UDP协议,数据访问和传输能力有限,已经过时;
    • NFSv3版本在1995年发布,添加了TCP协议作为传输选项,被广泛使用;
    • NFSv4版本在2003年发布,已获得更好的性能和安全性。
  • NFS的工作机制:主要是采用远程过程调用RPC机制。
    • RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作,允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。
    • NFS客户端向NFS服务器端发起RPC请求,服务器将请求传递给本地文件访问进程,进而读取服务器主机上的本地磁盘文件,返回给客户端。

CIFS(Common Internet File System)是一种网络文件系统协议,用于在网络上的机器之间提供对文件和打印机的共享访问。现在主要实现在Windows主机之间进行网络文件共享功能。

(3)SAN存储

SAN:Storage Area Networks,存储区域网络,是通过专用高速网将一个或多个网络存储设备和服务器连接起来的专用存储系统。

  • 一个存储网络是一个用在服务器和存储资源之间的、专用的、高性能的网络体系。
  • SAN是独立于LAN的服务器后端存储专用网络。
  • SAN采用可扩展的网络拓扑结构连接服务器和存储设备,每个存储设备不隶属于任何一台服务器,所有的存储设备都可以在全部的网络服务器之间作为对等资源共享。

SAN主要利用Fibre Channel Protocol(光纤通道协议),通过FC交换机建立起与服务器和存储设备之间的直接连接,因此我们通常也称这种利用FC连接建立起来的SAN为FC-SAN。FC特别适合这项应用,原因在于一方面它可以传输大块数据,另一方面它能够实现较远距离传输。SAN主要应用在对于性能、冗余度和数据的可获得性都有很高要求的高端、企业级存储应用上。

随着存储技术的发展,目前基于TCP/IP协议的IP-SAN也得到很广泛的应用。IP-SAN具备很好的扩展性、灵活的互通性,并能够突破传输距离的限制,具有明显的成本优势和管理维护容易等特点。

NAS和SAN的区别:

  • 最大区别就在于NAS有文件操作和管理系统,而SAN却没有这样的系统功能,其功能仅仅停留在文件管理的下一层,即数据管理。
  • SAN和NAS并不是相互冲突的,是可以共存于一个系统网络中的,但NAS通过一个公共的接口实现空间的管理和资源共享,SAN仅仅是为服务器存储数据提供一个专门的快速后方存储通道。
1)FC-SAN

FC-SAN(Fiber Channel Storage Area Network,光纤通道存储区域网络)是一种高性能的存储网络架构,它使用光纤通道(Fiber Channel, FC)技术来连接服务器和存储设备。FC-SAN专为需要高带宽、低延迟和高可靠性的环境设计,通常用于企业级数据中心。

  • 时间:90年代中后期
  • 背景:为解决DAS扩展性差的问题,将存储设备网络化,可以同时连接上百台服务器
  • 连接方式:FC光纤,使用专用的FC交换机
  • 访问方式:后端一台存储设备的存储空间可以划分为多个LUN,供前端服务器使用
  • 链路速率:2 Gbit/s、4 Gbit/s 、8 Gbit/s
  • 提供快照、容灾等高级数据保护功能

FC:Fiber Channel,光纤通道,是指一种用于在光纤或者铜缆上传输100 Mbit/s到4.25 Gbit/s信号的标准数据存储网络。用于建立存储区域网的高速传输技术。光纤通道能够用于支持ATM, IP等协议的一般网络,但它主要用途是从服务器上传输小型计算机系统接口(SCSI)流量到磁盘阵列。

2)IP-SAN

IP-SAN(IP Storage Area Network,基于IP的存储区域网络)是一种使用标准以太网和TCP/IP协议来传输块级数据的存储网络架构。它将传统的光纤通道SAN(FC-SAN)中的光纤通道协议替换为基于IP的协议,如iSCSI(Internet Small Computer System Interface),使得存储设备可以通过现有的企业网络基础设施进行连接。

  • 时间:2001年
  • 背景:为解决FC-SAN在价格及管理上的诸多门坎而产生
  • 连接方式:采用以太网作为连接链路,以太网交换机
  • 访问方式:后端一台存储设备的存储空间可以划分为多个LUN,供前端服务器使用
  • 链路速率:1 Gbit/s 、10 Gbit/s
  • 提供快照、容灾等高级数据保护功能
  • iSCSI 被看好的原因
    • 可以采用非常成熟的IP网络管理工具和基础建设。
    • IP网络使用普遍,可为企业节省大笔建设、管理及人事成本。

iSCSI:Internet Small Computer System Interface,Internet小型计算机系统接口,是一种基于因特网及SCSI-3协议下的存储技术,它将原来只用于本机的SCSI协议透过TCP/IP网络发送,使连接距离可作无限延伸。

(4)集中式存储三种存储组网对比
  • DAS:直连式存储;
  • NAS:网络附加存储,将存储设备接入到现有的组网中,并为服务器提供数据和文件级别的共享;
    • NFS:一般用在Linux系统之间进行文件共享;
    • CIFS:一般用在Windows系统之间进行文件共享;
  • SAN:存储区域网络,将存储设备接入到现有的组网中,并为服务器提供数据和块级别的共享。
    • IP-SAN:通过iscsi协议进行对接
    • FC-SAN:通过光纤进行数据的传输
DAS NAS FC-SAN IP-SAN
传输类型 SCSI、FC、SAS IP FC IP
数据类型 块级 文件级 块级 块级
典型应用 任何 文件服务器 数据库应用 视频监控
优点 易于理解 易于安装 高扩展性、高性能 高扩展性
兼容性好 成本低 高可用性 成本低
缺点 难管理,扩展性有限 性能较低 较昂贵,配置复杂 性能较低
存储空间利用率不高 对某些应用不适合 组网兼容性问题

5、存储形态

(1)集中式存储

集中式存储系统,即整个存储是集中在一个系统中的。存储设备中的硬盘通过 RAID 技术形成一个资源池,将存储资源给到物理服务器使用。

企业级的存储设备一般都是集中式存储。但集中式存储并不是一个单独的设备,是集中在一套系统当中的多个设备。以华为公司的存储为例,整个存储系统可能需要几个机柜来存放。

集中式存储按照 技术架构 可以划分为 SANNAS,其中 SAN 又可以细分为 FC-SANIP-SAN

集中式存储最大的特点就是部署结构简单,无需考虑如何对服务进行多个节点的部署,也就不用考虑多个节点之间的分布式协作问题。

集中式存储的缺点

  • 孤立的存储资源,存储通过专用网络连接到有限数量的服务器;
  • 集中式纵向扩容通过增加硬盘框实现,硬件控制器性能(单控制器带盘能力)成为瓶颈;
  • 集中式存储横向扩容需要通过控制器全连接实现,硬件控制器性能成为扩容瓶颈;
  • 集中式存储资源缺乏共享,存储设备和资源往往由不同厂家提供,设备之间无法进行资源共享,数据中心看到的是一个个孤立的存储池;
  • 集中式存储采用集中式元数据管理方式,系统所能提供的并发操作能力将受限于元数据服务的性能,元数据服务也将会成为系统的性能瓶颈;
(2)分布式存储

分布式存储系统,是将数据分散存储在多台独立的服务器上。这些分散的存储服务器构成一个虚拟的存储系统。

分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。随着分布式存储越来越普及,现在一些对性能要求比较高的应用也开始使用分布式存储,比如金融系统的数据库。

  • 分布式存储利用软件重构存储服务形式,通过软件模拟原先硬件控制器实现功能的同时,规避硬件控制器的种种弊端。
  • 资源池:类似于SAN的RAID组概念。

6 、存储业务类型

存储业务类型分为:块存储、文件存储、对象存储三种。

对象存储是一种新兴存储技术,对象存储系统综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性、跨平台性以及安全的数据共享的存储体系结构。

对象存储与块存储、文件存储的对比如下:

  • 块存储对存储层直接访问,开销最小,效率最高,速度最快。但成本最高,扩展困难。块存储采用iSCSI/FC协议,很难跨网络传输。适合的应用场景是企业数据库,如运行Oracle等;
  • 文件存储是在块存储之上构建了文件系统,采用目录-目录-文件的方式组织数据,更容易管理。因为大多数应用程序都是对文件进行操作,因此文件存储更容易和应用系统对接。文件系统受目录树的限制,扩展性受限,一般最多扩展到几十PB。文件系统适用于企业内部应用整合,文件共享场景;
  • 对象存储是在块存储之上构建了对象管理层,与文件系统相比,对象系统层是扁平的,扩展限制少,因此拥有近乎无限的扩展性 。对象由唯一的Key文件数据(文件)元数据自定义元数据构成,由于包含了自管理信息,更加智能。对象存储采用兼容标准的互联网协议接口,可以跨地域传输。对象存储适用于面向互联网服务的存储场景,以及企业内部的归档、备份场景。

二、存储关键技术------------RAID

RAID:Redundant Array of Independent Disks,独立磁盘冗余阵列,RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑硬盘,从而提高了硬盘的读写性能和数据安全性。

1、RAID分级

(1)根据不同的组合方式可以分为不同的RAID级别
RAID 级别 描述
RAID 0 数据条带化,无校验
RAID 1 数据镜像,无校验
RAID 3 数据条带化读写,校验信息存放于专用硬盘
RAID 5 数据条带化,校验信息分布式存放
RAID 6 数据条带化,分布式校验并提供两级冗余
(2)同时采用两种不同的RAID方式还能组合成新的RAID级别
RAID 级别 描述
RAID 0+1 先做RAID 0,后做RAID 1,同时提供数据条带化和镜像
RAID 10 类似于RAID 0+1,区别在于先做RAID 1,后做RAID 0
RAID 50 先做RAID 5,后做RAID 0,能有效提高RAID 5的性能

2、RAID数据组织形式

硬盘的条带化 :将硬盘空间按照设定的大小分为多个条带,数据写入时也按照条带的大小来划分数据模块。

条带(strip) :硬盘中单个或者多个连续的扇区构成一个条带,是组成分条的元素。

分条(stripe):同一硬盘阵列中的多个硬盘驱动器上的相同"位置"(或者说是相同编号)的条带。即同个磁盘阵列中多个磁盘相同位置的条带就叫分条。

  • 分条宽度:指一个磁盘组在进行分条时所使用的磁盘的个数,例如一个由3个成员盘组成的磁盘组,其分条宽度为"3"。
  • 分条深度:指一个分条的容量大小。

3、RAID的数据保护方式

  • 方法一:镜像(Mirroring),在另一块冗余的硬盘上保存数据的副本,提高可靠性,并可以提高读性能。
  • 方法二:奇偶校验算法(XOR):奇偶校验码是使用用户数据计算出的额外信息。对于使用奇偶校验的RAID类型,它意味着需要额外的校验硬盘。奇偶校验采用的是异或(XOR的计算符号⊕)算法。
    • XOR运算广泛地使用在数字电子和计算机科学中。
    • XOR校验的算法------------相同为假,相异为真:0⊕0=0; 0⊕1=1; 1⊕0=1; 1⊕1=0。

RAID3和RAID5的主要区别:

  • 校验信息分布:
    • RAID 3:使用一个专门的磁盘来存储所有条带化数据的校验信息。这意味着读写操作都会涉及到这个专门的校验磁盘,可能会成为性能瓶颈。
    • RAID 5:校验信息被分布式地存储在所有磁盘中,每个磁盘都包含部分校验信息。这种方式避免了单一校验磁盘可能造成的瓶颈问题。
  • 性能:
    • RAID 3:由于校验信息集中存储在一个磁盘上,因此在大量小文件的随机写入时性能较差,但在处理大块连续数据(如视频流)时表现良好。
    • RAID 5:提供更均衡的读写性能,尤其是在处理小文件或进行随机读取时优于RAID 3。因为校验信息分散存储,所以不会出现像RAID 3那样的单点瓶颈。
  • 容错能力:RAID 3 和 RAID 5:两者都能容忍单个磁盘故障而不丢失数据。但是,一旦超过一个磁盘发生故障,两种RAID级别都无法恢复数据。
  • 最小磁盘数:RAID 3 和 RAID 5:都需要至少三块磁盘来实现。
  • 适用场景:
    • RAID 3:更适合用于需要处理大量连续数据的应用场景,例如视频编辑和科学计算等。
    • RAID 5:适用于各种不同的应用环境,因为它提供了较好的平衡性能,并且能有效地支持多种类型的工作负载,包括数据库和文件服务器等。

4、RAID热备和重构概念

热备(Hot Spare)的定义:当冗余的RAID组中某个硬盘失效时,在不干扰当前RAID系统正常使用的情况下,用RAID系统中另外一个正常的备用硬盘自动顶替失效硬盘,及时保证RAID系统的冗余性。

热备一般分为两种:

  • 全局式:备用硬盘为系统中所有的冗余RAID组共享。谁选用归谁。
  • 专用式:备用硬盘为系统中某一组冗余RAID组专用。其他的RAID无法使用。

重构(Rebuild)的定义:指在RAID阵列中一个或多个硬盘发生故障后,通过使用剩余的正常硬盘上的数据校验信息来恢复丢失的数据,并将其写入替换用的新硬盘上的过程。这个过程对于维持RAID阵列的数据冗余性和可靠性至关重要。

数据校验:利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、高性能和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。

注意:一般来说, RAID不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于RAID而言,数据都是完好的,没有发生丢失。所以,数据备份、灾备等数据保护措施是非常必要的,与RAID相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。

5、常见RAID级别介绍

RAID 0 :没有容错设计的条带硬盘阵列,以条带形式将RAID组的数据均匀分布在各个硬盘中。数据并行写入硬盘,性能最好,但是安全性最差。

RAID 1 :又称镜像(Mirror),数据同时一致写到主硬盘和镜像硬盘。通过镜像方式进行保护,安全性最高,至少需要2个磁盘组成。

RAID 3 :带有校验的并行数据传输阵列,数据条带化分布在数据盘中,同时使用专用校验硬盘存放校验数据。通过异或校验的方式进行数据的保护,至少需要3块磁盘组成,专门的盘做校验盘。

RAID 5 :与RAID 3机制类似,但校验数据均匀分布在各数据硬盘上,RAID成员硬盘上同时保存数据和校验信息,数据块和对应的校验信息保存在不同硬盘上。RAID 5是最常用的RAID方式之一。通过异或校验的方式进行数据保护,至少需要3块磁盘,检验位分布式分散到每个成员盘中,数据恢复比RAID3快。

RAID 6 :数据通过两种校验的方式进行数据保护,一般用在数据可靠性和可用性极高的场景,最多可以损坏2个磁盘。

RAID 10 :将镜像和条带进行两级组合的RAID级别,第一级是RAID 1镜像对,第二级为RAID 0。RAID 10 也是一种应用比较广泛的RAID级别。

6、RAID6 DP

RAID 6 是一种磁盘阵列级别,它通过在所有成员磁盘上分布条带化数据以及两个独立的奇偶校验信息来提供容错能力。这允许阵列在同一时间处理最多两块硬盘的故障。

  • 通常使用两种不同的奇偶校验算法(如Reed-Solomon编码),确保即使在两块硬盘同时发生故障的情况下也能恢复数据。
  • 至少需要4块硬盘才能构建一个RAID 6阵列。

RAID 6 DP(Double Parity,双重奇偶校验):实际上是指一种特定实现的RAID 6技术。在标准的RAID 6配置中,数据通过条带化分布在所有磁盘上,并且在这基础上添加了两套独立的奇偶校验信息。这两套奇偶校验允许RAID 6阵列在最多两块硬盘同时发生故障的情况下仍然能够恢复数据,从而提供了较高的数据冗余和可靠性。

  • DP:Double Parity,就是在RAID 4所使用的一个行XOR校验硬盘的基础上又增加了一个硬盘用于存放斜向的XOR校验信息。
  • 横向校验盘中P0-P3为各个数据盘中横向数据的校验信息。例:P0=D0 XOR D1 XOR D2 XOR D3
  • 斜向校验盘中DP0-DP3为各个数据盘及横向校验盘的斜向数据校验信息。例:DP0=D0 XOR D5 XOR D10 XOR D15

RAID 6 DP有两个独立的校验数据块,分别是横向校验和斜向校验。

  • 横向校验盘中的校验值,也叫行奇偶校验值,是同一分条的用户数据异或运算获得到,如图所示:P0是由分条0上的D0,D1,D2和D3异或运算得到,P1由分条1上的D4,D5,D6,D7异或运算得到。所以,P0 = D0 ⊕D1⊕ D2⊕D3,P1 = D4⊕D5⊕D6⊕D7,如此类推。
  • 斜向校验采用的是斜向异或运算得到行对角奇偶校验数据块。数据块的选择过程比较复杂。DP0是由硬盘1的分条0上的D0,硬盘2的分条1上的D5,硬盘3上的分条2的D10和硬盘上4 分条3上的D15异或操作得到。DP1是对硬盘2的分条0上的D1,硬盘3的分条1上的D6,硬盘4上分条2的D11,和第一块校验硬盘分条3上的P3进行异或运算得到。DP2是硬盘3分条0上的D2,硬盘4上的分条1的D7,奇偶硬盘分条2的P2,和硬盘1分条3上的D12进行异或运算得到。所以,DP0 = D0⊕D5⊕D10⊕D15,DP1 = D1⊕D6⊕D11⊕P3,如此类推。

一个RAID 6组的性能:采用双盘校验,相对都比较慢。因此,RAID 6适用两种场景:

  • 数据非常重要,需要尽可能长的时间处于在线和可使用的状态。
  • 使用的硬盘容量非常大(通常超过2 T)。大容量硬盘的重建时间较长,两个硬盘都失效是会造成数据较长时间不能访问。在RAID 6中,可以实现一个硬盘重构时另一个硬盘失效。一些企业希望在使用大容量硬盘后,存储阵列的供应商使用一个双重保护的RAID组。

7、RAID 2.0技术

RAID 2.0:增强型RAID技术,有效解决了机械硬盘容量越来越大,重构一块机械硬盘所需时间越来越长,传统RAID组重构窗口越来越大而导致重构期间又故障一块硬盘而彻底丢失数据风险的问题。

RAID 2.0+:在RAID 2.0的基础上提供了更细粒度(可以达几十KB粒度)的资源颗粒,形成存储资源的标准分配及回收单位,类似计算虚拟化中的虚拟机,我们称之为虚拟块技术。

华为RAID 2.0+:是华为针对传统RAID的缺点,设计的一种满足存储技术虚拟化架构发展趋势的全新的RAID技术,其传统固定管理模式为两层虚拟化管理模式,在底层块级虚拟化(Virtual for Disk)硬盘管理的基础之上,通过一系列Smart效率提升软件,实现了上层虚拟化(Virtual for Pool)的高效资源管理。

块级虚拟化的含义是:将系统中的硬盘划分成若干个连续的固定大小的存储空间,称为存储块,即Chunk,或简称CK。

存储的数据最终都会存储到SSD盘上,如果有些盘片上存放的数据不均匀,就可能导致某些压力大的SSD盘成为系统的瓶颈。

为应对该问题,华为存储系统采用新型的RAID 2.0+块虚拟化技术,通过更细粒度的划分,实现所有LUN的数据均衡的分布在每个SSD盘上,实现盘的负载均衡。

相比传统RAID机制,RAID2.0+具备如下优势:

  • 业务负载均衡,避免热点。数据打散到资源池内所有硬盘上,没有热点,硬盘负荷平均,避免个别盘因为承担更多的写操作而提前达到寿命的上限。
  • 快速重构,缩小风险窗口。当硬盘故障时,故障盘上的有效数据会被重构到资源池内除故障盘外的所有盘上,实现了多对多的重构,速度快,大幅缩短数据处于非冗余状态的时间。
  • 全盘参与重构。资源池内所有硬盘都会参与重构,每个盘的重构负载很低,重构过程对上层应用无影响。

三、存储协议

1、SCSI协议

SCSI:Small Computer System Interface,小型计算机系统接口,最初是一种为小型机研制的接口技术,用于主机与外部设备之间的连接。

计算机与存储系统之间的通信是通过 总线 来完成的。总线就是从源设备传输数据到目标设备的路径。在最简单的情况下,控制器的高速缓存作为源,将数据传输给目标磁盘。控制器首先向总线处理器发出请求使用总线的信号。该请求被接受之后,控制器高速缓存就开始执行发送操作。在这个过程中,控制器占用了总线,总线上所连接的其它设备都不能使用总线。由于总线具备中断功能,所以总线处理器可以随时中断这一传输过程并将总线控制权交给其它设备,以便执行更高优先级的操作。

计算机中布满了总线------从一个位置向另一个位置传输信息和电力的高速通道。例如,将MP3或数码相机连接到计算机时,您可能会使用通用串行总线(USB)端口。对于存储图片、音乐等的小型电子设备,USB端口完全可以胜任传输数据和充电的工作。但是,这种总线还不足以同时支持整台计算机和服务器以及其他许多设备。

在这种情况下,就需要使用SCSI这样的总线。SCSI直译为小型计算机系统专用接口(Small Computer System Interface)是一种连结主机和外围设备的接口,支持包括磁盘驱动器、磁带机、光驱、扫描仪在内的多种设备。它由SCSI 控制器进行数据操作,SCSI 控制器相当于一块小型CPU,有自己的命令集和缓存。SCSI是一种特殊的总线结构,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动地适当分配,动态完成。

2、ISCSI协议

iSCSI:Internet SCSI:把SCSI命令和块状数据封装在TCP中在IP网络中传输,基本出发点是利用成熟的IP网络技术来实现和延伸SAN。

基于iSCSI协议的IP-SAN是把用户的请求转换成SCSI代码,并将数据封装进IP包内在以太网中进行传输。

iSCSI方案最早是由Cisco和IBM两家发起,并且由Adaptec、Cisco、HP、IBM、Quantum等公司共同倡导。它提供基于TCP传输,将数据驻留于SCSI设备的方法。iSCSI标准草案在2001年推出,并经过多次论证和修改,于2002年提交IETF,在2003年2月,iSCSI标准正式发布。

iSCSI技术的 重要贡献 在于其对传统技术的继承和发展:

  • 其一,SCSI(Small Computer System Interface,小型计算机系统接口)技术是被磁盘、磁带等设备广泛采用的存储标准,从1986年诞生起到现在仍然保持着良好的发展势头;
  • 其二,沿用TCP/IP协议,TCP/IP在网络方面是最通用、最成熟的协议,且IP网络的基础建设非常完善。这两点为iSCSI的无限扩展提供了坚实的基础。

3、iSCSI的发起端与目标端

iSCSI的通信体系仍然继承了SCSI的部分特性,在iSCSI通信中,具有一个发起I/O请求的启动器设备(Initiator)和响应请求并执行实际I/O操作的目标器设备(Target)。在Initiator和Target建立连接后,Target在操作中作为主设备控制整个工作过程。

  • 发起端(Initiator):iSCSI启动器,可分为三种,即软件Initiator驱动程序、硬件的TOE(TCP Offload Engine,TCP卸载引擎)卡以及iSCSI HBA卡。就性能而言,软件Initiator驱动程序最差、TOE卡居中、iSCSI HBA卡最佳。
    • SCSI层负责生成CDB(命令描述符块),将CDB传给iSCSI。
    • iSCSI层负责生成iSCSI PDU(协议数据单元),并通过IP网络将PDU发给target。
  • 目标器(Target):iSCSI目标器,通常为iSCSI磁盘阵列、iSCSI 磁带库等。
    • iSCSI层收到PDU,将CDB传给SCSI层。
    • SCSI层负责解释CDB的意义,必要时发送响应。

iSCSI使用iSCSI Name来唯一鉴别启动设备和目标设备。地址会随着启动设备和目标设备的移动而改变,但是名字始终是不变的。建立连接时,启动设备发出一个请求,目标设备接收到请求后,确认启动设备发起的请求中所携带的iSCSI Name是否与目标设备绑定的iSCSI Name一致,如果一致,便建立通信连接。每个iSCSI节点只允许有一个iSCSI Name,一个iSCSI Name可以被用来建立一个启动设备到多个目标设备的连接,多个iSCSI Name可以被用来建立一个目标设备到多个启动设备的连接。

4、FC协议和TCP协议融合

从现有的情况来看,以太网技术和FC技术都在飞速发展,IP-SAN和FC-SAN在很长的一段时间内都将是并存且互为补充的。

TCP/IP网络承载FC信道方式:

  • iFCP
  • FCoE

FCIP:Fibre Channel over IP,基于IP的光纤通道,是连接TCP/IP网络链路上的光纤通道架构的一项IETF建议标准。利用目前的IP协议和设施来连接两个异地FC SAN的隧道,用以解决两个FC SAN的互连问题。

iFCP:Internet Fibre Channel Protocol,Internet光纤信道协议,是一种网关到网关的协议,为TCP/IP网络上的光纤设备提供光纤信道通信服务。iFCP 使用 TCP提供拥塞控制、差错监测与恢复功能。iFCP主要目标是使现有的光纤信道设备能够在IP网络上以线速互联与组网。此协议及其定义的帧地址转换方法允许通过透明网关(transparent gateway)将光纤信道存储设备附加到基于IP的网络结构。

FCoE:Fibre Channel over Ethernet,利用以太网路,传送光纤通道(Fibre Channel)的信号,让光纤通信的资料可以在10 Gigabit以太网路网络骨干中传输,但仍然是使用光纤通道的协定。

IPFC:IP over Fiber Channel,在光纤通道上的IP。IPFC使用在两个服务器之间的光纤通道连接作为IP数据交换的媒介。为此,IPFC定义了如何通过光纤通道网络传送IP分组。跟所有的应用协议一样,IPFC实现为在操作系统中的一个设备驱动器。对本地IP配置的连接使用"ifconfig""或"ipconfig"。然后IPFC驱动器寻址光纤通道主机适配卡,就可以在光纤通道上发送IP分组。

5、iFCP

iFCP:Internet Fibre Channel Protocol:是一种网关到网关协议,为TCP/IP网络中的光纤通道设备提供光纤通道通信服务,实现端到端IP连接。FC存储设备、HBA卡和交换机可以与iFCP网关直连。

iFCP协议通过TCP协议提供流量控制、错误检测和错误恢复功能。iFCP的目的是使当前的光纤通道设备在IP网络上以线路速率互连和网络。

iFCP协议定义的帧地址转换方法,允许FC存储设备通过透明网关加入到TCP/ IP网络中。iFCP可以替代光纤通道,通过iFCP设备连接和分组光纤通道设备。但iFCP不支持独立SAN的合并,因此无法形成逻辑SAN。iFCP的突出之处在于支持SAN互联和网关分区,允许隔离故障区域,打破点对点隧道的限制。同时,iFCP实现了光纤通道设备之间的端到端连接。因此,TCP连接中断只会对通信对产生影响。采用iFCP的SAN能够实现故障隔离和安全管理,比采用FCIP的SAN具有更高的可靠性。

(1)iFCP协议栈

iFCP协议位于光纤通道和TCP/IP之间,这意味着iFCP可以与光纤通道或TCP/IP进行交互。

iFCP协议层的主要功能是在 本地和远程连接 的N_Ports之间传输光纤通道帧图像。当传输帧到远程N_Port时,iFCP层封装并路由由每个光纤通道信息单元组成的光纤通道帧,通过预先确定的TCP连接在IP网络上传输。

在采用iFCP协议的IP SAN中,iFCP设备代替了光纤交换机,即iFCP交换机也可以作为 iSNS(Internet Storage Name Server),为终端节点提供名称发现服务。

  • iFCP交换机为每个FC终端节点分配一个4字节的IP地址。
  • 当光纤通道设备发送SNS名称查询请求时,iFCP交换机将截获请求,并由iSNS服务器进行解析。

6、FCoE协议

FCoE:Fibre Channel over Ethernet,以太网光纤通道:可以提供标准的光纤通道原有服务,如发现、全局名称命名、分区等,而且这些服务都可以照标准原有的运作,保有FC原有的低延迟性、高性能。FCoE把FC帧封装在以太网帧中,允许LAN和SAN的业务流量在同一个以太网中传送。

FCoE允许在一根通信线缆上传输LAN和FC SAN通信,融合网络可以支持LAN和SAN数据类型,减少数据中心设备和线缆数量,同时降低供电和制冷负载,收敛成一个统一的网络后,需要支持的点也跟着减少了,有助于降低管理负担。

(1)FCoE协议封装

光纤通道协议栈有五层。FC-0定义了媒体类型,FC-1定义了帧编解码方式,FC-2定义了帧划分协议和流量控制机制,FC-3定义了通用业务,FC-4定义了上层协议到光纤通道的映射。

FCoE将FC-2及以上层的内容封装成以太网报文进行传输。

四、华为云云硬盘的创建、挂载及云硬盘初始化实验

10分钟快速入门EVS:https://lab.huaweicloud.com/experiment-detail_2342

本实验指导用户体验华为云云硬盘的创建、挂载及云硬盘初始化等基本操作,快速掌握华为云云硬盘EVS操作方法。

云硬盘是一种为ECS、BMS等计算服务提供持久性块存储的服务,通过数据冗余和缓存加速等多项技术,提供高可用性和持久性,以及稳定的低时延性能。您可以对云硬盘做格式化、创建文件系统等操作,并对数据做持久化存储。

1、准备环境

bash 复制代码
# 1、开始实验之前请点击手册上方"预置实验环境"按钮
预置实验环境需要等待【1-3分钟】后预置成功。环境预置成功会生成两台弹性云服务器,ECS资源用户、密码信息可点击预置环境信息查看。

# 2、登录华为云
进入【实验操作桌面】,打开Chrome浏览器,首次可自动登录并进入华为云控制台页面。

2、购买云硬盘EVS

bash 复制代码
# 1、选择"服务列表>存储 > 云硬盘EVS"。进入云硬盘EVS页面。

# 2、单击"购买磁盘"

# 3、根据界面提示,配置云硬盘的基本信息。
操作如下:①【计费模式】:按需计费②【区域】:华北-北京四③【可用区】:可用区1④【磁盘规格】:通用型SSD(若无此规格,可选界面存在的规格)⑤【磁盘大小】:20G⑥【云备份】:暂不购买⑦【更多】:暂不配置⑧【磁盘名称】:volume-windows(请固定,不能更改)⑨【购买量】:1

# 4、单击"立即购买"。

# 5、在"详情"页面,您可以再次核对云硬盘EVS信息。确认无误后,单击"提交",开始创建云硬盘EVS。如果还需要修改,单击"上一步",修改参数。

3、挂载非共享硬盘EVS

bash 复制代码
# 1、在云硬盘EVS列表,找到我们所创建的云硬盘,点击右侧操作中的【挂载】,弹出挂载磁盘配置窗口。

# 2、选择云硬盘EVS待挂载的弹性云服务器ECS,此处我们选择ecs-win,该弹性云服务器ECS必须与云硬盘EVS位于同一个可用分区,通过下拉列表选择"挂载点",挂载点为数据盘,单击"确认"。

# 3、返回云硬盘EVS列表页面,此时云硬盘EVS状态为"正在挂载",表示云硬盘EVS处于正在挂载至弹性云服务器ECS的过程中。当云硬盘EVS状态为"正在使用"时,表示挂载至弹性云服务器ECS成功,下一步进行初始化才能正常使用。

4、初始化Windows云硬盘EVS

云硬盘EVS挂载至弹性云服务器ECS后,需要登录弹性云服务器ECS初始化云硬盘EVS,即格式化云硬盘EVS,之后云硬盘EVS才可以正常使用。

bash 复制代码
# 1、选择"服务列表>弹性云服务器ECS"。进入弹性云服务器ECS页面。

# 2、选择相应的windows弹性云服务器ECS,点击远程登录。

# 3、使用其他方式(VNC)登录,点击"立即登录"

# 4、点击左上角"Ctrl+Alt+Del"按钮进入登录页面

# 5、输入密码登录Windows弹性云服务器ECS(预置密码为:Huawei@123)

# 6、在弹性云服务器ECS桌面,页面下滑选择"开始",在菜单列表中选择"服务器管理器",然后文件和存储服务->磁盘->工具 -> 计算机管理。

# 7、在左侧导航树中,选择 存储 --> 磁盘管理。进入"磁盘管理"页面。

# 8、若新挂载磁盘显示为"没有初始化",则右键单击在菜单列表中选择"初始化磁盘"。在"初始化磁盘"对话框中显示需要初始化的磁盘,选中"MBR(主启动记录)"或者"GPT (GUID 分区表)",单击"确定"

# 9、右键单击磁盘上未分配的区域,选择"新建简单卷"。一路下一步即可完成初始化。右键单击磁盘上未分配的区域,选择"新建简单卷"。进入弹性云服务器ECS的计算机,可以看到出现了新的磁盘,说明已挂载成功。

5、为Linux的弹性云服务器ECS添加云硬盘并初始化

bash 复制代码
# 1、登录管理控制台,鼠标移动到实验操作桌面浏览器页面中左侧菜单栏,选择"服务列表>存储 > 云硬盘EVS"。进入云硬盘EVS页面。

# 2、根据界面提示,配置云硬盘的基本信息。操作如下:①【计费模式】:按需计费②【区域】:华北-北京四③【可用区】:可用区1④【磁盘规格】:通用型SSD(若无此规格,可选界面存在的规格)⑤【磁盘大小】:10G⑥【云备份】:暂不购买⑦【更多】:暂不配置⑧【磁盘名称】:volume-linux⑨【购买量】:1

# 3、单击"立即购买"。在"详情"页面,您可以再次核对云硬盘EVS信息。确认无误后,单击"提交",开始创建云硬盘EVS。如果还需要修改,单击"上一步",修改参数。

# 4、选择云硬盘EVS待挂载的弹性云服务器ECS,此处我们选择ecs-linux,该弹性云服务器ECS必须与云硬盘EVS位于同一个可用分区,通过下拉列表选择"挂载点",挂载点为数据盘,单击"确认"。

6、远程登录linux弹性云服务器ECS

bash 复制代码
# 1、选择"服务列表>弹性云服务器ECS"。进入弹性云服务器ECS页面。

# 2、复制名称为"ecs-linux"的弹性云服务器ECS的弹性公网IP:120.46.209.175

# 3、回到【实验操作桌面】,双击"Xfce终端"打开Terminal,执行如下命令(使用弹性公网IP地址替换命令中的EIP),登录弹性云服务器ECS。
user@sandbox:~$ LANG=en_us.UTF-8 ssh root@120.46.209.175
The authenticity of host '120.46.209.175 (120.46.209.175)' can't be established.
ED25519 key fingerprint is SHA256:Xmse+WuwxDK9UKmXQkbVAwXNe/nS4tw2XMWn2xb0+qM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '120.46.209.175' (ED25519) to the list of known hosts.
root@120.46.209.175's password:    《------------密码是 Huawei@123
	
	Welcome to Huawei Cloud Service

# 4、查看新增的磁盘
# 当前的弹性云服务器ECS有两块磁盘,"/dev/vda"是系统盘,"/dev/vdb"是新增数据
[root@ecs-linux ~]# fdisk -l
[root@ecs-linux ~]# fdisk -l
Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x18957b03

Device     Boot Start      End  Sectors Size Id Type
/dev/vda1  *     2048 20971519 20969472  10G 83 Linux


Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

7、初始化Linux云硬盘EVS

执行以下命令,进入fdisk分区工具,开始对新增数据盘执行分区操作。

fdisk 新增数据盘,以新挂载的数据盘"/dev/vdb"为例:

bash 复制代码
# 以创建一个主要分区为例,输入"p",按回车键"Enter",开始创建一个主分区。以分区编号选择"1"为例,输入主分区编号"1",按回车键"Enter"。
[root@ecs-linux ~]# fdisk /dev/vdb

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x3fdf4d13.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, default 20971519): 

Created a new partition 1 of type 'Linux' and of size 10 GiB.

# 输入"p",按回车键"Enter",查看新建分区的详细信息。
Command (m for help): p
Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3fdf4d13

Device     Boot Start      End  Sectors Size Id Type
/dev/vdb1        2048 20971519 20969472  10G 83 Linux


# 输入"w",按回车键"Enter",将分区结果写入分区表中。
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# 执行以下命令,将新的分区表变更同步至操作系统。
[root@ecs-linux ~]# partprobe 

# 执行以下命令,将新建分区文件系统设为系统所需格式。
[root@ecs-linux ~]# mkfs -t ext4 /dev/vdb1
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem with 2621184 4k blocks and 655360 inodes
Filesystem UUID: 96c8f20a-3d5e-42d6-bf7e-f8148049f281
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

# 新建挂载点。以新建挂载点"/mnt/sdc"为例:
[root@ecs-linux ~]# mkdir /mnt/sdc

# 将新建分区挂载到上步中新建的挂载点下。以挂载新建分区至"/mnt/sdc"为例
[root@ecs-linux ~]# mount /dev/vdb1 /mnt/sdc

# 查看挂载结果
[root@ecs-linux ~]# df -TH
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  4.2M     0  4.2M   0% /dev
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs     2.0G  9.0M  2.0G   1% /run
tmpfs          tmpfs     4.2M     0  4.2M   0% /sys/fs/cgroup
/dev/vda1      ext4       11G  3.1G  6.9G  31% /
tmpfs          tmpfs     2.0G  926k  2.0G   1% /tmp
/dev/vdb1      ext4       11G   25k   10G   1% /mnt/sdc