标签:逻辑 简介 存储系统 Blobstore 集群 blob 应用
参考:https://spdk.io/doc/blob.html
Blobstore是一种持久的、断电安全的块分配器(block allocator)。它可以代替传统的文件系统,支持上层的存储服务。可以用于数据库(MySQL, RocksDB)、一些专门应用(SAN, NAS)或者分布式存储系统(ex. Ceph, Cassandra)等。Blobstore可以对块设备上一种叫“blob”的块群(groups of blocks)进行异步、非缓存(uncached)、平行的读写。blob通常很大,至少有几百KB,并且总是比块的大小要大。但是
Blobstore不是为通用的存储系统设计的,它不支持POSIX。因此为了避免混淆,
我们不用文件或者对象来称呼blob。
Blobstore是为下一代存储设计的,这种存储设备可以快速随机读写,也不需要垃圾回收。不过目前也可以在NAND上运行。
概念
Blobstore对存储系统进行了如下抽象
- 逻辑块(logical block)
磁盘被划分为许多逻辑块,每个逻辑块都有自己从0到N的顺序编号,逻辑块的大小一般是512B或者4KB.
- 页(page)
一页由固定数量的逻辑块组成,在创建Blobstore的时候就定好了。组成页的逻辑块总是连续的。每个页也有自己的从0到N的顺序编号。一页的大小一般是4K,所以实际中一般由1~8个块组成。SSD起码要能对页面大小的逻辑块进行原子读写操作。
- 集群(cluster)
一个集群由固定大小的页组成,在创建Blobstore的时候就定好了。组成集群的页总是连续的。每个集群也有自己的从0到N的顺序编号。一个集群的大小一般是1M,也就是256页。
- blob
一个blob是一个有序的集群列表。blob是通过应用来操作的,这些操作即使断电或者重启也可以继续。应用通过标识号来唯一确定一个blob。在读写的时候,应用给出一个blob内的偏移量来访问blob里面的页面。应用也可以通过键值对的形式存储blob的元数据,也叫做扩展属性(xattrs, extended attributes)
- Blobstore
经过应用初始化,支持Blobstore存取方式的SSD叫做“一个Blobstore”。Blobstore元数据确定的区域归这个Blobstore所有。
Blobstore具有原子性:
- 写数据时,原子性以一个页面为单位
- 设定、修改blob、Blobstore元数据的操作是原子的
在Blobstore的操作没法完成时,系统不会阻塞,而是会调用API提供的回调函数。Blobstore可以在设备上直接运行,也可以在设备的bdev层上运行
标签:逻辑,
简介,
存储系统,
Blobstore,
集群,
blob,
应用
From: https://www.cnblogs.com/hushrush/p/16928040.html