为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我想先试用
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

对象存储VS块存储

2016-11-02

在今天的IT环境中,云计算已经作为一个时代的代名词,而在云的存储基础设施中,对象存储和块存储是两个最基本的存储形式,也是各家云提供商最常提供的两种基础存储服务。那么对象存储与块存储有什么联系和区别呢,下面我将从基础层面为各位看官慢慢道来。

通常意义上来说,对象存储也就是键值存储,一般提供使用HTTP协议通过简单的PUT 、GET等接口,适合在云环境中进行大规模的非结构化数据存储使用。而块存储主要指能够模拟或表现为计算机裸盘,能够被计算主机当做硬盘使用的存储形式。从这个角度看,对象存储和块存储并没有什么联系,我们看下图:

我们将一盘硬盘连续的地址划分成等大小的若干小块,然后我们将每个小块等同为对象存储的一个对象,那么是不是说多个对象就能构建一个块呢?的确,在当前的分布式块存储中一般是采用分布式对象存储为基础的,如VMware的VSAN、华为的FusionStorage都是使用这样的方式,而开源的Ceph更是将其底层的统一对象存储平台Rados作为其基础,在上面封装有块、文件和对象三种接口。那我们不禁会问,块存储与对象存储只是一种接口形式,而底层都可以使用一种存储架构时,这样的架构能够满足我们的需要吗?这样的架构又是否完美呢?

现在我们不直接分析架构的技术细节,先阐述下块存储和对象存储不同的应用场景和不同的应用诉求。

对于存储一般有两个最基本的诉求,即容量和性能。而这两个诉求通常是鱼和熊掌不可兼得的,如下图所示。

对于对象存储一般要求较大的容量和很好的扩展性,而块存储则对性能要求比较高,对容量要求次之。值得一提的是,这里所说的块存储对容量的要求不是指块存储的总容量要求不高,而是指提供给单个计算主机的容量要求是有限的,如提供给一个计算主机一般1-5T就能满足绝大部分的需求。那么在这样的需求下我们就可以对块存储进行分而治之。

我们知道,对容量的不同诉求会引出一个并发访问的基本问题。对象存储一般对所有用户是全局并发控制的,即各个不同的客户端可能同时需要访问一个对象,所以对每个对象都需要有严格的并发控制,例如,对每个对象都有严格的读写锁的处理。而块存储的一个块只提供给一个计算主机使用,对块存储的并发控制就可以交给计算主机本身。所以底层即使使用对象存储实现,也无需再对对象存储中的每个对象进行并发处理,只要在架构上保证一个对象只提供给一个计算主机使用就可以了。

当对象存储作为块存储的底层,这时一般块存储会分成等大小的若干个对象,一般的分布式软件实现时为1M到4M。而对象存储中的划分则大小不等,从而导致同样的存储空间下,可能块存储需要100万级别的对象就能满足时,对象存储往往会需要比这个数值高出多个数量级的对象,这样的潜在需求必然会导致在元数据处理上实现架构的不同。

由于在块存储中对存储的IOPS要求比较高,一般会使用高性能的SSD作为其底层存储介质。而对象存储一般直接采用大容量的机械硬盘,不同性能的存储介质会使得上层的软件架构采用不同的实现方式。对于一般的机械硬盘,我们通常需要通过IO聚合合并、电梯算法等方法来提高其性能,在这样的存储架构中我们需要做的很多。而对于较快的存储介质,在软件层我们应该尽量做的更少,从而简化IO路径来提高其基本性能,并降低其对CPU的使用。所以,我们可以得出结论,机械硬盘的存储介质需要软件层面做的很多来提高性能,而SSD需要软件层面做的更少来发挥介质本身的性能。

总之,块存储和对象存储拥有不同的诉求,在并发控制,容量需求,元数据处理和不同介质下对软件的处理下都会不同。所以,使用对象存储作为块存储的底层也需要有针对性的优化和处理,没有通用的完美架构。

ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)