存储简介

存储简介

简述历史

存储顾名思义就是存放数据的方式,自从人类文明以来,我们可以将信息写入竹简,造纸术、活字印刷等,近代随着电子信息的发展,存储发生的变化,穿孔带,软盘,硬盘,磁盘,U盘等各种存储设备应运而生。同时各种磁盘的组合形成的磁盘阵列,可以存储更大的数据。随着海量数据的发展,数据朝向TB级,PB级,EB级的方向发展,简单的硬盘容量已经不能满足需求了,因此,出现了云存储。

云存储的产品

•块存储 只负责数据的读取和写入,性能较高,适用于响应时间要求较高的系统,如数据库系统,直接对硬盘设备的操作,不依赖于文件系统。一般应用于关键业务和一些极端敏感数据的业务中,常见于高端存储。•文件存储 基于文件系统的一种设备,有目录和文件的层次结构,可以多个系统间共享文件,但是在网络传输中,上传下载速度较慢。其具有丰富的共享接口,存储一些非结构化的数据,依赖于想NFS/CIFS/POSIX等接口的文件系统。•对象存储 将存储的内容+元数据看成一个对象,其中元数据包含系统级的元数据和自定义的元数据,将对象存储到一个存储桶中,利用键值对的形式进行存储,具有唯一的ID。对象存储一般将元数据与内容分开存放,元数据存放到元数据服务器中,数据可以分别存放到多个设备中,由对象存储设备来管理。具有较高的扩展性,存储非结构化数据,操作管理简单,应用于多种场景。比如:网盘、备份、归档等。

对象存储文件系统读访问流程: 1)客户端应用发出读请求; 2)文件系统向元数据服务器发送请求,获取要读取的数据所在的OSD; 3)然后直接向每个OSD发送数据读取请求; 4)OSD得到请求以后,判断要读取的Object,并根据此Object要求的认证方式,对客户端进行认证,如果此客户端得到授权,则将Object的数据返回给客户端; 5)文件系统收到OSD返回的数据以后,读操作完成。

传统模型与OSD的对比图

20160726091403319.png

![u=1341696150,2655810654&fm=173&app=49&f=JPEG.jpg](https://upload-images.jianshu.io/upload_images/7898366-ea1672982b6d779e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

对象存储结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端):

分布式存储

分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

分布式存储图

u=1341696150,2655810654&fm=173&app=49&f=JPEG.jpg

上图分布式存储中,如果客户端需要从某个文件读取数据,首先从namenode获取该文件的位置(具体在哪个datanode),然后从该位置获取具体的数据。在该架构中namenode通常是主备部署,而datanode则是由大量节点构成一个集群。由于元数据的访问频度和访问量相对数据都要小很多,因此namenode通常不会成为性能瓶颈,而datanode集群可以分散客户端的请求。因此,通过这种分布式存储架构可以通过横向扩展datanode的数量来增加承载能力,也即实现了动态横向扩展的能力。

完全无中心架构---计算模式(Ceph)

4f9ab16c-712d-4443-8230-e923bb4b9821.jpg

如图是Ceph存储系统的架构,在该架构中与HDFS不同的地方在于该架构中没有中心节点。客户端是通过一个设备映射关系计算出来其写入数据的位置,这样客户端可以直接与存储节点通信,从而避免中心节点的性能瓶颈。

图4 Ceph无中心架构 在Ceph存储系统架构中核心组件有Mon服务、OSD服务和MDS服务等。对于块存储类型只需要Mon服务、OSD服务和客户端的软件即可。其中Mon服务用于维护存储系统的硬件逻辑关系,主要是服务器和硬盘等在线信息。Mon服务通过集群的方式保证其服务的可用性。OSD服务用于实现对磁盘的管理,实现真正的数据读写,通常一个磁盘对应一个OSD服务。 客户端访问存储的大致流程是,客户端在启动后会首先从Mon服务拉取存储资源布局信息,然后根据该布局信息和写入数据的名称等信息计算出期望数据的位置(包含具体的物理服务器信息和磁盘信息),然后该位置信息直接通信,读取或者写入数据。

ACL

访问控制列表(ACL)是基于资源的访问策略选项之一 ,可用来管理对存储桶和对象的访问。使用 ACL 可向其他主账号、子账号和用户组,授予基本的读、写权限。

对象

对象(Object)是OBS中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息(元数据)的集合体。用户上传至OBS的数据都以对象的形式保存在桶中。 对象包括了Key,Metadata,Data三部分: Key:键值,即对象的名称,为经过UTF-8编码的长度大于0且不超过1024的字符序列。一个桶里的每个对象必须拥有唯一的对象键值。 Metadata:元数据,即对象的描述信息,包括系统元数据和用户元数据,这些元数据以键值对(Key-Value)的形式被上传到OBS中。 系统元数据由OBS自动产生,在处理对象数据时使用,包括Date,Content-length,Last-modify,Content-MD5等。 用户元数据由用户在上传对象时指定,是用户自定义的对象描述信息。 Data:数据,即文件的数据内容。 通常,我们将对象等同于文件来进行管理,但是由于OBS是一种对象存储服务,并没有文件系统中的文件和文件夹概念。为了使用户更方便进行管理数据,OBS提供了一种方式模拟文件夹。通过在对象的名称中增加“/”,例如“test/123.jpg”。此时,“test”就被模拟成了一个文件夹,“123.jpg”则模拟成“test”文件夹下的文件名了,而实际上,对象名称(Key)仍然是“test/123.jpg”。 上传对象时,可以指定对象的存储类别,若不指定,默认与桶的存储类别一致。上传后,对象的存储类别可以修改。

桶(Bucket)是OBS中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。 每个桶都有自己的存储类别、访问权限、所属区域等属性,用户可以在不同区域创建不同存储类别和访问权限的桶,并配置更多高级属性来满足不同场景的存储诉求。

你可能感兴趣的:(存储简介)