1 个不稳定版本
使用旧的Rust 2015
0.0.1 | 2018年1月12日 |
---|
553 在 #storage
每月24次下载
135KB
2.5K SLoC
Rust的LibStorageMgmt绑定
LibStorageMgmt
提供了一组API,以供应商中立的方式编程管理存储硬件,支持以下操作
-
列出存储池、卷、访问组或文件系统。
-
创建和删除卷、访问组、文件系统或NFS导出。
-
授予和移除对卷、访问组或启动器的访问权限。
-
使用快照、克隆和复制复制卷。
-
创建和删除访问组,并编辑组成员。
-
列出Linux本地SCSI/ATA/NVMe磁盘。
-
通过SES(SCSI Enclosure Service)控制本地磁盘的IDENT/FAULT LED。
要使用LibStorageMgmt
的rust绑定,您需要
-
启动libstoragemgmt守护进程(
lsmd
) -
阅读
LibStorageMgmt
用户指南后选择一个URI -
通过
lsm::Client
通过插件建立连接。 -
检查所需
capacity
是否受支持。 -
调用
lsm::Client
的所需方法。 -
遵循crate文档
使用模拟插件示例代码
extern crate lsm;
use lsm::{Client, LsmError};
fn main() {
let mut c: Client = match Client::new("sim://", None, None) {
Ok(i) => i,
Err(e) => {
match e {
// Error handling goes here
LsmError::DaemonNotRunning(_) =>
panic!("Please start the libstoragemgmt daemon"),
_ => panic!(e)
};
},
};
let syss = match c.systems() {
Ok(i) => i,
Err(e) => panic!(e) // Please use error handling as above.
};
for s in syss {
let cap = match c.capabilities(&s) {
Ok(i) => i,
Err(e) => panic!(e) // Please use error handling as above.
};
if cap.is_supported(lsm::Capability::Volumes) {
let vols = match c.volumes() {
Ok(i) => i,
Err(e) => panic!(e) // Please use error handling as above.
};
for vol in vols {
println!("Got volume: {} {}", vol.name, vol.id);
}
}
}
}
依赖关系
~7MB
~174K SLoC