如果要实现一个计算机,那么这个计算机一定要有以下的三个部分构成:计算、存储和网络。计算一般指的是CPU和内存的搭配,存储一般就是指硬盘了,网络指的是网卡的管理和配置。
本篇文章,主要讲解有关块存储、文件存储、对象存储这三者之间的对比。每一种存储都有对应的实现方法。
块存储又有两种常见的形式,DAS和SAN。DAS即直接连接存储(Direct Attached Storage),SAN即存储区域网络(Storage Area Network)。
块存储是我们最常用的一种存储模式。比如个人PC上的硬盘,服务器上的硬盘,外置设备通过SCSI或者FC接口直接连接到电脑上的。
这种存储方式有一种很大的缺陷,其存储性能瓶颈来自于自家PC电脑或者服务器的卡槽的多少。比如我们的笔记本一般只能装一个硬盘+SSD基本上已经没有位置再做扩展了。也就是DAS的性能瓶颈来自于主板的卡槽数量。很难做scale out扩展(即横向扩展)。
事实上,这种DAS存储模式,一般在中小型企业汇总应用十分广泛。它更依赖主机的操作系统来实现数据的IO读写、数据管理、数据备份等工作。
但是这种存储模式也存在一定的缺点。比如可管理性差、弹性扩展能力弱,难以跟上IT发展趋势等问题。举例来讲,一台服务器/电脑只会配备固定容量的DAS存储,那么如果容量不够用,存储空间太小,就很难从内部着手实现弹性扩展(外部扩展容量也存在弊端),如果存储空间太大还会导致资源浪费,这一点在服务器领域尤为明显。
补充知识点:SCSI接口是什么
SCSI(Small Computer System Interface)小型计算机系统接口,一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。
SCSI是一种计算机系统接口的标准
SCSI是一种I/O技术
SCSI规范了一种并行的I/O总线和相关的协议
SCSI的数据传输方式是以块的方式进行的
对于用户来说,SAN好比是一块大磁盘,用户可以根据需要随意将SAN格式化成想要的文件系统来使用。SAN在网络中通过iSCSI(IPSAN)协议连接,属block及存储,但可扩展性较差。
根据SAN的实现形式来看,其实是通过光交换机,将各块硬盘连接起来,然后通过ISCSI协议来传递数据。
在我看来,其实是通过FC交换机解决了机器主板只有几个卡槽的问题,利用FC交换机,就仿佛实现了这样一种机制,即我们拥有一个无限卡槽的主板,上面都是接口,你可以通过这个接口插上你的硬盘。
SAN是一个采用网状通道(简称FC)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。
我们可以从定义中看出,这是一个专用于企业级应用的存储方式。可以简单理解为一个在高度网络中,提供在计算机与存储系统之间的数据传输。
从理论上来讲,SAN支持数以百计的磁盘,提供了海量的存储空间,解决了大容量存储问题;从逻辑层面,这个海量空间可以按需要分成不同大小的LUN,再分配给服务器,也解决了只需要小容量存储的问题。
可以说,SAN的出现,适应了信息化发展的大趋势,它将计算与存储分离,增强了存储扩张的弹性。毕竟如今联网设备越来越多,数据量越来越大,我们对存储需求也越来越强。SAN“拉帮结伙”的特性让存储弹性更大,更方便扩展容量。
同时,介于独特的存储结构,SAN需要通过光纤交换机连接存储阵列和服务器,建立专用数据存储的网络。
再说说文件集存储,典型代表–NAS。对于用户来说,NAS好比是一个共享文件夹,文件系统已经存在,用户可以直接将自己的数据存放在NAS上。NAS以文件为传输协议,开销很大,不利于在高性能集群中使用。
NAS是一种通过网络达成存储目的的设备,NAS传输数据依靠的是TCP/IP网络协议栈,这是NAS存储于上文的DAS和SAN存储最大的不同之处。
NAS是标准的文件级存储方法,采用网络技术(TCP/IP、ATM、FDDI),通过网络交换机连接存储系统和服务器主机来建立存储私网。其主要特征是把存储设备、网络接口和以太网技术集成在一起,直接通过以太网网络存取数据。能够快速实现部门级存储容量需求与文件传输需求。
实现文件存储的方式有很多,其中比较常用的有以下的几种,并且经常运用在企业运用中。ftp协议、nfs协议、samba协议等。
比较下块存储和文件存储的异同,举个例子而言,有三块硬盘,使用光交换机连接之后,把光交换机和服务器进行直接连接,服务器就会单纯的以为自己是有一块儿这么大的硬盘的,要使用的话,需要对这块硬盘进行分区,格式化为某种文件系统,然后就可以使用了;同样是三块硬盘,我分别把这三块硬盘装在主机A,B,C上,分区、格式化为某种文件系统,比如格式化为XFS文件系统,然后我以共享文件夹的形式把主机A的/data目录使用NFS共享给B和C,这就是文件存储。
数据传输方式不同:块存储依靠SCSI或者ISCSI接口,以块方式交换数据,数据传输速度快;文件存储依靠TCP/IP协议栈进行数据传输,网络带宽是I/O的性能瓶颈。
文件系统的位置:NAS和SAN最本质的区别就是文件管理系统在哪里,如图所示,SAN结构中,文件管理系统(FS)分别在每一个应用服务器上面,而NAS则是每个应用服务器通过网络共享协议,使用同一个文件管理系统。即NAS和SAN存储系统的区别就是NAS有自已的文件管理系统。
使用方式不同:块存储设备使用的时候,还需要进一步进行分区,将设备格式为某种文件系统才可以继续使用;而文件存储就相当于你多了一个共享文件夹,文件存储带着自己本身的文件系统。
总体上来讲,对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。
对象存储结构:
核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。
对象存储结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端):
对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
对象存储设备具有一定的智能,它有自己的CPU、内存、网络和磁盘系统,OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能:
(1) 数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。
(2) 智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。
(3) 每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。
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不一致引发的问题。
为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client,通常提供POSIX文件系统接口,允许应用程序像执行标准的文件系统操作一样。
对象存储文件系统的关键技术
1、分布元数据 传统的存储结构元数据服务器通常提供两个主要功能。
(1)为计算结点提供一个存储数据的逻辑视图(Virtual File System,VFS层),文件名列表及目录结构。
(2)组织物理存储介质的数据分布(inode层)。对象存储结构将存储数据的逻辑视图与物理视图分开,并将负载分布,避免元数据服务器引起的瓶颈(如NAS系统)。元数据的VFS部分通常是元数据服务器的10%的负载,剩下的90%工作(inode部分)是在存储介质块的数据物理分布上完成的。在对象存储结构,inode工作分布到每个智能化的OSD,每个OSD负责管理数据分布和检索,这样90%的元数据管理工作分布到智能的存储设备,从而提高了系统元数据管理的性能。另外,分布的元数据管理,在增加更多的OSD到系统中时,可以同时增加元数据的性能和系统存储容量。
2、并发数据访问 对象存储体系结构定义了一个新的、更加智能化的磁盘接口OSD。OSD是与网络连接的设备,它自身包含存储介质,如磁盘或磁带,并具有足够的智能可以管理本地存储的数据。计算结点直接与OSD通信,访问它存储的数据,由于OSD具有智能,因此不需要文件服务器的介入。如果将文件系统的数据分布在多个OSD上,则聚合I/O速率和数据吞吐率将线性增长,对绝大多数Linux集群应用来说,持续的I/O聚合带宽和吞吐率对较多数目的计算结点是非常重要的。对象存储结构提供的性能是目前其它存储结构难以达到的,如ActiveScale对象存储文件系统的带宽可以达到10GB/s。
存储类型 | 数据传输方式 | 适应场景 | 优点 |
---|---|---|---|
块存储 | SCSI/ISCSI接口 | 小型机房 | 速度快 |
文件存储 | NFS/FTP等 | 局域网环境 | 可扩展性高 |
对象存储 | http协议 | 互联网环境,异地存储 | 速度快,且扩展性高,高可用 |
对象存储相比块存储、文件存储的一个最本质的区别是无层次结构。我们都知道,一般的存储(比如你自己的PC的文件系统)是有一个目录树概念的,要找到一个文件需要先找到这个文件所属的目录。而对象存储是没有文件目录树这个概念的,所有的数据都在同一个层次中,仅仅通过数据的唯一地址标识来识别并查找数据。
块存储: 是和主机打交道的, 如插一块硬盘
文件存储: NAS, 网络存储, 用于多主机共享数据
对象存储: 跟你自己开发的应用程序打交道, 如网盘
NFS深入了解
SI/iSCSI及SAS、NAS、SAN的基本介绍
NAS网络存储与SAN、DAS的区别
NFS工作原理
什么是对象存储