本文我们首先介绍介绍块存储、文件存储以及对象存储,之后会介绍与存储相关的DAS、NAS以及SAN三种常见的存储架构,最后还会介绍一些与硬盘相关的知识。

1. 块存储和文件存储

块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。

首先,我们介绍这两种传统的存储类型。通常来讲,所有磁盘阵列都是基于Block块的模式(DAS),而所有的NAS产品都是文件级存储。

1.1 块存储

以下列出的两种存储方式都是块存储类型:

1) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,不同主机服务器的储存设备之间无法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的资料,更是复杂,有些系统甚至不能存取。通常用在单一网络环境下且数据交换量不大,性能要求不高的环境下,可以说是一种应用较为早的技术实现。

2) SAN(Storage Area Network): 是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统会位于主机群的后端,它使用高速I/O 联结方式, 如 SCSI, ESCON 及 Fibre- Channels。一般而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特点是代价高,性能好。例如电信、银行的大数据量关键应用。它采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地,但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统(在超大规模方面支持不足)。

1.2 文件存储

通常,NAS产品都是文件级存储。NAS(Network Attached Storage)是一套网络存储设备,通常是直接连在网络上并提供资料存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特点是性价比高。例如教育、政府、企业等数据存储应用。

它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统。但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。

下面我们对DAS、NAS、SAN三种技术进行比较和分析:

storage-das-nas

针对Linux集群对存储系统高性能和数据共享的需求,国际上已开始研究全新的存储架构和新型文件系统,希望能有效结合SAN和NAS系统的优点,支持直接访问磁盘以提高性能,通过共享的文件和元数据以简化管理,目前对象存储系统已成为Linux集群系统高性能存储系统的研究热点,如Panasas公司的Object Base Storage Cluster System系统和Cluster File Systems公司的Lustre等。下面将详细介绍对象存储系统。

1.3 对象存储

总体上来讲,对象存储兼具SAN高速直接访问磁盘特点以及NAS的分布式共享特点(扩展性)。核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device, OSD)构建存储系统。每个对象存储设备具有一定的智能,能够自动的管理其上的数据分布。

storage-oss-arch

对象存储结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端)

1.3.1 对象

对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OID访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。

storage-osd

1.3.2 对象存储设备

对象存储设备具有一定的智能,它有自己的CPU、内存、网络和磁盘系统,OSD同块设备的不同之处不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能:

1) 数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。

2) 智能分布。OSD利用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。

3) 每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。

storage-model

1.3.3 元数据服务器(Metadata server, MDS)

MDS控制Client与OSD对象的交互,主要提供以下几个功能:

1) 对象存储访问

MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。

2) 文件和目录访问管理

MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。

3) Client Cache一致性

为了提高Client的性能,在对象存储系统设计时通常支持Client方的cache。由于引入Client方的Cache,带来了Cache的一致性问题,MDS支持基于Client的文件Cache。当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。

1.3.4 对象存储系统的客户端

为了有效支持Client访问OSD上的对象,需要在计算节点实现对象存储系统的Client。现有的应用对数据的访问大部分都是通过POSIX文件方式进行的,对象存储系统提供给用户的也是标准的POSIX文件访问接口。接口具有和通用文件系统相同的访问方式,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。同时,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致。文件系统读访问流程:

1) 客户端应用发出读请求;

2) 文件系统向元数据服务器发送请求,获取要读取的数据所在的OSD

3) 然后直接向每个OSD发送数据读取请求

4) OSD得到请求以后,判断要读取的Object,并根据此Object要求的认证方式,对客户端进行认证,如果此客户端得到授权,则将Object的数据返回给客户端。

5) 文件系统收到OSD返回的数据以后,读操作完成

2. DAS、NAS、SAN存储架构介绍

随着主机、磁盘、网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要。因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间。如下就简要介绍一下当前主流的存储架构。

2.1 存储架构分类

存储架构根据服务器类型分为:

1) 开放系统的存储(开放系统指基于Windows、Unix、Linux等操作系统的服务器)

2) 封闭系统的存储(封闭系统主要指大型机)

开放系统的存储主要分为:

  • 内置存储

  • 外挂存储

内置存储一般很小,通常认为如保存系统启动代码的SRAM就是一种内置存储。外挂存储根据连接的方式分为: 直连式存储(Direct-Attached Storage, 简称DAS)和网络化存储(Fabric-Attached Storage,简称FAS);网络化存储根据传输协议又分为: 网络接入存储(Network-Attached Storage,简称NAS)和存储区域网络(Storage Area Network,简称SAN)。

