块存储、文件存储、对象存储

W_法 4月前 ⋅ 424 阅读

        杨传辉老师在《大规模分布式存储系统》一书中将块、文件、对象作为分布式文件系统的某一分类描述具有误导性。杨老师的“对象”、“块”、“文件”是针对数据存储类型进行的划分,不可与“块存储”、“文件存储”、“对象存储”中的概念进行混淆。简单了解“块存储”、“文件存储”和“对象存储”后,可对两者进行明确的划分。

块存储

       块(block)存储是主流存储类型之一,块存储面向磁盘,基于磁盘阵列构建。典型的块存储类型有:DAS(Direct Attach Storage,直连式存储)和SAN(Storage Area Network,存储区域网络)。

        DAS是直接连接于主机服务器的一种存储方式,每台主机服务器有独立的存储设备,每台主机服务器的储存设备无法互通。通常将DAS用在单一网络环境下,且数据交换量不大,性能要求不高的环境下,是应用较早的技术实现。

        SAN是一种用高速(光纤)网络联接主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联结方式,如 SCSI,Fibre- Channels)(光纤通道)。一般而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特点是代价高,性能好。例如电信、银行的大数据量关键应用。它采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地。

        http://forum.huawei.com/enterprise/zh/thread-230793-1-1.html

文件存储

        文件存储面向FTP服务器或NFS服务器,典型的文件存储是NAS(Network Attached Storage,网络附加存储)。NAS是一套网络储存设备,通常是直接连在网络上并提供资料存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特点是性价比高。例如教育、政府、企业等数据存储应用。它以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统。

对象存储

        对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。对象存储是为解决海量大数据的存储问题而出现。比如存储万亿级的视频、图片,照片等。对象存储可以存储海量非结构化数据,然后进行大数据分析。

        对象存储采用key-volume的扁平化存储架构设计,使用简单,调用API就能进行数据存储和读取。这种扁平化组织形式不仅在对象存储中应用,在支持分布式的NoSQL数据库,比如Redis,Mongo DB,Cassandra等也均有应用。从这各个角度来说,NoSQL的出现也打破了数据库和文件存储的天然屏障(原有关系数据库不支持存放太大数据,而现在像Mongo DB这种NoSQL支持支持存储“文档”类型数据)。

        http://stor.51cto.com/art/201712/561063.htm?mobile

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

        对象存储的定义就把元数据管理和数据存储访问分开在不同的节点上,多个节点应对多并发的访问。可见,对象存储在设计时就是一个支持分布式的存储产品。

对象存储按照结构可分为:对象、对象存储设备、元数据服务器、客户端:

  1. 对象

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

  1. 对象存储设备

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

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

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

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

  1. 元数据服务器(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. 客户端

        为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client,通常提供POSIX文件系统接口,允许应用程序像执行标准的文件系统操作一样。

        http://forum.huawei.com/enterprise/zh/thread-230793-1-1.html

总结

        参照阿里云对“块存储”、“文件存储”、“对象存储”的介绍,本文对这些概念的区分相似度很高。https://www.alibabacloud.com/help/zh/doc-detail/63136.htm

       从网上找到一个“块存储”、“文件存储”、“对象存储”在系统分布图,很有代表意义。

        http://blog.sina.com.cn/s/blog_57f61b490102xr5n.html 

        从上图可知:

        (1)“块存储”面向磁盘,并在此基础上提供逻辑磁盘服务;“文件存储”面向文件,并提供文件服务;“对象存储”面向OSD,以提供POSIX文件接口的方式,对外提供对象服务;

        (2)诸如数据库、文件系统等均是建立在块存储之上;对象存储系统则可基于块存储或文件系统建立。

        在数据存储方式上,“块存储”、“文件存储”和“对象存储”也使用不同的数据结构。块存储的数据结构是数组,而文件存储是二叉树(各种树:B树、B+树、LCM树等),对象存储则是哈希表。

        http://blog.sina.com.cn/s/blog_57f61b490102xr5n.html 

        http://blog.sina.com.cn/s/blog_57f61b490102xr4a.html

        https://www.zhihu.com/question/21536660


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: