4 个版本 (2 个破坏性更新)

0.3.1 2019年3月5日
0.3.0 2018年10月15日
0.2.0 2018年10月15日
0.1.0 2018年10月2日

#25 in #physical

MIT 许可证

36KB
854

lvm 构建状态

安全 Rust LVM 绑定


lib.rs:

来自 lvm2app.h 头文件:API 设计围绕以下基本 LVM 对象

  1. 物理卷 (pv_t) 2) 卷组 (vg_t) 3) 逻辑卷 (lv_t)。

该库提供函数来列出系统中的对象,获取和设置对象属性(如名称、UUID 和大小),以及创建/删除对象以及执行更复杂操作和转换。每个对象实例都由一个句柄表示,句柄在函数之间传递以执行操作。

库中的核心对象是卷组,由 VG 句柄、vg_t 表示。在 PV 或 LV 对象上执行操作之前,首先需要获取 VG 句柄。一旦获得了 vg_t,就可以使用它来枚举该 vg_t 内的 pv_t 和 lv_t 对象。然后可以查询或更改这些对象的属性。

卷组句柄可以通过读写权限获得。任何试图在未获得 vg_t 写权限的情况下更改 pv_t、vg_t 或 lv_t 属性的操作都将失败,返回 EPERM。

应用程序首先以只读方式打开 VG,然后稍后想更改对象的属性,必须首先关闭 VG,并以写权限重新打开。目前 liblvm 提供的机制无法确定在两次操作之间 VG 是否已在磁盘上发生变化 - 这是应用程序的责任。应用程序可以确保 VG 没有变化的一种方法是,在以 READ 权限打开 VG 后保存 "vg_seqno" 字段。如果应用程序稍后需要修改 VG,则可以关闭 VG,并以 WRITE 权限重新打开。然后它应该检查用 READ 权限获得的原始 "vg_seqno" 是否与用 WRITE 权限获得的新 "vg_seqno" 匹配。

依赖关系

~0.3–2.5MB
~45K SLoC