1) DAS存储

DAS存储是我们最常见的一种存储方式,尤其是在中小企业应用中。PC中的硬盘或只有一个外部SCSI接口的JBOD都属于DAS架构。

DAS是指存储设备直接连接到服务器总线上,存储设备只与一台独立的主机连接,其他主机不能使用这个存储设备。DAS存储设备与服务器主机之间的连接通道通常采用SCSI连接,DAS存储设备主要是磁盘阵列(RAID: Redundant Arrays of Independent)、磁盘族(JBOD: Just a Bunch Of Disks)等。

2) NAS存储(网络接入存储: Network-Attached Storage)

NAS存储就是存储设备通过标准的网络拓扑结构(比如以太网)添加到一群机器上。与DAS以及SAN不同,NAS是文件级的存储方法,采用NAS较多的功能是用来进行文件共享。

NAS存储也通常被称为附加存储,顾名思义,就是存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上。NAS是文件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。如今大部分人采用NAS较多的功能是用来文档共享、图片共享、电影共享等等,而随着云计算的发展,一些NAS厂商也退出了云存储的功能,大大方便了企业用户和个人用户的使用。

NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。

但NAS有一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网络(SAN)不同,NAS仍使用网络进行备份和恢复。NAS的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。

3) SAN存储(存储区域网络: Storage Area Network)

存储区域网络,从名字上也可以看出,这个是通过光纤通道交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。

SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI协议IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在哪里,服务器都可以直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。

如今的SAN解决方案通常会采取以下两种形式: 光纤信道以及iSCSI或者基于IP的SAN,也就是FC SAN和IP SAN。光纤信道是SAN解决方案中大家最熟悉的类型,但是最近一段时间以来,基于iSCSI的SAN解决方案开始大量出现在市场上,与光纤通道技术相比较而言,这种技术具有良好的性能,而且价格低廉。

SAN存储的优势主要有:

  • 随着存储容量的增长,SAN允许企业独立地增加他们的存储容量

  • SAN允许任何服务器连接到任何存储阵列,好处是不管数据放在哪里,服务器都可以直接存取所需的数据)

  • 由于使用光纤接口,SAN具有更高的带宽。除了FC连接,SAN连接还有iSCIS(SCSI over IP)以及SAS(Serial Attached SCSI)接口。光纤接口可以提供10公里那么远的连接长度,非常容易实现物理分离的存储。

SAN和NAS的主要区别体现在操作系统所在的位置

2.2 三种存储架构的应用场景

DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业;

NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低;

SAN则适用于大型应用或数据库系统,缺点是成本高、较为复杂。

3. IDE(ATA),SATA,SCSI的区别

目前的硬盘种类有好多种: IDE(ATA)硬盘、SATA硬盘、SCSI硬盘和SAS硬盘。

3.1 IDE硬盘

IDE硬盘又叫ATA硬盘,是采用并行传输技术的硬盘。IDE的英文全称为Integrated Driver Electronics,即电子集成驱动器,它的本意是指把“硬盘控制器”和“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容 。对用户而言,硬盘安装起来也更为方便。IDE这一接口技术从诞生至今就一直在不断发展,性能也不断的提高,其拥有的价格低廉、兼容性强的特点,为其造就了其它类型硬盘无法替代的地位。

1) IDE硬盘接口类型

IDE代表着硬盘的一种类型,但在实际应用中,人们也习惯用IDE来称呼最早出现的IDE类型硬盘ATA-1,这种类型的接口随着技术的发展已经被淘汰了,而其后发展分支出更多类型的硬盘接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都属于IDE硬盘。

IDE硬盘的接口类型有ATA、Ultra ATA、DMA、Ultra DMA。

2) IDE硬盘优缺点

  • IDE硬盘优点: 价格低廉、兼容性强、性价比高

  • IDE硬盘缺点: 数据传输速度慢、线缆长度过长、连接设备少

3.2 SATA硬盘

SATA(Serial ATA)硬盘,又称串口硬盘,是未来PC机硬盘的趋势,已基本取代了传统的PATA硬盘。SATA的全称是Serial Advanced Technology Attachment,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1.0规范,2002年,虽然串行ATA的相关设备还未正式上市,但Serial ATA委员会已抢先确立了Serial ATA 2.0规范。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。

SATA硬盘采用串行传输技术,目前已经发展到了第3代,其中SATA2可以达到3Gbps,SATA3可以达到6Gbps,速度比IDE快多了。

目前情况下,SATA硬盘分为原生和桥接两种:

1) 原生SATA硬盘

这是真正的SATA硬盘,采用真正的SATA控制器。目前最新的SATA II支持NCQ(Native Command Queing, 原生命令队列),这个技术允许硬盘对读/写命令重新排序,允许硬盘根据哪一个功能最接近磁头当前所在的位置来执行。

2) 桥接SATA硬盘

只是将普通的IDE硬盘通过桥接控制芯片将其转化为SATA硬盘,通过“主板-硬盘”采用桥接芯片来实现“串-并”、“并-串”的数据转换,在性能上比起IDE硬盘并没有太大的提升,反而影响带宽。

桥接SATA芯片一般都是采用Narvell公司的88i8030芯片或者Silicon Image公司的Sil3611芯片,如果你在自己得到SATA硬盘上发现了这两种芯片,那就是桥接SATA硬盘,如果没有的话,那么恭喜你,这就是原生SATA硬盘。


SATA硬盘与传统的并行ATA硬盘相比具有非常明显的优势;首先是SATA的传输速度快、容易散热、支持热插拔等诸多优点,这些都是并行ATA硬盘无法与之相比的。

注: SATA硬盘是早于IDE硬盘出现的,现在我们知道SATA硬盘较IDE硬盘先进,那为什么还会出现IDE硬盘呢?这里我们就介绍一下相关历史。

机械硬盘连接到主板上接口名为SATA的串口,这个接口只有一个通道,也就是说一次只能传输1个byte的数据,速度非常慢,后来人们为了解决这个问题就发明了第二种接口,名为IDE并行接口,这个接口之所以叫做并行接口是因为它有八个通道,一次可以同时传输8个byte,这样速度就有了很大的提升,不过代价也很大,因为一个数据被分成8条路传输很容易出现数据丢失和信号干扰等问题。

随着硬盘速度的不断增加并行接口也变得越来越不适用,人们又回到了SATA串口,但是这个串口已经不是当年的那个串口了。经历了多年的发展SATA3.0的带宽已经达到了6Gpbs的上限,换算下来也就是700MB/s的传输速度,这样一来硬盘的速度就不会受到接口带宽的限制了,直到现在我们用的基本都是走SATA3.0总线的SATA串口硬盘。

3.3 SCSI硬盘

还有一种硬盘叫SCSI硬盘,SCSI是small computer system interface(小型计算机系统接口),使用50针接口,外观和普通硬盘接口有些相似。用在服务器上面较多,速度快,稳定性好,比较适合做磁盘阵列。

SCSI硬盘的优势

1) 转速高达15000RPM。高转速意味着平均寻道时间短,能够迅速找到需要的磁道和扇区

2) SCSI硬盘可以支持多个设备,SCSI-2(Fast SCSI)最多可以支持7个SCSI设备,Wide SCSI-2以上可以接16个SCSI设备。也就是说,所有的设备只需占用一个IRQ(Interrupt Request),同时SCSI还支持相当广的设备,如CD-ROM、DVD、CDR、硬盘、磁带机、扫描仪等。

3) SCSI还允许在一个设备传输数据的同时,另一个设备对其进行数据查找。这就可以在多任务操作系统如Linux、Windows NT中获得更高的性能。

3.4 SAS硬盘

SAS(Serial Attached SCSI)即串行连接SCSI,是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI(注:串行SCSI 由并行SCSI物理存储接口演化而来)接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,并且提供与SATA硬盘的兼容性。

SAS硬盘算是机械硬盘中速度最快的了,首先接口上SAS接口就比SATA和SCSI的机械硬盘快,其次加上转速快,寻道快,所以SAS硬盘都被应用到无盘服务器上做读或写。



[参看]

  1. 常见三种存储方式DAS、NAS、SAN的架构及比较

  2. 一文读懂块存储和文件存储

  3. 块存储、文件存储、对象存储这三者的本质差别是什么?

  4. RAID技术全解图解-RAID0、RAID1、RAID5、RAID100

  5. IDE(ATA),SATA,SCSI的区别