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


14

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

背景

我错了

>chkdsk /R

在我的SSD上,在哪里

/ R :找到坏扇区并恢复可读信息(暗示/ F)
/F :修复磁盘上的错误

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

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

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

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

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

你为什么做这个?

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

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

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

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

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

enter image description here

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

不幸的是现在有一个 不可移动 文件的方式: $BadClus。收缩 碎片整理 操作记录事件日志中的不可移动文件:

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

诊断细节:

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

所以:

  • 在删除坏扇区之前,我无法镜像卷
  • 收缩量将消除坏道
  • 直到稀疏才能缩小音量 $BadClus 文件被移动
  • 我无法动弹 $BadClus 而它实际上占据了坏集群
  • $BadClus 当NTFS认为集群是坏的时,它将物理地占用坏集群

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

对于人们重影驱动器也是如此

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

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

>chkdsk /B

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

奖金Chatter

当然金士顿固态硬盘没有维持备用扇区。如果确实如此,它可以透明地重新映射我的备用扇区,我不会让NTFS试图超越事物。

SpinRite

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

══════════════════╤═══════════════════════════╤═════════════════════════════════
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 : · · · · ·

的数量 数据样本 计数高达2,000,然后循环回零,并继续前进。

enter image description here

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

克隆

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

DriveImage XML 到达坏的部门,并中止。

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

Clonezilla的 拒绝克隆我的SSD:

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

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

enter image description here

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


您想要Windows解决方案还是使用Linux可以吗?
Thomas Weller

2
@ThomasW。我不介意自启动工具;使用它喜欢的任何OS。当然我更喜欢GUI工具。我厌倦了在1990年使用命令行。我开始研究使用 CreateFile 直接打开音量;但意识到我必须从头开始,解析所有未记录的数据结构。我直接打开卷进行编辑 我最喜欢的hex编辑器 但是有相同的缺点,必须手动解析六角形结构。
Ian Boyd

@ThomasW。为什么甚至问你是否不能回答如何在linux中修复它?如果所有你想说的是,如果从linux live cd修复它是好的,那么你不知道如何但他应该添加一个linux标签。
barlop

如果您使用MBR作为磁盘分区sgdisk -z / dev / sdb将擦除GPT,并且clonezilla将复制它。 backup-utility.com/articles/...
cybernard

Answers:


6

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

首先,请注意,如果扇区真的很糟糕,取消标记它将无法使其可读。因此,您的克隆软件很可能会因此而无法阅读。

在NTFS中, 通过将群集分配给特殊流,将群集标记为错误, $BadClus:$Bad,一个稀疏文件。

你需要的是


  • 取消标记 所有 坏块,有 ntfsfix -b -d-b =明确坏块列表, -d =清除/不设置“脏”标志)( 用另一种方法 ntfstruncate 完全一样 2 )。

    • 威力 在元数据中引入了一些小的不一致性(在我的例子中,一些指数显然没有被排除),我不知道为什么,所以要么运行 chkdsk -f 手工或省略 -d 如果/你遇到FS错误,在Windows启动时触发它。
  • 清除一个 具体 阻止更加困难,因为我没有找到任何可以开箱即用的现有软件 3 NTFS Bad Sectors Resolution:$ BadClus元文件 - Katy的代码 描述方式 - 基本上,它是手动编辑运行列表和位图。


1 只是因为处理坏道+ NTFS +克隆是一个太广泛的话题。我很乐意回答 直接相关 对手头的事情。
2 检查了源代码 ntfsfix v2015.3.14
3 对于坚持不懈的人,这些不能做到: ntfscat (无法阅读不可读的部门), ntfscp (不能写入偏移量), ntfstruncatentfsfallocatedd (不能打开 $BadClus:$Bad 写作)


这应该被选为最佳答案。
Hashim

1

我有一个硬盘驱动器,开发了一些坏簇。我用一个已知的好驱动器替换它。还原过程还原了错误的群集数据以及其他数据。这是在Windows 7企业版计算机上。

我的解决方案是运行“chkdsk d:/ b”(如前所述)。 / b告诉它(仅适用于NTFS)重新扫描以前标记的坏簇。至少在我的情况下(我怀疑所有支持/ b的版本),它会在开始读取扫描之前立即清除坏簇列表。一旦看到消息“从坏群集文件中删除X群集”,您应该能够终止chkdsk进程(因为它只是读取数据)。

