读取错误映射
介质有坏道时,采集过程会产生读取错误,每一处错误对应的扇区区间都要落到映射文件里。ddrescue 生成的 mapfile 记录了哪些区间已读、哪些失败,ddrescuelog 能把这份映射转成可读统计。错误区间直接决定分析结论能覆盖到什么程度。
基本信息
| 工具 | GNU ddrescue 及其配套的 ddrescuelog |
|---|---|
| 映射文件 | ddrescue 采集时指定的 logfile(默认生成 .map 文件) |
| 查看方式 | ddrescuelog -t 输出状态摘要,映射内容可直接按文本阅读 |
| 状态字符 | + 已完成、? 未尝试、* 未裁剪、/ 未刮擦、- 坏扇区 |
| 记录要点 | 不可读区间、重试次数、最终状态 |
| 归档要求 | 映射文件与镜像、采集日志一并保存并计算哈希 |
典型使用场景
- 采集后统计不可读区域的范围
- 与镜像分析结果对照,判断关键数据是否落在坏区
- 在报告的数据覆盖说明中写明缺失范围
- 二次采集时只针对未完成区间续读
- 评估是否需要在结论中标注更低的置信度
最小示例
最小示例
ddrescuelog -t /evidence/sdb.map # 状态摘要
sed -n '1,12p' /evidence/sdb.map # 直接阅读映射内容
grep -c '^-' /evidence/sdb.map || true # 统计坏扇区块数量
sha256sum /evidence/sdb.map > /evidence/sdb.map.sha256 # 映射文件归档
# 对未完成区间做续读采集
ddrescue --idirect /dev/sdb /evidence/sdb.dd /evidence/sdb.map状态字符解读
| 状态 | 含义 | 处理方式 |
|---|---|---|
| + | 已成功读取 | 可正常参与分析 |
| ? | 尚未尝试读取 | 说明采集未完成,需续读 |
| * | 未裁剪区间 | 可缩小范围后重试 |
| / | 未刮擦区间 | 对剩余小区域做精细重试 |
| - | 坏扇区 | 记录区间并在报告中说明 |
坏区落在关键时间段内时,报告必须写明哪一段数据不可读,并说明该缺口对结论的影响范围。
对同一坏道无限重试会显著延长采集时间,还会加速老化介质劣化;重试次数应设上限,并记录重试参数。
从其它来源补齐的区间要单独标注:不同来源的字节语义不同,不能当作原设备数据直接使用。
ddrescuelog 的参数在版本间略有差异,批量统计前先用本机帮助输出确认可用选项。