博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZFS的元数据
阅读量:6512 次
发布时间:2019-06-24

本文共 751 字,大约阅读时间需要 2 分钟。

SAN最终给客户提供的是基于块设备的存储,客户实际分区格式化用到的文件系统的类型决定了上层的data/ meta data的组织形式,但是对提供块存储设备的系统而言,上层的data/medta data都是它的data,都需要根据上层传递进来的flag (O_DIREC/O_SYNC/O_DSYNC)到达io 队列或者磁盘。而提供块存储的 文件系统中的其他数据结构都是meta data。

因此,zfs中的meta data包括:

  • 首尾的四个label

ZFS的元数据

其中每个Label存储了跟整个系统池相关的全局信息,结构如下:

ZFS的元数据

  • uber block、name value pair

    super block 如何定位到具体的磁盘偏移super block中是索引数据的入口? 下图红线部分指出了相关数据结构之间的关联:
    ZFS的元数据

  • 基于叶子节点的vtree
    在上面112KB的Label 区间,有一个叫做vdev tree 的name-value pairs,内容如下:

ZFS的元数据

两个或多个vdev可以构成不同类型和级别的vtree,比如RAID1/2/3//5/10等。以下面的截图为例来说明一个基于两个叶子节点的mirror 的name-value pairs:

ZFS的元数据

上面中的ubber-block框图可以由来解释基于块的zfs on-disk静态数据的layout结构,那么这些块block又是如何管理的呢?实际是由zfs DMU统一管理文件系统操作的所有的对象,比如dnode/directory/zvol/intent log 都抽象成一个object。 由SPA层根据object/object set的需求一块块申请和分配、释放的.

转载于:https://blog.51cto.com/xiamachao/2368156

你可能感兴趣的文章
C语言位操作控件属性
查看>>
nginx的安装及基本配置,及多个域名服务
查看>>
Servlet访问postgresql数据库并提取数据显示在前端jsp页面
查看>>
不改一行代码定位线上性能问题
查看>>
定义运算符
查看>>
git管理
查看>>
idea演示
查看>>
告别暗黄皮肤变水嫩皮肤的8个小习惯
查看>>
加强Eclipse代码自动提示的方法
查看>>
【HM】第4课:MySQL入门
查看>>
GNS3-地址重叠环境中部署IPsec
查看>>
exchange online 用户疑问之许可证和用户数据归档
查看>>
QImage Mat IplImage 之间的相互转换
查看>>
lsof命令详解
查看>>
使用eclipse与android studio 在开发自定义控件时的区别
查看>>
我的友情链接
查看>>
mysql学习笔记
查看>>
django 问题解决
查看>>
年年有鱼游戏Android源码项目
查看>>
java使用Iterator、for循环同步数据
查看>>