关于对象存储的前世今生,运维一定要了解
关于对象存储的前世今生,运维一定要了解
转自 小枣君 高效运维
我们知道,在很长的一段时间里,这三种架构几乎统治了数据存储市场。所有行业用户的数据存储需求,都是在这三者中进行选择。
然而,随着时代的发展,一种新的数据存储形态诞生,开始挑战前面三者的垄断地位。
没错,它就是云计算时代存储技术的新网红——对象存储。
之前小枣君介绍过,DAS和SAN是基于物理块的存储方式,而NAS是基于文件的存储方式。
在 DAS 和 SAN 中,存储资源就像一块一块的硬盘,直接挂载在主机上,我们称之为块存储。
而在 NAS 中,呈现出来的是一个基于文件系统的目录架构,有目录、子目录、孙目录、文件,我们称之为文件存储。
文件存储的最大特点,就是所有存储资源都是多级路径方式进行访问的。例如:
C:\Program Files (x86)\Tencent\WeChat\WeChat.exe
\\NJUST-Server\学习资料\通信原理\第一章作业.doc
举个例子大家就明白了。我们经常做的excel表格,姓名、身高、体重、年龄、性别,这种用二维表结构可以进行逻辑表达的数据,就是结构化数据。
于是,专家们就搞出了对象存储。
2006 年,美国 Amazon 公司发布 AWS S3(Simple Storage Service)服务,正式将对象存储作为一项云存储服务,引入云计算领域,从此开启了对象存储的黄金时代。
对象存储和块存储、文件存储的区别
想要了解对象存储,最简单直接的办法,就是从实际使用体验上进行对比。
对象存储的底层硬件介质,依然是硬盘,和块存储、文件存储没有区别。
而对象存储架构在底层硬件之上的系统,和两者完全不同。(下文会详细介绍系统架构)
不同的软件,带来了完全不同的使用体验:
块存储,操作对象是磁盘。存储协议是SCSI、iSCSI、FC。
以 SCSI 为例,主要接口命令有 Read/Write/Read Capacity/Inquiry 等等。
文件存储,操作对象是文件和文件夹。存储协议是 NFS、SAMBA(SMB)、POSIX等。
对象存储,主要操作对象是对象(Object)。存储协议是S3、Swift等。
以 S3 为例,主要接口命令有 PUT/GET/DELETE 等。
看出来了吧?接口命令非常简洁,没有那种目录树的概念。
对象存储中的数据组成
对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。
Key
可以理解文件名,是该对象的全局唯一标识符(UID)。
Key 是用于检索对象,服务器和用户不需要知道数据的物理地址,也能通过它找到对象。这种方法极大地简化了数据存储。
下面这行,就是一个对象的地址范例:
Data
也就是用户数据本体。这个不用解释了。
Metadata
Metadata 叫做元数据,它是对象存储一个非常独特的概念。
元数据有点类似数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息。
举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等。
元数据的好处非常明显,可以大大加快对象的排序,还有分类和查找。
对象存储的架构
对象存储的架构是怎样的呢?如下图所示,分为3个主要部分:
这是对象存储的核心,具有自己的 CPU、内存、网络和磁盘系统。它的主要功能当然是存储数据。同时,它还会利用自己的算力,优化数据分布,并且支持数据预读取,提升磁盘性能。
它控制 Client 和 OSD 的交互,还会管理着限额控制、目录和文件的创建与删除,以及访问控制权限。
根据上面的架构可以看出,对象存储系统可以是一个提供海量存储服务的分布式架构。
对象存储的优点
容量无限大
对象存储的所有业务、存储节点采用分布式集群方式工作,各功能节点、集群都可以独立扩容。从理论上来说,某个对象存储系统或单个桶(bucket),并没有总数据容量和对象数量的限制。
换句话说,只要你有足够的 money,服务商就可以不停地往架构里增加资源,这个存储空间就是无限的。
你可以根据自身需求购买相应大小的对象存储空间。如果需要调整大小,也是支持弹性伸缩的,你不要进行数据迁移和人工干预。
数据安全可靠
数据访问方面,所有的桶和对象都有 ACL 等访问控制策略,所有的连接都支持SSL加密,OBS系统会对访问用户进行身份鉴权。因为数据是分片存储在不同硬盘上的,所以即使有坏人偷了硬盘,也无法还原出完整的对象数据。
使用方便
数据的存取方法也非常灵活多样。除了前面说的可以使用网页(基于http)直接访问之外,大部分云服务提供商都有自己的图形化界面客户端工具,用户存取数据就像用网盘一样。
腾讯云的对象存储工具界面
像这种数据,是通过程序内部的接口调用的。对象存储提供开放的 REST API 接口。程序员在开发应用时,直接把存储参数写进代码,就可以通过 API 接口调用对象存储里的数据。相比文件存储那一串串的路径,对象存储要方便很多。
对象存储的应用场景
-
标准类型:移动应用 | 大型网站 | 图片分享 | 热点音视频 -
低频访问类型:移动设备 | 应用与企业数据备份 | 监控数据 | 网盘应用 -
归档类型:各种长期保存的档案数据 | 医疗影像 | 影视素材
对象存储虽然看上去很好很强大,但也不是没有缺点。它最大的缺点,和它的工作模式有关。
好啦,以上就是关于对象存储的全部内容。感谢大家的耐心观看,如果觉得有所收获,请记得帮小枣君点赞、转发!我们下期再见!