下面这个图将贯穿始终:
这里,重点讨论用户层的JNI和libzfs
JNI (Java Native Interface)是Java本地接口,本地方法被编译进动态链接库,在运行时由Java虚拟机载入 。
在上面的图中,libzfs是Solaris中实现ZFS的本地库,而JNI是libzfs的Java封装,其目的是让用户以更加友好的方式使用ZFS 。有了这个库,用户就可以方便地创建一个新的文件系统:
LibZFS zfs = new LibZFS();
ZFSObject newFS = zfs.create("rpool/kohsuke/test", ZFSType.FILESYSTEM);
newFS.mount();
... 或者撤销:
【二 zfs文件系统架构解读-接口之探究】ZFSObject fs = zfs.open("rpool/kohsuke/test");fs.unmount();fs.destory();
当然,基于libzfs,所做的事情远不止这些,还可以查询文件系统信息,创建快照,回滚(roll back等等) 。
更多的信息参看:https://zfs.dev.java.net/
它是应用程序与 ZFS 内核模块打交道的主要接口 。此库为访问和处理存储池和文件系统提供了一种统一的、基于对象的机制(想象一下把用户解放出来的感觉) 。其中与内核通信的基础机制是系统调用调用 ioctl(2) 。libzfs的源代码可以在 usr/src/lib/libzfs 中找到 。它包含以下文件:
libzfs_dataset.c 用于处理数据集的主要接口libzfs_pool.c 处理存储池的主要接口libzfs_changelist.c 在子级中传播属性改变的实用程序libzfs_config.c 读取和处理存储池配置信息libzfs_graph.c 为数据集构建相关列表libzfs_import.c 搜索和导入存储池libzfs_mount.c 挂载、取消挂载和共享数据集 。libzfs_status.c 根据存储池状态链接到 FMA 知识库文章libzfs_util.c 其他例程
推荐阅读
- 一 zfs文件系统架构解读
- ZFS时代FreeBSD系统的数据冗余策略
- ZFS 入门
- ZFS 中的新增功能
- 二 彩蛋迷情——OKWAP A236拍照全攻略
- 泡菜坛水少了二次加水怎么加
- 钓十几二十斤的鱼用几号线
- 二字吉祥语
- 闲鱼怎么加别人好友
- 经常死机