Linux【6】-硬盘管理1-4-存储(DAS,NAS,SAN)

一、存储分类简介

磁盘存储市场上,存储分类根据服务器类型分为:封闭系统的存储和开放系统的存储,封闭系统主要指大型机,AS400等服务器,开放系统指基于包括Windows、UNIX、Linux等操作系统的服务器;开放系统的存储分为:内置存储和外挂存储;开放系统的外挂存储根据连接的方式分为:直连式存储(Direct-Attached Storage,简称DAS)和网络化存储(Fabric-AttachedStorage,简称FAS);开放系统的网络化存储根据传输协议又分为:网络接入存储(Network-Attached Storage,简称NAS)和存储区域网络(Storage Area Network,简称SAN)。

  • SCSI:小型计算机系统接口(Small Computer System Interface),SCSI是一种智能的通用接口标准。它是各种计算机与外部设备之间的接口标准。
  • SAS:即串行连接SCSI (Serial Attached SCSI),是新一代的SCSI技术,兼容SATA。

简单的比较

  • DAS: 直连式存储(Direct-AttachedStorage)
  • 在这种方式中,存储设备是通过电缆(通常是SCSI接口电缆)直接到服务器的。
  • DAS方案中外接式存储设备目前主要是指RAID、JBOD等。
  • SAN:存储区域网络(Storage Area Network)
  • SAN连接又分ISCSI(网口)SAS(SAS口)以及FC(光纤口)连接
  • 注:这种连接需要单独的存储产品。可以通过交换机连接。
  • NAS:网络附属存储(Network Attached Storage)
  • NAS是在网络中放置一个单独的存储服务器,此存储服务器开启网络共享。

二、存储介绍

2.1 DAS详细介绍

DAS是Direct Attached Storage的缩写,即“直接连接存储”,是指将外置存储设备通过连接电缆,直接连接到一台计算机上。采用直接外挂存储方案的服务器结构如同PC机架构,外部数据存储设备采用SCSI技术,或者FC(Fibre Channel)技术,直接挂接在内部总线上的方式,数据存储是整个服务器结构的一部分,在这种情况下往往是数据和操作系统都未分离。DAS这种直连方式,能够解决单台服务器的存储空间扩展、高性能传输需求,并且单台外置存储系统的容量,已经从不到1TB,发展到了2TB,随着大容量硬盘的推出,单台外置存储系统容量还会上升。此外,DAS还可以构成基于磁盘阵列的双机高可用系统,满足数据存储对高可用的要求。从趋势上看,DAS仍然会作为一种存储模式,继续得到应用。

优点:

  • 实现大容量存储;将多个磁盘合并成一个逻辑磁盘,满足海量存储的需求。
  • 可实现应用数据和操作系统的分离:操作系统一般存放本机硬盘中,而应用数据放置于阵列中。
  • 提高存取性能:操作单个文件资料,同时有多个物理磁盘在并行工作,运行速度比单个磁盘运行速度高。
  • 实施简单:无须专业人员操作和维护,节省用户投资。

局限:

  • 服务器本身容易成为系统瓶颈;
  • 服务器发生故障,数据不可访问;
  • 对于存在多个服务器的系统来说,设备分散,不便管理。同时多台服务器使用DAS时,存储空间不能在服务器之间动态分配,可能造成相当的资源浪费;
  • 数据备份操作复杂。

2.2 SAN – STORAGE AREA NETWORK 存储区域网络

SAN实际是一种专门为存储建立的独立于TCP/IP网络之外的专用网络。目前一般的SAN提供2Gb/S到4Gb/S的传输数率,同时SAN网络独立于数据网络存在,因此存取速度很快,另外SAN一般采用高端的RAID阵列,使SAN的性能在几种专业存储方案中傲视群雄。

SAN由于其基础是一个专用网络,因此扩展性很强,不管是在一个SAN系统中增加一定的存储空间还是增加几台使用存储空间的服务器都非常方便。通过SAN接口的磁带机,SAN系统可以方便高效的实现数据的集中备份。

