15 个版本

0.6.5 2023年11月3日
0.6.3 2023年2月27日
0.6.1 2022年7月1日
0.6.0 2021年4月3日
0.1.1 2018年9月18日

#160 in 文件系统

Download history 1/week @ 2024-06-29 108/week @ 2024-07-27

每月109次下载

GPL-3.0-or-later

45KB
1K SLoC

stor-age

显示目录的过期时间。

目录

动机

此工具的主要动机是找出给定一组数据目录中,还有多少存储容量仍在活跃使用。这些信息可用于数据处理系统,如高性能计算(HPC)集群,以鼓励用户将未使用的数据迁移到长期存储设施。

可用于此分析的数据文件系统元数据包括数据目录中文件的访问时间修改时间。使用这些元数据和给定的一组年龄,可以计算每个年龄和目录的总访问和修改容量的百分比。随着时间的推移进行这些操作,可以创建数据目录的使用概况。用户可以看到,当他们的系统数据变得过时时,应该迁移到适合长期归档的存储设施。

使用方法

交互式

显示您的目录中有多少已被闲置未使用

$ stor-age 90 365 -- ~/media/pics ~/projects

Directory             Age Bytes     Accessed  Percent Modified  Percent Files Accessed Percent Modified Percent
/home/user/projects    90   5.8 GiB   5.7 GiB   97.8%   5.6 GiB  95.12% 72596    71582   98.6%    39914  54.98%
                      365             5.8 GiB  98.85%   5.6 GiB  96.38%          71981  99.15%    48734  67.13%
/home/user/media/pics  90 483.2 MiB 107.0 MiB  22.15% 488.7 kiB    0.1%  2299      328  14.27%        7    0.3%
                      365           219.1 MiB  45.35%   3.0 MiB   0.63%           2119  92.17%       13   0.57%

注意:两个短横线--必需的,因为您可以提供多个年龄和多个目录,而命令行参数解析器需要一种方式来区分这两个列表。

监控系统指标

使用类似find的工具遍历一组目录

find /data/ -mindepth 1 -maxdepth 1 -type d |
  stor-age --format prometheus 90 365

输出是有效的Prometheus指标展示格式

# HELP stor_age_bytes_total Total size in bytes.
# TYPE stor_age_bytes_total gauge
stor_age_bytes_total{dir="/data/foo"} 132904506033
stor_age_bytes_total{dir="/data/bar"} 52451763095
stor_age_bytes_total{dir="/data/baz"} 38525158426

# HELP stor_age_bytes_accessed Accessed size in bytes.
# TYPE stor_age_bytes_accessed gauge
stor_age_bytes_accessed{dir="/data/foo",age="90"} 770700907
stor_age_bytes_accessed{dir="/data/foo",age="365"} 8013210318
stor_age_bytes_accessed{dir="/data/bar",age="90"} 1003231299
stor_age_bytes_accessed{dir="/data/bar",age="365"} 27936338982
stor_age_bytes_accessed{dir="/data/baz",age="90"} 4534759665
stor_age_bytes_accessed{dir="/data/baz",age="365"} 38525158426

# HELP stor_age_bytes_modified Modified size in bytes.
# TYPE stor_age_bytes_modified gauge
stor_age_bytes_modified{dir="/data/foo",age="90"} 3309
stor_age_bytes_modified{dir="/data/foo",age="365"} 8013127399
stor_age_bytes_modified{dir="/data/bar",age="90"} 964846566
stor_age_bytes_modified{dir="/data/bar",age="365"} 4738171482
stor_age_bytes_modified{dir="/data/baz",age="90"} 3641814237
stor_age_bytes_modified{dir="/data/baz",age="365"} 13704189585

# HELP stor_age_files_total Total number of files.
# TYPE stor_age_files_total gauge
stor_age_files_total{dir="/data/foo"} 1913
stor_age_files_total{dir="/data/bar"} 1516
stor_age_files_total{dir="/data/baz"} 2023

# HELP stor_age_files_accessed Accessed number of files.
# TYPE stor_age_files_accessed gauge
stor_age_files_accessed{dir="/data/foo",age="90"} 11
stor_age_files_accessed{dir="/data/foo",age="365"} 262
stor_age_files_accessed{dir="/data/bar",age="90"} 553
stor_age_files_accessed{dir="/data/bar",age="365"} 1402
stor_age_files_accessed{dir="/data/baz",age="90"} 711
stor_age_files_accessed{dir="/data/baz",age="365"} 2023

# HELP stor_age_files_modified Modified number of files.
# TYPE stor_age_files_modified gauge
stor_age_files_modified{dir="/data/foo",age="90"} 2
stor_age_files_modified{dir="/data/foo",age="365"} 250
stor_age_files_modified{dir="/data/bar",age="90"} 553
stor_age_files_modified{dir="/data/bar",age="365"} 1339
stor_age_files_modified{dir="/data/baz",age="90"} 558
stor_age_files_modified{dir="/data/baz",age="365"} 1894

功能

以下列表包含需要通过例如cargo build --feature <FEATURES>启用(例如)的crate功能。列表包含功能是否默认启用以及启用该功能的理由。

  • table(默认)

    添加输出格式,例如 --format table,将报告以表格形式格式化输出。此功能旨在用于交互式命令行使用。如果启用此功能,则为默认输出格式。

    如果您只需要包含在监控系统(例如 --format prometheus)中的有用输出格式,您可以禁用此功能以最小化依赖项。

  • spectrum-scale

    为IBM Spectrum Scale文件系统添加一个可选的文件系统迭代模式。此迭代模式使用mmapplypolicy命令而不是通用目录遍历(std::fs::read_dir)。

    这可以大大提高速度,尤其是在大目录中,因为它使用文件系统内部结构和可以广泛使用并行性。有关更多信息,请参阅--help输出中的相应命令行选项。

    注意:mmapplypolicy一起使用的策略将文件列表写入纯文本文件。这些文件可能相当大,随着文件数量的增加而扩展。根据这些列表存储的位置,您可能需要大量的内存(tmpfs)或磁盘空间,大约每百万个文件需要150 MiB。

安装

Arch Linux

安装stor-age AUR包

pacaur -S stor-age

cargo install

cargo install stor-age

从源代码安装

git clone https://github.com/idiv-biodiversity/stor-age.git
cd stor-age
cargo build --release
install -Dm755 target/release/stor-age ~/bin/stor-age

依赖项

~6–20MB
~223K SLoC