7 个不稳定版本
使用旧的 Rust 2015
0.10.3 | 2020 年 6 月 22 日 |
---|---|
0.10.2 | 2020 年 2 月 3 日 |
0.10.1 | 2018 年 12 月 25 日 |
0.10.0 | 2018 年 4 月 27 日 |
0.7.0 | 2017 年 11 月 1 日 |
#617 in 文件系统
210KB
4.5K SLoC
hdd
: 查询 ATA 和 SCSI 磁盘的仪表
文档.
这是一个正在进行中的工作。
为什么?
主要是因为我对所有可用的将 SMART 和 SCSI 日志信息放入各种监控系统中的选项都感到失望。
- 解析
smartctl
输出(通常使用正则表达式)的脚本很慢,丑陋且不可靠。 - 为了将
smartctl
(例如 JSON)支持不同的、编程友好的输出格式,基本需要重写所有散布在源文件中的临时printf
,而且如果你决定放弃实现某些命令行选项而改为完全改变输出格式,这并不会容易多少。(与smartd
相关的事情只会变得更加复杂。) libatasmart
(及其支持的工具)只能与 ATA 设备一起工作,并且仅在 Linux 上,期待从这个库中得到更多是天真。
如何?
先决条件
此 crate 可以在 Rust >= 1.21 上构建。
构建 CLI 工具
git clone https://github.com/vthriller/hdd-rs.git
cd hdd-rs
cargo build --release --features='bin serializable' --bin=hdd
sudo ./target/release/hdd /dev/sda attrs --json
如果您想要用于运行较旧版本 glibc 的远程 GNU/Linux 系统的静态二进制文件,可以构建它
- 安装 musl 工具链(例如,通过
rustup target add x86_64-unknown-linux-musl
), - 将
--target x86_64-unknown-linux-musl
添加到cargo build
行。
在您的代码中使用库
将此放入您的 Cargo.toml
[dependencies]
hdd = "0.10"
支持什么?
平台和传输
- Linux:ATA¹,SCSI
- FreeBSD:ATA,SCSI
也支持 SCSI/ATA 转换。
¹ 注意,在 Linux 中,ATA 只通过 SAT 支持,虽然 SG_IO 优雅地为我们模拟了 SATA(以及可能 PATA?)磁盘。
功能
- 待办事项
待办事项
- 文档。
- 测试。
- 更多测试。
- 更多的测试:大端系统、旧硬件…
rg 'TODO|FIXME|XXX|((?i)WTF)|unimplemented!|\b(unwrap|expect)\b' src sample-scsi/src build.rs
- 与[插入你的喜欢的包名]的功能相同。
- 支持RAID怪异设备(LSI、Adaptec、Areca等)和USB桥接器。
- CLI工具的调试选项(例如
smartctl -r ataioctl,2
或skdump
)。 - 更多设备(smartmontools可以查询NVMe设备)。
- 更多平台(Windows、macOS、*BSD、Redox…)。
致谢
以下是必提的smartmontools贡献者,他们为这个crate的当前基础打下了基础。
许可证
本crate遵循Mozilla Public License版本2.0的条款进行分发。
依赖项
~4–5.5MB
~111K SLoC