随着主机、磁盘、网络等技术的发展,对于存储空间和性能的要求越来越高,服务器的内置磁盘往往不足以满足存储需的要求。因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间。
网络储存设备 (Network Attached Storage,NAS),NAS是通过IP网络访问的文件系统,可以理解为硬盘+文件系统软件的组合。NAS存储设备可以直接连接在以太网中,之后在该网络域内的不同类型操作系统主机都可以实现对该设备的访问。NAS不一定是盘阵,一台普通的主机就可以做出NAS,只要它自己有磁盘和文件系统,而且对外提供访问其文件系统的接口(如NFS,CIFS等),它就是一台NAS。使用者可以通过某种方式(例如linux下的mount命令)将存储服务挂载到本地进行访问,在本地呈现的就是一个文件目录树。我们所熟悉的NFS其实就是一个NAS存储形式,NFS服务器就是NAS存储设备。
NAS有一个比较大的优势是真正即插即用。NAS的应用非常灵活,NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内。
SAN存储 (存储区域网络Storage Area Network)也即存储区域网络,这个是通过某种交换机(例如光纤交换机或者IB交换机等)连接存储阵列和服务器主机等设备,形成一个专用的存储网络。其概念的核心是形成一个存储网络,该网络是专有网络,所谓的专用存储网络主要体现在通信设备和协议上,目前主流的是FC-SAN,也就是基于FC设备及通信协议的存储区域网络。因为光纤网络的成本太高并且随着万兆网的普及,后面又发展出一种基于以太网的SAN存储形式,这个就是我们通常所说的iSCSI。这种存储形式其实是利用TCP/IP协议实现了对SCSI协议的封装。主机端相当于CS架构的客户端,而存储端则是服务端。该种方式SAN存储的优点是实现存储网络与传统以太网的互联互通。
专业的存储厂商都是在磁盘阵列的上对外提供nas或者san服务。在san上封装一层文件系统就成了nas,磁盘阵列一般结构如下:
在阵列中通常包含一个机头,这个是存储系统中最为核心的部件。通常在机头中有包含两个控制器,这两个控制器实现互备的作用,避免硬件故障导致整个存储系统的不可用。在该机头中通常包含前端端口和后端端口,前端端口用户为服务器提供存储服务,而后端端口用于扩充存储系统的容量。通过后端端口机头可以连接更多的存储设备,从而形成一个非常大的存储资源池。
机头中是整个存储系统的核心部件,整个存储系统的高级功能都在其中实现。控制器中的软件实现对磁盘的管理,将磁盘抽象化为存储资源池,然后划分为LUN提供给服务器使用。这里的LUN其实就是在服务器上看到的磁盘。当然,一些集中式存储本身也是文件服务器,可以为服务器提供共享文件服务。无论如何,从上面我们可以看出集中式存储最大的特点是有一个统一的入口,所有数据都要经过这个入口,这个入口就是存储系统的机头。
1、nas对外以文件系统的方式对外提供服务,外在表现就会通过打开文件,文件读写等接口进行io操作。san对外呈现的是一个磁盘,用户根据自己需求使用磁盘,以块设备偏移为地址进行io操作。
2、nas直接连接入以太网,通过TCP/IP协议访问数据,采用标准文件共享协议如:NFS、CIFS实现共享。San则是通过光纤连接服务器,协议也是FC协议,但是后来也支持以iscsi协议连接以太网。
3、san的性能要好于nas,根据使用需求选择合适的存储方式。
所谓统一存储只是将上述两种方式整合到一台物理设备中,对外提供SAN和NAS服务,实现FC SAN与IP SAN、各类存储介质的完美融合。
分布式存储是可以将分散开来的磁盘聚集起来组成一个虚拟的存储设备,在不增加专业的存储设备情况下为企业提供大容量高性能的存储服务。为什么会产生分布式存储?还是因为传统存储存在几点问题:
分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
分布式存储是一个大的概念,其包含的种类繁多,除了传统意义上的分布式文件系统、分布式块存储和分布式对象存储外,还包括分布式数据库和分布式缓存等。本文局限在分布式文件系统等传统意义上的存储架构,对于数据库等不做介绍。
分布式存储分为三大类:块存储、文件存储、对象存储。
这三者的本质差别是使用数据的“用户”不同:块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库;文件存储的用户是自然人;对象存储的用户则是其它计算机软件。
文件存储:分布式存储中的文件存储就是前面讲的nas,这里不再详述。
块存储:分布式存储中的块存储和前面讲的san存储一样,这里也不再详述。
对象存储:对象存储出现得晚一些,相关产品一直也不温不火。一直到云计算和大数据的火爆,才慢慢进入公众视野。前面说到的块存储和文件存储,基本上都还是在专有的局域网络内部使用,而对象存储的优势场景却是互联网或者公网,主要解决海量数据,海量并发访问的需求。例如网盘就是典型的对象存储。对象存储的访问通常是在互联网,走HTTP协议,性能方面,单独看一个连接的是不高的(还要解决掉线断点续传之类的可靠性问题),主要强大的地方是支持的并发数量,聚合起来的性能带宽就非常可观了。
之所以出现了对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬它俩各自的优点。对象做为一个整体进行整存整取,不需要像文件系统那样将数据切片管理元数据,我们只需要给他一个唯一标识,使用这个表示来查询和删除该对象。因此对象存储只能存取删(put/get/delete),而没有修改。
WIKIBON对Server SAN 的定义是:Server SAN is defined as a pooled storage resource comprising more than one storage device directly attached to separate multiple servers (more than one).
简单说Server SAN是有多个独立的服务器带的存储组成的一个存储资源池。wikibon把现在的存储的架构分成下面几个部分:
DAS,SAN/NAS大家都比较熟悉,前面也有介绍。云存储现在也广为人知了,比如亚马逊的AWS,国内的阿里云,大家应该也了解。但Hyperscale指的是超大规模存储,不是我们要介绍的忽略。最后一类存储架构,就是Server SAN了。这类存储最著名的就是VMWARE VSAN了,当然也包含HP的StoreVirtual VSA,华为的FusionStorage都算这种类型。根据上面的图我们可以看到Server SAN和传统SAN、分布式存储的区别。Server SAN使用通用硬件+软件,有着良好的性价比和扩展性。