目前常见的SAN有FC-SAN和IP-SAN,其中FC-SAN为通过光纤通道协议转发SCSI协议,IP-SAN通过TCP协议转发SCSI协议。

优点:

  • SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。
  • SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。
  • 因为SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。SAN方案也使得管理及集中控制实现简化,特别是对于全部存储设备都集群在一起的时候。最后一点,光纤接口提供了10公里的连接长度,这使得实现物理上分离的、不在机房的存储变得非常容易。

局限:

  • 成本和复杂性,特别是在光纤信道中这些缺陷尤其明显。使用光纤信道的情况下,合理的成本大约是1千兆或者两千兆大概需要五万到六万美金。从另一个角度来看,虽然新推出的基于iSCSI的SAN解决方案大约只需要两万到三万美金,但是其性能却无法和光纤信道相比较。在价格上的差别主要是由于iSCSI技术使用的是现在已经大量生产的吉比特以太网硬件,而光纤通道技术要求特定的价格昂贵的设备。

SAN提供共享磁盘,但本身无法提供共享文件系统。如果集群节点需要访问同一个共享磁盘(LUN),并使用常规文件系统,磁盘的逻辑结构很快就被破坏了。共享磁盘搭配传统文件系统的两个问题:

  1. 磁盘空间分配不一致

如果一个共享磁盘同时挂载到多个节点,文件系统会加载FAT到每个节点的内存中。当其中一个节点上的应用尝试写文件,此节点上的文件系统会查询FAT和可用block,然后分配供使用,然后修改自己的FAT,但是不会修改其他节点上的FAT。如果其他节点上的应用尝试写文件时,可能会分配和之前相同的block供使用,因为这个节点不知道另一个节点已经占用了这个block。

2.文件数据不一致

例如节点A一个进程读取一个block X上的数据,这个block被复制到节点A的文件系统cache中。如果A节点上同一个或另一个进程读取同一个block的数据,A节点的文件系统会直接从cache中复制数据。节点B上的进程修改block X上的数据,而节点A实际上并不知道,会继续使用cache中的数据提供给应用使用,但其实数据已经不可用了。因此,共享磁盘搭配常规文件系统来作为共享文件系统是不可行的。这种方式可以用于如fail-over系统。

集群文件系统

集群文件系统是同时挂载到多个服务器来共享的一种文件系统。集群文件系统可以解决上面那种共享磁盘的不一致的问题。使用服务器间网络来互相通信来进行同步,可以使用以太网、SAN、或一些快速低延迟的集群内联设备。

第一个节点上APP1向集群文件系统请求读取数据(block number 5),集群文件系统将请求发送到包含的常规文件系统。另一个节点上的APP2向集群文件系统请求写入数据(block number 7)。集群文件系统通过inter-server网络来通知其他节点的集群文件系统,block被修改。集群文件系统会清除cache中的相关旧数据。所有节点上的FAT也会通过inter-server网络进行同步。集群文件系统解决了不一致问题并允许多个节点将共享磁盘当做共享文件系统使用。

HA集群中使用NAS的原因是NAS可以提供并发访问,而SAN不行,除非在客户端使用OCFS2、GFS2等文件系统。当前主流分布式文件系统有RedHat的GFS[3](Global File System)、IBM的GPFS[4]、Sun的Lustre[5]等

由于GFS并不是一个开源的系统,我们仅仅能从Google公布的技术文档来获得一点了解; ibm gpfs收费

客户端在访问GFS时,首先访问Master节点,获取将要与之进行交互的Chunk Server信息,然后直接访问这些Chunk Server完成数据存取。GFS的这种设计方法实现了控制流和数据流的分离。Client与Master之间只有控制流,而无数据流,这样就极大地降低了Master的负载,使之不成为系统性能的一个瓶颈。Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统的I/O高度并行,系统整体性能得到提高。

