如何将 NTFS 群集取消标记为坏?

Ian*_*oyd 15 linux windows-7 ntfs ssd

如何在 NTFS 中取消将群集标记为坏的?

背景

我跑错了

>chkdsk /R
Run Code Online (Sandbox Code Playgroud)

在我的 SSD 上,在哪里

/R:定位坏扇区并恢复可读信息(隐含 /F)
/F:修复磁盘上的错误

现在我的驱动器上有一个标记为坏的集群。我需要取消将该集群标记为坏的。

注意chkdsk可以选择重新评估集群并将其返回以使用:

/B:仅 NTFS:重新评估卷上的坏簇(暗示 /R)

不幸的是,该选项只会在集群不再坏时取消标记集群。无论如何,我都需要取消标记集群。

如何取消将 NTFS 群集标记为坏的?

你为什么做这个?

我和其他数百人为什么要问这个问题并不重要。但问题是我的驱动器上有一个坏扇区。是时候用新的驱动器更换驱动器了。这样做的方法是使用 Windows 软件镜像将 SSD镜像到另一个 SSD 。

不幸的是,Windows NTFS 镜像中的一个已知错误阻止了镜像完成,如KB325615 中所述

如果磁盘包含坏块,则无法创建软件镜像

DMIO运行下面文件系统,如果在从源磁盘上的扇区读出或试图将数据写入到目标磁盘发现I / O错误,它中止镜像操作。

显而易见的解决方法是缩小操作系统卷,以便坏扇区超过卷的末尾。在 Windows 7 中,当您尝试缩小卷时,它会自动将文件移开。

在此处输入图片说明

这是一件好事。在过去,如果您想缩小卷,您必须使用碎片整理工具将所有文件推向驱动器的前端;最后留下松弛空间。

不幸的是,现在有一个不可移动的文件:$BadClus. Shrink defrag操作在事件日志中记录了不可移动的文件:

在卷 OS (C:) 上启动了卷收缩分析。此事件日志条目详细说明了有关可能限制最大可回收字节数的最后一个不可移动文件的信息。

诊断详情:

  • 最后一个不可移动的文件似乎是:\$BadClus:$Bad:$DATA
  • 文件的最后一个簇是:0xdc1ded
  • 收缩潜在目标(LCN 地址):0xa91bd9
  • NTFS 文件标志为:-S--D
  • 收缩阶段:<分析>

所以:

  • 在删除坏扇区之前,我无法镜像卷
  • 缩小体积将删除坏扇区
  • $BadClus移动稀疏文件之前,我无法缩小音量
  • $BadClus当它物理上占用坏簇时我无法移动
  • $BadClus 物理上会占用坏簇,而 NTFS 认为簇坏了

如何取消将集群标记为坏的?

对于重影驱动器的人,也是

我的问题的解决方案也适用于最常见的情况:

有人将包含坏扇区的驱动器重影到新驱动器,然后好的驱动器仍然将那些簇标记为坏,即使它们是好的。碰巧他们有一个可用的解决方法:

>chkdsk /B
Run Code Online (Sandbox Code Playgroud)

除了这在我的情况下不起作用。(即使它在我的情况下确实有效,这也不是我要问的问题。)

奖金喋喋不休

当然,Kingson SSD 不保留备用扇区。如果确实如此,它可以透明地为我重新映射备用扇区,并且我不会让 NTFS 试图过度思考。

旋转仪

我尝试在 SS 驱动器上使用 SpinRite。它遇到了有缺陷的扇区,但无法从驱动器中获取任何值:

????????????????????????????????????????????????????????????????????????????????
cylinder : 7,183  ?     data samples : 1,999  ?  first uncertain bit : · · · · ·
  sector :    17  ?   unique samples :     0  ?   last uncertain bit : · · · · ·
    head :   187  ?  discarded sples :     0  ?   uncertain bit span : · · · · ·
Run Code Online (Sandbox Code Playgroud)

数据样本数高达2000,然后循环回零,并不断去。

在此处输入图片说明

在大约 20 个循环(即 40,000 个数据样本)之后,我放弃了。

克隆

再次; 不要将问题与示例混淆。问题是如何在 NTFS 中取消将集群标记为坏的。在我放弃并扔掉 SSD 很久之后,问题仍然存在。不要混淆我的问题的问题。这并不意味着我可能会尝试实际解决我的问题:

DriveImageXML到达坏扇区,然后中止。

GParted无法加载。出现图形引导屏幕,然后控制台窗口滚动文本,然后黑屏什么也没有

Clonezilla拒绝克隆我的 SSD:

此磁盘包含不匹配的 GPT 和 MGR 分区:/dev/sdb
它会混淆 Clonezill 并可能使保存的图像无用或无法克隆磁盘。

请修复 htis 问题,然后再次重新启动 Clonezilla。
程序终止。

在此处输入图片说明

如何在 NTFS 中取消将群集标记为坏的?

iva*_*eev 8

我将不再回答标题问题。1

首先,请注意,如果该扇区确实是坏的,则取消标记它不会使其可读。因此,您的克隆软件可能会因为阅读而窒息。

在 NTFS 中,一个簇通过将它分配给一个特殊的流$BadClus:$Bad,一个稀疏文件,被标记为坏的

你需要的是

  • 编辑其运行列表以删除相应的分配块
  • 在 中将相应的簇标记为空闲$Bitmap

  • 要取消标记所有坏块,有ntfsfix -b -d( -b=clear bad block list, -d=clear/don't set "dirty" flag) (另一种方法与ntfstruncate2完全相同)。

    • 可能会在元数据中引入轻微的不一致(在我的情况下,一些索引显然变得未排序),我不确定为什么,所以要么chkdsk -f手动运行,要么-d在 Windows 启动时省略触发它,如果/以防万一你得到 FS 错误。
  • 清除特定块要困难得多,因为我没有找到任何可以立即执行此操作的现有软件3NTFS 坏扇区解决方案:$BadClus 元文件 - Katy 的代码描述了这种方式 - 基本上,它是手动编辑运行列表和位图。


1 只是因为处理坏扇区 + NTFS + 克隆是一个太宽泛的话题。我很乐意回答手头问题直接相关的问题。
2. 查看源代码ntfsfix v2015.3.14
3 对于坚持的,这些都不能做到这一点:ntfscat(无法读取无法读取的扇区),(ntfscp不能写入偏移), ,ntfstruncatentfsfallocatedd无法打开$BadClus:$Bad写入)