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

块存储主要是对磁盘阵列(内含多块硬盘)做RAID操作或者LVM操作,逻辑划分出N块Logic盘并映射给主机使用,操作系统会识别到N块硬盘,但是无法感知到底是逻辑盘还是物理盘,所以还是会对其进行分区和格式化(无法共享数据)。

每块逻辑盘实际上是由多块硬盘共同组成,在读写数据的时候,几块物理硬盘可以并行寻址和操作,大大提高了IO效率。

文件存储:通过安装特定的操作系统与软件,就可以架设FTP与NFS服务了(作为共享文件存储)。由于所有的读写操作都必须由一台服务器里的硬盘来承担,所以速度要慢很多。

对象存储:克服了块存储和文件存储的缺点,发扬了它们各自的优点。既能够快速读写文件,又能够在多台主机之间实现文件共享。

对象存储主要是将图片、视频、文档、邮件等document作为一个个对象,每个对象由属性(Metadata)和内容组成,元数据存储在控制节点(元数据服务器,主要是记录对象的数据被打散到了哪些分布式服务器中),真正负责存储数据的分布式服务器叫OSD(Object Storage Device对象存储设备)。当用户访问对象时,会首先访问元数据服务器,得知具体的位置之后,才会去访问对应的OSD,进行并行的读写。

对象存储实质上是键值存储,每一级的每个元素,例如某个容器或者某个对象,在系统中都有唯一的标识,用户通过这个标识来访问容器或者对象。它提供了RESTful API供用户进行Bucket(存储空间)和对象的操作,且数据组织结构是扁平的。比较知名的对象存储服务有aliyun OSS,AWS的S3和Openstack Swift等。阿里云对象存储服务OSS的API网址为:https://help.aliyun.com/document_detail/31948.html

 

如今的存储系统中,动辄数百万、千万甚至上亿个文件/对象,单位时间内的访问次数和并发访问量也达到了前所未有的量级,在这种情况下,目录树(传统的文件系统)会给存储系统带来很大的开销和诸多问题,成为系统的瓶颈。反观目录结构的初衷——数据管理,如今作用非常有限,我们已经很难通过目录的划分对文件进行归类和管理了,因为一个文件最终只能放到一个文件夹下,作为目录树的叶子节点存在,而文件的属性是多维度的。目前各类应用中广泛采用元数据检索的方式进行数据的管理,通过对元数据的匹配得到一个Index或者Key,再根据这个Index或者Key找到并读取数据,所以,对象存储的扁平数据组织形式和K/V访问方式更能满足数据管理的需求。

在微信或者新浪微博中,用户会大量的上传、读 视频/图片,因此每一个帐号对应一个Bucket,该帐号

上传的每个视频/图片都以对象的形式存储在Bucket中,然后依据时间戳进行排序和展示。

原文地址:https://www.cnblogs.com/james111/p/8385698.html