iSCSI或光纤通道SAN

采用SAN时,需要决定使用iSCSI还是FC。市场上出现的是光纤SAN,当时LAN网络只能达到百兆。现在LAN网络可以达到千兆、万兆了,所以新的技术标准出现了,即iSCSI。iSCSI的原理很简单,将生成的SCSI包封装上IP报头使之可以在普通以太网上传输。

光纤SAN号称比iSCSI更可靠、更快,实际上并不尽然。市场上有一些高端iSCSI解决方案,使用专用的iSCSI网络,同时进行优化后,iSCSI可以比FC SAN更快更可靠。同时iSCSI SAN相比FC SAN创建更为简单。实现FC技术的另一种选择是使用FCoE(Fibre Channel over Ethernet)来替代昂贵的光纤硬件设施。这种解决方案使用万兆以上的以太网,同时使用FC协议。现在主流的Linux都支持FCoE。

2.3 NAS – NETWORK ATTACHED STORAGE 网络附加存储

NAS实际是一种带有瘦服务器的存储设备。这个瘦服务器实际是一台网络文件服务器。NAS设备直接连接到TCP/IP网络上,网络服务器通过TCP/IP 网络存取管理数据。NAS 作为一种瘦服务器系统,易于安装和部署,管理使用也很方便。同时由于可以允许客户机不通过服务器直接在NAS中存取数据,因此对服务器来说可以减少系统开销。NAS 为异构平台使用统一存储系统提供了解决方案。由于NAS只需要在一个基本的磁盘阵列柜外增加一套瘦服务器系统,对硬件要求很低,软件成本也不高,甚至可以使用免费的LINUX解决方案,成本只比直接附加存储略高。

优点:

  • NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内。
  • NAS设备的物理位置同样是灵活的。它们可放置在工作组内,靠近数据中心的应用服务器,或者也可放在其他地点,通过物理链路与网络连接起来。无需应用服务器的干预,NAS设备允许用户在网络上存取数据,这样既可减小CPU的开销,也能显著改善网络的性能。

局限:

  • NAS没有解决与文件服务器相关的一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
  • 由于存储数据通过普通数据网络传输,因此易受网络上其它流量的影响。当网络上有其它大数据流量时会严重影响系统性能;
  • 由于存储数据通过普通数据网络传输,因此容易产生数据泄漏等安全问题;存储只能以文件方式访问,而不能像普通文件系统一样直接访问物理数据块,因此会在某些情况下严重影响系统效率,比如大型数据库就不能使用NAS。

NAS不一定是盘阵,一台普通的主机就可以做出NAS,只要它自己有磁盘和文件系统,而且对外提供访问其文件系统的接口(如NFS,CIFS等),它就是一台NAS。常用的windows文件共享服务器就是利用CIFS作为调用接口协议的NAS设备。一般来说NAS其实就是处于以太网上的一台利用NFS,CIFS等网络文件系统的共享服务器。至于将来会不会有FC网络上的文件提供者,也就是FC网络上的NAS,就等日后再说了。

注解:

  • NFS(NETWORK FILE SYSTEM) 适用于LINUX&UNIX系统
  • CIFS(Common Internet FILE SYSTEM)适用于windows系统

2.4 DAS/NAS/SAN协议对比

  • NAS:用户通过TCP/IP协议访问数据,采用业界标准文件共享协议如:NFS、HTTP、CIFS实现共享。
  • SAN:通过专用光纤通道交换机访问数据,采用SCSI、FC-AL接口。
  • NAS和SAN最本质的不同就是文件管理系统在哪里,SAN结构中,文件管理系统(FS)还是分别在每一个应用服务器上;而NAS则是每个应用服务器通过网络共享协议(如:NFS、CIFS)使用同一个文件管理系统。换句话说:NAS和SAN存储系统的区别是NAS有自己的文件系统管理。

SAN\NAS的区别:

