专栏首页飞雪无情的博客聊聊越来越火的对象存储

聊聊越来越火的对象存储

随着云计算的发展,云存储作为一种更基础的云上资源池设施也越来越受到重视和欢迎。从云存储的类型来讲,目前流行的有块存储、文件存储和对象存储三种。今天的主角是对象存储,不过我们在介绍对象存储之前,先来了解下另外两种存储,做个对比,这样才能更好的了解对象存储。

块存储是什么?

对于这些概念网上我们可以找到很多,但是看着觉得太专业,云里雾里。在这里我以更通俗的方式来介绍什么是块存储。

首先我们要明白一个关键,块存储的直接使用者不是我们人类,而是文件系统。更简单的说块存储可以理解为一块硬盘,就是这么简单。至于这块硬盘是单独的物理盘,还是采用磁盘阵列技术组成的阵列,文件系统是不关心的,它️知道有几个盘,至于是逻辑的还是物理的,它完全关心(其实也管不着)。

我们常见的文件(数据)是以固定大小的块存放在块存储中的,根据文件大小的不同,可以分成很多个块,当我们读取这个文件的时候,底层的存储系统会将多个数据块合并一起,就成了一个我们需要的文件。

一个块存储,需要格式化(选择文件系统的过程)才能被使用。比如你在腾讯云上买了一个40G的SSD云盘,这个云盘就是一个块存储,你需要挂载到云主机上,然后选择合适的文件系统进行格式化,然后才能使用。

块存储支持随机读写,一般用于特定业务的数据存储,不过他不支持共享。

文件存储是什么?

文件存储我们最常见了,就是我们电脑上的文件,经常接触。他们是以文件、文件夹的方式组织的,有层次结构。通过FTP、SMB可以进行共享,供多个用户同时访问。

文件存储的元数据信息是放在文件里的,存储有限,并且层次结构也限制着性能。

终于来到了对象存储

虽然块存储和文件存储可以满足大多数需求,但是它们还有个局限性就是不适合公有云存储,它们一般是用于局域网内使用。

对象存储,一种以对象为基本单位的存储,它的结构式扁平的,甚至可以认为不存在结构,所以它扩展比较容易。

对象存储的数据一般是非机构化数据,比如文件、图片和视频这些。

对象存储的非结构化数据,会被分片成一个个对象,存储在不同的存储节点上,这也是叫对象存储的原因,它不想文件存储是以文件和文件夹方式,块存储是以数据块的方式。

对象存储的核心概念

对象存储非常简单,只有2个核心概念:存储桶(Bucket)和对象(Object)。一个存储桶可以有很多个对象,这些对象都是平级的,也就是扁平的。

在对象存储的时候,KEY就是对象的名称,Value就是对象的内容。所以对于对于是一个类似Hash,是一个KV方式存储。

对象存储是如何管理对象的

既然我们的对象都是扁平存储的,而且还被分片了,那么是如何管理它们的,或者说如何找到我们想要的文件以及文件的信息等?这就是对象存储核心的对象元数据管理。

对象的元数据就是用来管理数据的存储、分片以及数据本身的信息,因为元数据单独存储,所以我们可以为一个对象扩展任意多的元数据,这也是文件存储做不到的。

对象存储是如何有目录结构的

对象存储的底层设计都是扁平的,没有层次结构,但是我们看到的对象存储管理工具的确给我们提供了目录层次的管理,就像我们在使用文件系统一样,其实这样方式是通过KEY进行区分的。

假设我们想达到/static/1.jpg这样的存储效果,那么在存储的时候,对于图片1.jpg保存在对象存储中的KEY是/static/1.jpg,通过KEY中的/分隔,达到多级目录的效果,其实本质是KEY做了改变。

对象存储如何防止数据丢失

以MinIO为例,对于分布式的对象存储系统,是采用纠删码的方式保证数据的安全。纠删码会把分布式的盘组成一个纠删码集合,默认情况下,哪怕丢失N/2的数据盘,数据也可以正常恢复使用。

假设一个8块盘(可以分散在多个主机上)组成的纠删码集合,哪怕同时又4个盘损坏丢失,数据也可以正常使用,并且可以从中恢复,是不是很厉害。

Minio采用的是开源的纠删码实现,可以参考github.com/klauspost/reedsolomon了解更多实现。

对象存储开源实现

对象存储业界比较有名的是GlusterFS和Ceph,MinIO是后起之秀,也是是Ceph的开发人员做的,采用Go语言实现。而且他的扩容机制是采用更简单的集群方式而不是节点方式,大大降低了维护的复杂度,因为节点的方式需要重新计算Hash以及对应的旧文件迁移,加一个节点原来的Hash就乱了。MinIO的地址是:https://github.com/minio/minio,有兴趣的朋友可以研究下。

小结

对象存储兼容了文件和块存储的有点,又具备更好的扩展以支持公有云存储的需求,成本低、无限扩容、更容易访问等优点,会更多的被用户所选择。就像我当前的博客网站 https://www.flysnow.org/使用的就是对象存储搭建的静态网站托管。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • android技术文档翻译--ant任务

    原文地址 http://tools.android.com/tech-docs/ant-tasks

    飞雪无情
  • Android Gradle实用技巧(五) | 善用AndroidManifest占位符

    占位符,其实是一个可以被替换的临时标记,比如${name},我们就可以使用真实的name变量的值替换这个占位符,达到可以动态的修改这个占位符的目的。所以Andr...

    飞雪无情
  • Android TextView小组件的使用--附带超链接和跑马灯效果

    然后运行该应用就可以看到TextView的效果,是显示一行字:“Hello World, HelloTextView!”,这是因为新建的Hello项目自带的一个...

    飞雪无情
  • 如何利用公共云存储构建中小企业存储

    内部部署的超融合基础设施对于中小企业来说非常适合,这消除了对SAN存储及其相关技能的需求,但是,对于希望实现存储基础设施现代化的中小企业,有许多方法可以从云存储...

    静一
  • 对象存储COS成本优化方案

    随着上云企业越来越多,企业对用云成本问题也越发重视。业务的发展会产生海量存储需求,在云端存储数据时,如何进行成本优化,减轻业务负担呢?

    云存储
  • 网盘倒闭 解读未来数据存储模式变化

    导读:移动存储领域存在移动云存储和传统硬件存储两大分支,原本这两大分支在各自领域都有着相当的发展。然而,近期各大云存储厂商或停止服务或阉割功能或有偿服务,让原本...

    钱塘数据
  • 腾讯云-对象存储介绍

    首先介绍存储的分类,并主要介绍对象存储的分类,接着介绍用户的常见问题包括计费项和计费周期,最后介绍对象存储的控制台和使用案例。

    研究僧
  • 云存储比你的电脑或外部驱动器更好?

    什么是云存储? 云存储,就是可以向你的数据存储在远端的服务器上。 这意味着你可以通过远程存储如文档,照片,音乐和视频等数据,而不必占用物理空间或家里和公司的计算...

    静一
  • 调研:云存储运营情况两极化 一半是冰山一半是火焰

    T客汇官网:tikehui.com 原文作者:Charles Babcock 编译:徐婧欣 ? 对象存储系统供应商 Cloudian 于 11 月初做了一项调查...

    人称T客
  • 干货 | 如何评估Kubernetes持久化存储方案

    从用户角度看,存储就是一块盘或者一个目录,用户不关心盘或者目录如何实现,用户要求非常“简单”,就是稳定,性能好。为了能够提供稳定可靠的存储产品,各个厂家推出了各...

    焱融科技

扫码关注云+社区

领取腾讯云代金券