#linux #系统 #工具

nightly app integrity-scrub

清理 dm-integrity 卷

24 个版本

0.6.4 2024 年 3 月 16 日
0.6.3 2023 年 8 月 28 日
0.6.2 2023 年 5 月 24 日
0.6.0 2023 年 1 月 1 日
0.5.1 2021 年 11 月 27 日

#1512 in 命令行工具

Download history 110/week @ 2024-04-01 6/week @ 2024-05-20 128/week @ 2024-07-01

128 个月下载量

MirOS 许可证

17KB
431

摘要

此工具尝试读取块设备的所有逻辑扇区,用零覆盖任何因 I/O 错误而无法读取的扇区。它旨在恢复 Linux dm-integrity 卷中无效(损坏)的完整性标签。

用法

如果您要清理卷,请首先考虑备份底层物理设备。

然后以卷设备路径(/dev/mapper/…/dev/dm-…)作为命令行参数运行工具。

除非您真的知道自己在做什么,否则不应在挂载的卷上运行它。文件系统写入的数据可能会被工具的交错写入覆盖。

实现说明

首先以大块(由 BLKSECTGET ioctl 报告的每次请求的最大扇区数)读取块设备。如果读取导致完整性错误(EILSEQ),则单独读取块中的逻辑扇区,并使用零覆盖任何错误的扇区。

使用直接 I/O(O_DIRECT)执行读取,而写入则依赖于缓冲 I/O,并以块为单位异步刷新(sync_file_range(2))。在工具退出之前,使用 fdatasync(3) 完成任何挂起的写入。

注意

此工具可能会删除您所有的数据并召唤一个印章。使用它需自行承担风险。印章会要求鱼。

如果您不使用具有写时复制的语义的文件系统(例如 btrfs)或数据日志记录(例如带有 data=journal 的 ext4),则可能需要依赖 dm-integrity 的数据日志。

依赖项

~3.5MB
~74K SLoC