可以这样来比作:SAN是一个网络上的磁盘;NAS是一个网络上的文件系统。其实根据SAN的定义,可知SAN其实是指一个网络,但是这个网络里包含着各种各样的元素,主机、适配器、网络交换机、磁盘阵列前端、盘阵后端、磁盘等。长时间以来,人们都习惯性的用SAN来特指FC,特指远端的磁盘。那么,一旦设计出了一种基于FC网络的NAS,而此时的SAN应该怎样称呼?所以,在说两者的区别时,用了一个比方,即把FC网络上的磁盘叫做SAN,把以太网络上的文件系统称为NAS,我们可以这样简单来理解。

普通台式机也可以充当NAS。NAS必须具备的物理条件有两条,第一,不管用什么方式,NAS必须可以访问卷或者物理磁盘;第二,NAS必须具有接入以太网的能力,也就是必须具有以太网卡。

显然,NAS架构的路径在虚拟目录层和文件系统层通信的时候,用以太网和TCP/IP协议代替了内存,这样做不但增加了大量的CPU指令周期(TCP/IP逻辑和以太网卡驱动程序),而且使用了低俗传输介质(内存速度要比以太网快得多)。而SAN方式下,路径中比NAS方式多了一次FC访问过程,但是FC的逻辑大部分都由适配卡上的硬件完成,增加不了多少CPU的开销,而且FC访问的速度比以太网高,所以我们很容易得出结论,如果后端磁盘没有瓶颈,那么除非NAS使用快于内存的网络方式与主机通信,否则其速度永远无法超越SAN架构。但是如果后端磁盘有瓶颈,那么NAS用网络代替内存的方法产生的性能降低就可以忽略。比如,在大量随记小块I/O、缓存命中率极低的环境下,后端磁盘系统寻到瓶颈达到最大,此时前端的I/O指令都会处于等待状态,所以就算路径首段速度再快,也无济于事。此时,NAS系统不但不比SAN慢,而且由于其优化的并发I/O设计和基于文件访问而不是簇块访问的特性,反而可能比SAN性能高。

既然NAS一般情况下不比SAN快,为何要让NAS诞生呢?既然NAS不如SAN快,那么为何还要存在呢?具体原因如下:

  • NAS的成本比SAN低很多。前端只使用以太网接口即可,FC适配卡以及交换机的成本相对以太网卡和交换机来说非常高的。
  • NAS可以解决主机服务器上的CPU和内存资源。NAS适用于cpu密集的应用环境。
  • NAS由于利用了以太网,所以可扩展性很强,且容易部署。
  • NAS设备一般都提供多种协议访问数据,而SAN只能使用SCSI协议访问。
  • NAS可以在一台盘阵上实现多台客户端的共享访问,包括同时访问某个目录或文件。而SAN方式下,除非所有的客户端都安装了专门的集群管理软件,否则不能将某个lun共享,强制共享会损坏数据。
  • 经过特别优化的NAS系统,可以同时并发处理大量客户端的请求,提供比SAN方式更方便的访问方法。
  • 多台主机可以同时挂接NFS上的目录,那么相当于减少了整个系统中文件系统的处理流程,由原来的多个并行处理转化成了NFS上的单一实例,简化了系统冗余度。

显然,NAS对于大块顺序IO密集的环境,要比SAN慢一大截,原因是经过大量IO累积之后,总体差别就显出来了。不过,如果要用10G以太网,无疑要选用NAS,因为底层链路的速度毕竟是目前NAS的根本瓶颈。此外,如果是高并发随机小块I/O环境或者共享访问文件的环境,NAS会表现出很强的相对性能。如果SAN主机上的文件系统碎片比较多,那么读写某个文件时便会产生随机小块IO,而NAS自身文件系统会有很多优化设计,碎片相对较少。CPU密集型的应考虑使用NAS。

  • NAS以文件的形式+LAN连接存储介质;
  • 而SAN以块形式+光纤连接存储介质。

三、讨论

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn