块存储,文件存储及对象存储 比较

本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景。
通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。


一. 块存储:DAS,SAN
块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。

架构:

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

          2. SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。

典型设备:磁盘阵列,硬盘,虚拟硬盘

使用角度:块级的存储如果是第一次使用,那么必须需要进行一次格式化的操作,创建出一个文件系统,然后才可以使用,新买的U盘、硬盘、或者新发现的iSCSI设备等
技术角度:

         1. 对于块级来说如果你要通过块级来访问一段数据的话,你自己需要知道这些数据具体是存在于那个存储设备上的位置上,也就是说块级的存储中要求程序自己保存元数据。
         2. 块存储接口的操作对象是二进制数据,物理存储位置是硬盘 (通过逻辑目录 找到对应分区,然后找到对应存储块存储。)
         3. 块存储就是在物理层这个层面对外提供服务,使用它的系统,有用自己的文件系统格式化。这样一旦被一个系统使用,就独占了。
访问协议:块存储,主要操作对象是磁盘。以 SCSI 为例,主要接口有 Read/Write/Read Capacity/Inquiry等。FC,iSCSI,也是块存储协议。和文件存储相比,没有文件和目录树的概念,一般协议也不会定义磁盘的创建和删除操作。协议更注重传输控制。

优点:

         1. 可以将多块廉价的硬盘组合起来,成为一个大容量的逻辑盘对外提供服务,提高了容量
         2.  写入数据的时候,由于是多块磁盘组合出来的逻辑盘,所以几块磁盘可以并行写入的,提升了读写效率。
         3. 很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
缺点:
        1. 采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要买光纤交换机,造价成本高。
        2. 主机之间的数据无法共享,在服务器不做集群的情况下,块存储裸盘映射给主机,再格式化使用后,对于主机来说相当于本地盘,那么主机A的本地盘根本不能给主机B去使用,无法共享数据。
        3. 不利于不同操作系统主机间的数据共享:另外一个原因是因为操作系统使用不同的文件系统,格式化完之后,不同文件系统间的数据是共享不了的。


二. 文件存储:
通常NAS产品都是文件级存储,文件存储其实普通拿一台服务器/笔记本,只要装上合适的操作系统与软件,就可以架设FTP与NFS服务了,架上该类服务之后的服务器,就是文件存储的一种了。

架构:NAS(Network Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。它采用NFS或CIFS命令集访问数据,以文件为传输协议,可扩展性好、价格便宜、用户易管理。目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD),构建存储系统,每个对象存储设备具备一定的职能,能够自动管理其上的数据分布。
典型设备:FTP、NFS服务器,SamBa

使用角度:块级的存储设备经过格式化以及挂载(win 会自动挂载)之后,你就将一个块级的存储变成了文件级的存储
技术角度:

         1. 如果需要自己保存元数据的话就太麻烦了,上文也说了,元数据本身也是数据,实际上元数据也是存储在硬盘上的,那么如何访问元数据这个数据呢其实,文件级的元数据是存储在固定位置的,存储的位置和方式是大家事先约定好的,这个约定就叫做文件系统,例如EXT4、FAT32、XFS、NTFS等。借助于这些约定,我们就不用自己去维护一个表去记录每一份数据的具体存储位置了。我们只需要直到我们存储的文件的路径和名字就好了
         2. 操作对象是目录和文件,物理存储位置 是由 文件服务器对应的文件系统来决定的(比块存储多一个过程:判断参数文件 应该存储到哪个逻辑目录上。)
        3. 文件存储,就是在文件系统一层对外提供服务,系统只用访问文件系统一级就可以,各个系统都可以根据接口取访问。
访问协议:文件存储,主要操作对象是文件和文件夹。以 NFS 为例,文件相关的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME 等等,文件夹相关的接口包括:MKDIR/RMDIR/READDIR 等等。同时也会有 FSSTAT/FSINFO 等接口用于提供文件系统级别的信息。POSIX,SAMBA 等也是文件存储协议。协议更注重接口的灵活,以及访问权限控制。

优点:

         1. 造价交低:随便一台机器就可以了,另外普通以太网就可以,根本不需要专用的SAN网络,所以造价低。
          2. 方便文件共享:例如主机A(WIN7,NTFS文件系统),主机B(Linux,EXT4文件系统),想互拷一部电影,本来不行。加了个主机C(NFS服务器),然后可以先A拷到C,再C拷到B就OK了
缺点:读写速率低,传输速率慢:以太网,上传下载速度较慢,另外所有读写都要1台服务器里面的硬盘来承担,相比起磁盘阵列动不动就几十上百块硬盘同时读写,速率慢了许多。

 

三. 对象存储:
总体上来讲,对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。

使用角度:平时最常见的一般就是百度网盘,其后端对接的就是对象存储。还有就网页上的图片、视频,其本身也是存储在对象存储的文件系统中的
技术角度:

           1. 对象级存储,文件级的元数据实际上是和数据放在一起的,就像一本书每本书都有一个目录,这个目录描述的是这本书上内容的索引,目录就是书内容的“元数据”,而对象存储,会有一本书只放目录(元数据),其他更多的书只有内容,并且内容都是被拆分好的一段一段的,
           2. 对象存储接口的操作对象是对象,存储位置是大型分布式服务器. 
           3. 对象存储,也是文件系统一级提供服务,只是优化了目前的文件系统,采用扁平化方式,弃用了目录树结构,便于共享,高速访问。
访问协议:对象存储,主要操作对象是对象(Object)。以 S3 为例,主要接口有 PUT/GET/DELETE 等。和文件和对象存储相比,没有随机读写的接口。和文件存储相比,没有目录树的概念。协议更注重简洁。
典型设备:内置大容量硬盘的分布式服务器

 

四. 为什么块级的存储性能最好?
         首先要明确一点,要明确,每次在发生数据读取访问的时候,实际上对应系统的底层是发生了多次IO的.
         然后,相对于其它的存储方式,上文也提到过,块存储的元数据是有操作系统自己管理的,也就是说整个文件系统(元数据)是存在在操做系统的内存中的,这样操作系统在进行元数据管理的时候可以直和自己的内存打交道。而其它类型的文件系统如文件级存储,它的文件系统是存在于另一台服务器上的,这样在进行元数据访问时就需要从网络进行访问,这样要比从内存访问慢得多。
          总结来讲,就是块级存储的元数据在系统本机中,在进行元数据访问(每次读写文件实际都会在操作系统底层发生),会更快,因为其它的级别的存储元数据都要通过网络访问。


五. 为什么还要使用块存储和文件存储
        1.有一类应用是需要存储直接裸盘映射的,比如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对了裸盘进行格式化,因此不能采用其他已经被格式化为某种文件系统的存储。此类更适合块存储。
         2.对象存储的成本比普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了作文件共享的时候,直接用文件存储的形式就好了,性价比高。

参考:https://www.cnblogs.com/kisf/articles/6485783.html

发布了222 篇原创文章 · 获赞 16 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览