注意:如果碰巧在驱动器开头发现坏扇区,那么chkdsk在您终止进程的瞬间更新坏簇文件的可能性确实存在。我冒了风险,它成功地重置了坏簇文件,而无需下载一堆其他需要完整chkdsk的程序。因人而异。


这实际上有效。在第2步之后,你就关闭了 cmd 窗口。然后跑 chkdsk d: /f 会说 CHKDSK discovered free space marked as allocated in the volume bitmap. 和以下 Windows has made corrections to the file system.
Davor Josipovic

0

首先,最好的方法是克隆驱动器。然后用 chkdsk /B 在新的工作驱动器上。

现在,只要标记一个棘手的真正坏的部门。你可以使用:

  • SpinRite , 要么
  • mhdd (转为重新映射)

任何一个产品都应该重新映射坏扇区,然后CHKDSK / B应该取消标记。

下载 的gparted 要么 partedmagic ISO。从它启动,并收缩分区。

这个 工作,因为Windows没有运行,所以这个软件无论如何缩小分区。然后 chkdsk /B 将处理其余的事情。

如果这一切都失败了,你现在正走在一条难看的痛苦之路上。您需要获取扇区编辑器并手动编辑文件系统。不幸的是,它超出了我对NTFS的了解范围。对于FAT或FAT32,它非常简单。


作为SSD,没有备用扇区可以重新映射到。这就是驱动器的SMART继续注意到的原因 Pending Sector Count 零,和 Reallocated Sector Count 零。
Ian Boyd

凯蒂科 有一个优秀的博客,开始深入研究NTFS的内涵。但是当我不得不开始计算偏移量,逻辑簇数,虚拟簇数以及$ BadClus是一个 备用 文件实际上是整个卷的大小。我几乎肯定会破坏我的(正常运转)驱动器。
Ian Boyd

2
实际上SSD有大量的备用扇区。事实上,一个120GB的ssd可能有多达8GB的备用扇区。为什么你的驱动器没有自动重新映射它是我不知道的。使用gparted并收缩分区。
cybernard

很可能这是一个旧的,现已停产,现在不支持的64 GB金士顿驱动器。或者它可能只是驱动器固件中的一个错误,他们忘记实现扇区重映射。
Ian Boyd

此外,驱动器克隆在遇到坏扇区时失败(至少 DriveImage XML 所做的那样)。
Ian Boyd

0

由于您正在尝试镜像磁盘(并且看起来您使用的是Windows 7),因此还有另一种方法:

使用内置工具创建要在良好磁盘上还原的备份。转到控制面板,系统和安全,备份。在那里,创建一个系统映像和一个系统修复磁盘。

之后,您可以用旧磁盘替换旧故障磁盘,然后使用系统修复磁盘和备份将系统恢复到其状态。


0

包gddrescue(gddrescue - GNU数据恢复工具)应该为你完成这项工作。

使用“sudo apt-get install gddrescue”安装基于Debian的独立发行版(CD或USB记忆棒)安装gddrescue然后通过打开终端窗口克隆SSd并发出:

ddrescue -f / dev / sda / dev / sdb ./ddrescue.log

(其中/ dev / sda是​​源,/ dev / sdb是目标SSD)

ddrescue将尝试恢复坏块,如果无法跳过它。

完成后chkdsk / f / b完成工作。


0

看起来您的目标是缩小分区的大小,并且由于$ BadClus文件(由于坏群集而存在),Windows不会缩小它。

我有一个替代解决方案,它应该缩小驱动器,而不必直接处理$ BadClus文件。使用分区向导缩小分区。分区向导易于使用,可以免费用于非商业用途,可以在带有GUI的Windows内部运行,也可以从运行小型Linux的CD或USB引导运行,然后为您提供相同的GUI。该程序还可以恢复已擦除的分区,并在MBR和GPT分区表之间进行转换。

我遇到了Windows没有缩小分区超过某一点的问题,然后我会在同一个分区上尝试分区向导,没有问题。我想分区向导愿意忽略$ BadClus文件。我已经使用这个程序超过8年,最后买了Pro版本,因为他们赢得了它。我发现这个程序是我在1996年购买的PQMagic的替代品,这是一个用于小型驱动器的神话般的DOS分区程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.