目录
块存储,操作对象是磁盘。存储协议是SCSI、iSCSI、FC。
?以 SCSI 为例,主要接口命令有 Read/Write/Read Capacity/Inquiry 等等。
文件存储,操作对象是文件和文件夹。存储协议是NFS、SAMBA(SMB)、POSIX等。
以NFS(大家应该都用过“网上邻居”共享文件吧?就是那个)为例,文件相关的接口命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等等,文件夹相关的接口命令包括:MKDIR/RMDIR/READDIR 等等。
对象存储,主要操作对象是对象(Object)。存储协议是S3、Swift等。
以 S3 为例,主要接口命令有 PUT/GET/DELETE 等。
看出来了吧?接口命令非常简洁,没有那种目录树的概念。
一句话:块存储--裸盘读写。文件存储--文件读写。对象存储--键值对存储。
更详细的说明见:《块存储、文件存储和对象存储的区别?》http://t.csdnimg.cn/Xj03z
????????在对象存储系统里,你不能直接打开/修改文件,只能先下载、修改,再上传文件。(如果大家用过百度网盘或ftp服务,一定可以秒懂。)
文件存储的最大特点,就是所有存储资源都是多级路径方式进行访问的。例如:
C:\Program Files (x86)\Tencent\WeChat\WeChat.exe
\\NJUST-Server\学习资料\通信原理\第一章作业.doc
数据管理方式的不同:
对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。
全局唯一标识符(UID),范例:
也就是用户数据本体。
?
Metadata叫做元数据,类似数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息。
举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等。
在传统的文件存储里,这类信息属于文件本身,和文件一起封装存储。而对象存储中,元数据是独立出来的,并不在数据内部封装。
元数据的好处非常明显,可以大大加快对象的排序,还有分类和查找。
?
这是对象存储的核心,具有自己的CPU、内存、网络和磁盘系统。它的主要功能当然是存储数据。同时,它还会利用自己的算力,优化数据分布,并且支持数据预读取,提升磁盘性能。
?
它控制Client和OSD的交互,还会管理着限额控制、目录和文件的创建与删除,以及访问控制权限。
?
提供文件系统接口,方便外部访问。
根据上面的架构可以看出,对象存储系统可以是一个提供海量存储服务的分布式架构。
?
?
容量无限大
?
分布式集群方式工作,各功能节点、集群都可以独立扩容。
?
数据安全可靠
分布式架构,多冗余存储(至少三个以上节点),实现异地容灾和资源隔离。
桶和对象都有ACL等访问控制策略,所有的连接都支持SSL加密,OBS系统会对访问用户进行身份鉴权。
使用方便
?
?
?存储非结构化数据。
结构化数据:表格
非结构化数据:一个一个文件(视频,图片……某个文件)
大部分的对象存储需求,并不是个人用户买来当网盘用,而且企业或政府用户用于系统数据存储。例如网站、App的静态图片、音频、视频,还有企业系统的归档数据等。
像这种数据,是通过程序内部的接口调用的。对象存储提供开放的REST API接口。
?
(以上摘抄or参考自:对象存储,为什么那么火?https://zhuanlan.zhihu.com/p/166289089)
?
文件存储、对象存储的区别之一是对象存储没有层次结构,那文件存储把文件都放在跟目录会和对象存储一样吗?
不能,因为文件存储和对象存储的关键区别在于数据管理方法的差异。
文件存储中,元数据(如读写权限、文件创建时间等)等信息和文件一体。
对象存储中,对象的元数据信息(比如对象的大小、类型、创建时间、访问权限等)是分开独立存储的,这样做的好处非常明显,可以大大加快对象的排序,还有分类和查找。
?
对象存储的网关是一种中间层,转义层,抽象层,将存储集群的数据读写API (可能是私有的自定义的)转义成常见的对象读取API (公认的标准的),供第三方调用。
? ?它允许客户端通过常见的数据访问协议(如文件级或块级协议)来使用基于对象的存储。这意味着网关可以把标准的文件和块存储调用翻译成对象存储的API调用。这样,基于文件系统或者块存储的应用程序可以无需重写就能与对象存储解决方案兼容和交互。
对象存储网关的主要需要来自于以下几个方面:
1. **兼容性与整合性**:现有的应用和系统很多都是基于传统的文件系统或者块存储设计的。对象存储网关能够帮助这些应用无缝地迁移到对象存储,无需重构应用程序代码。
2. **数据迁移**:网关能够帮助企业将他们的数据从传统存储解决方案平滑迁移到对象存储解决方案,这通常对于成本效益、扩展性和灵活性都有比较好的优势。
3. **功能扩展**:对象存储网关可以额外提供加密、缓存、数据压缩、去重以及传输优化等功能。
4. **抽象层**:应用程序可以通过与网关的接口交互,而无需关心对象存储的具体细节,如API的使用、认证机制等,网关为应用和存储层之间提供了一层抽象。
5. **多云策略**:在使用多个云服务商的情况下,不同的对象存储服务可能会有不同的API接口。网关可以提供统一的接口,简化不同对象存储之间的协作。
综上所述,对象存储的网关是一个很有用的中间件,特别是对于那些希望利用对象存储扩展性和成本效益,又不希望改动现有应用架构的企业来说。通过使用网关,他们可以相对平滑地过渡到对象存储,同时保持兼容性和扩展已有的功能。