共计 831 个字符,预计需要花费 3 分钟才能阅读完成。
这篇文章主要为大家展示了“ceph sparse read 的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“ceph sparse read 的示例分析”这篇文章吧。
在解释 ceph 的 sparse read 前,先要解释一个概念:文件系统的 fiemap。
ext4 已经支持的一个特性是基于 Extent 的文件存储,简写为 fiemap.
现代很多文件系统都采用了 extent 替代 block 来管理磁盘。Extent 能有效地减少元数据开销。
再说 ceph 的 sparse read
ceph 基于 fiemap 特性来实现 sparse read. 具体举例来说:
1. client 发出 sparse-read 某个 object 请求.
2. osd 收到请求,传递至 filestore,它 通过 FS_IOC_FIEMAP ioctl 判断底层文件系统是否支持 fiemap, 还要判断 ceph 配置选项是否默认打开 fiemap.
3. 如果两个选项都支持,filestore 通过此 ioctl 进一步获取到 extent map 信息,即哪些 extent 存有真实的数据。
4. filestore 利用 extent map 分析出这个 object 的哪些部分真正在磁盘上分配了空间并存储了数据,然后把这些部分读出并返回给客户端。
注意:
1. ext4 默认支持了 fiemap, 但是 ceph 默认是关闭了 fiemap 选项,原因是测试发现某系 kernel/fs 的 bug. 所以 所有的 client sparse read 在 ceph 内部都是走的跟一般的 read 一样的路径。
2. sparse read 对大读有性能提高,但是对小读,如小于一个 block size(4096B)的读,则没有性能提升。所以要避免对小读做 sparse read.
以上是“ceph sparse read 的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!