对象存储VS块存储
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象存储VS块存储相关的知识,希望对你有一定的参考价值。
在今天的IT环境中,云计算已经作为一个时代的代名词,而在云的存储基础设施中,对象存储和块存储是两个最基本的存储形式,也是各家云提供商最常提供的两种基础存储服务。那么对象存储与块存储有什么联系和区别呢,下面我将从基础层面为各位看官慢慢道来。
通常意义上来说,对象存储也就是键值存储,一般提供使用HTTP协议通过简单的PUT 、GET等接口,适合在云环境中进行大规模的非结构化数据存储使用。而块存储主要指能够模拟或表现为计算机裸盘,能够被计算主机当做硬盘使用的存储形式。从这个角度看,对象存储和块存储并没有什么联系,我们看下图:
我们将一盘硬盘连续的地址划分成等大小的若干小块,然后我们将每个小块等同为对象存储的一个对象,那么是不是说多个对象就能构建一个块呢?的确,在当前的分布式块存储中一般是采用分布式对象存储为基础的,如VMware的VSAN、华为的FusionStorage都是使用这样的方式,而开源的Ceph更是将其底层的统一对象存储平台Rados作为其基础,在上面封装有块、文件和对象三种接口。那我们不禁会问,块存储与对象存储只是一种接口形式,而底层都可以使用一种存储架构时,这样的架构能够满足我们的需要吗?这样的架构又是否完美呢?
现在我们不直接分析架构的技术细节,先阐述下块存储和对象存储不同的应用场景和不同的应用诉求。
对于存储一般有两个最基本的诉求,即容量和性能。而这两个诉求通常是鱼和熊掌不可兼得的,如下图所示。
对于对象存储一般要求较大的容量和很好的扩展性,而块存储则对性能要求比较高,对容量要求次之。值得一提的是,这里所说的块存储对容量的要求不是指块存储的总容量要求不高,而是指提供给单个计算主机的容量要求是有限的,如提供给一个计算主机一般1-5T就能满足绝大部分的需求。那么在这样的需求下我们就可以对块存储进行分而治之。
我们知道,对容量的不同诉求会引出一个并发访问的基本问题。对象存储一般对所有用户是全局并发控制的,即各个不同的客户端可能同时需要访问一个对象,所以对每个对象都需要有严格的并发控制,例如,对每个对象都有严格的读写锁的处理。而块存储的一个块只提供给一个计算主机使用,对块存储的并发控制就可以交给计算主机本身。所以底层即使使用对象存储实现,也无需再对对象存储中的每个对象进行并发处理,只要在架构上保证一个对象只提供给一个计算主机使用就可以了。
当对象存储作为块存储的底层,这时一般块存储会分成等大小的若干个对象,一般的分布式软件实现时为1M到4M。而对象存储中的划分则大小不等,从而导致同样的存储空间下,可能块存储需要100万级别的对象就能满足时,对象存储往往会需要比这个数值高出多个数量级的对象,这样的潜在需求必然会导致在元数据处理上实现架构的不同。
由于在块存储中对存储的IOPS要求比较高,一般会使用高性能的SSD作为其底层存储介质。而对象存储一般直接采用大容量的机械硬盘,不同性能的存储介质会使得上层的软件架构采用不同的实现方式。对于一般的机械硬盘,我们通常需要通过IO聚合合并、电梯算法等方法来提高其性能,在这样的存储架构中我们需要做的很多。而对于较快的存储介质,在软件层我们应该尽量做的更少,从而简化IO路径来提高其基本性能,并降低其对CPU的使用。所以,我们可以得出结论,机械硬盘的存储介质需要软件层面做的很多来提高性能,而SSD需要软件层面做的更少来发挥介质本身的性能。
总之,块存储和对象存储拥有不同的诉求,在并发控制,容量需求,元数据处理和不同介质下对软件的处理下都会不同。所以,使用对象存储作为块存储的底层也需要有针对性的优化和处理,没有通用的完美架构。
更多讯息请访问我们的官方网站:http://asc.eisoo.com/
本文出自 “12476088” 博客,请务必保留此出处http://12486088.blog.51cto.com/12476088/1888635
以上是关于对象存储VS块存储的主要内容,如果未能解决你的问题,请参考以下文章