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 命令行工具
128 个月下载量
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