我有一块硬盘,里面有 10319 个坏扇区(重新分配的扇区),这是该硬盘的 SMART 信息;共有 3097029168 个扇区,坏扇区/总扇区数为 0.00000333190274945450562188570256307,我想继续使用它,直到重新分配的扇区数增加。
据我所知,坏扇区被标记为坏的并重新分配到 G 列表(不断增长的缺陷列表)中,当操作系统尝试访问 G 列表中的扇区时,读/写请求会自动重定向到位于备用区域中的好扇区,否则硬盘控制器将无法访问操作系统,重定向会导致延迟,降低性能。
但是我知道硬盘,无论是HDD还是SSD,都是“天生”有缺陷的,因为现代制造技术并不完美,制造商在磁盘发货前会进行重新映射,并将缺陷分配到P列表(主要缺陷列表)中,而P列表扇区不会影响性能。
我想知道,有没有办法重新编号扇区,这样坏扇区就没有指定的地址,这样坏扇区就无法访问甚至无法列出,从而有效地使磁盘坏扇区无用,只是尺寸变小了?或者可以将 G 列表扇区移到 P 列表中吗?
比如说,使用逻辑块寻址(LBA),假设一共有10000个扇区,其中LBA 42、256、365、1024四个扇区都是坏的,重新编号之后,LBA 范围0-41的扇区保持不变,LBA 范围43-255的扇区变为42-254(-1),LBA 257-364的扇区变为255-362(-2),LBA 366-1023的扇区变为363-1020(-3),LBA 1025-9999的扇区变为1021-9995(-4),这样还会有9996个连续的好扇区呢?一定有一种方法可以读取 G 列表信息,有没有什么方法可以实现这一点,以便我拥有一个具有 3,097,018,849 个连续良好扇区(前提是它不会损坏)的好磁盘?
更新:我发现了这个:
在制造过程中定义驱动器布局后,即可开始查找缺陷。请记住,这一切都发生在应用逻辑块寻址方案的定义之前。“P”列表由硬盘驱动器上“坏”扇区的已识别物理位置组成。然后,此列表用于协助驱动器空间的逻辑块寻址以写入数据。这里有个窍门……在制造过程中,LBA 块的布局是通过将 LBA 块序列移过“坏”扇区来实现的。LBA 层只需跳过“P”列表中已识别的“坏”位置,然后按 LBA 顺序继续。“P”列表是硬盘驱动器盘片上“跳过”的物理位置的列表。
看来我可以通过将 G 列表扇区移到 P 列表来跳过它们,并重新定义逻辑块地址以跳过 P 列表,我该怎么做?
编辑:我发现我可以用 PC-3000 实现这一点,但我买不起,是否存在 PC-3000 的免费开源替代品?
编辑1:看来我是对的,P 列表是一个跳过列表,它们没有 LBA,上面描述的过程在工厂分配 LBA 期间发生,并且我已经成功复制了所有无法从磁盘在线下载的重要数据而没有任何错误,然后用这些擦除了我的磁盘:
diskpart /s %userprofile%\desktop\wipedisk.txt
format G: /fs:NTFS /a:4096 /x /p:1 /y
format G: /fs:NTFS /a:4096 /x /q /y
pause
文件 wipedisk.txt
select disk 1
clean all
create partition primary
format fs=ntfs
assign letter=G
quit
我是认真的,我想将 G 列表移到 P 列表。
更新:我刚刚找到了我想要的操作的技术术语,并确认低级格式化可以做到这一点:https://en.wikipedia.org/wiki/Sector_slipping
答案1
首先:认为主要缺陷不会对性能造成影响是不正确的。统计结果表明,当磁道上的扇区数量减少时,在连续扇区上执行读取操作时需要更换磁道的可能性会增加。
现在:在驱动器上存储任何数据之前会创建主要缺陷列表,这是跳过列表,而增长的缺陷列表是使用驱动器上已有的数据进行维护的,因此它是一个重定向列表。如果您将 GB 扇区的条目转换为 PB 扇区的条目,您将丢失重定向信息并需要重新格式化驱动器。我认为,由于驱动器已经处于如此糟糕的状态,将所有内容移出,然后重新格式化,然后再次将所有内容移回的过程很可能会创建如此多的新 GB 扇区,以至于变得毫无意义。
当 0.00033% 的扇区被重新分配时,你会发现再次命中的可能性约为 0.00033%,因此每读取约 3000 次,你就会经历两次重新定位不考虑任何缓存。我不认为缓存之后的性能提升会很明显。
编辑
根据评论中的要求,这里有一个关于低级格式化的简短操作方法:因为我不知道 Windows 是否能可靠地(或者根本不能)做到这一点,如果您仍在使用 Windows,最简单的方法是从 Linux USB 记忆棒启动。
- 第一步:识别磁盘。对于 USB 磁盘来说,这很容易,因为只要拔下它就可以启动,然后观察
/var/log/syslog
它,你就能很容易地知道它是哪个磁盘(例如/dev/sdb
)。 - 第二步:格式化。首先安装
scsitools
(sudo apt install scsitools und dpkg flavours),然后使用scsiformat -t 5 /dev/sdX
你在第一步中确定的磁盘运行。
答案2
没有人费心去对固件进行逆向工程,因为这是毫无意义的。
所安装的固件已使用制造商的签名进行数字签名,因此无法用您自己的版本替换。(我不知道它是否也加密了,但这肯定是可能的。)
这是一项重要的安全措施,可以确保您购买的磁盘在运送到您的计算机的过程中没有被病毒感染。
答案3
我想知道,有没有办法重新编号扇区,这样坏扇区就没有分配的地址,这样坏扇区就无法访问甚至无法列出,从而有效地使磁盘坏扇区无害,只是尺寸更小?
这正是所有具有“重新分配扇区”的驱动器中的固件所做的事情:逻辑块地址 (LBA) 被透明地重新映射,操作系统不会注意到任何差异。事实上,操作系统无法访问任何坏扇区(“坏扇区没有分配地址”),也无法访问备用扇区(因此,如果您愿意,这些扇区也没有分配地址)。
因此对于操作系统来说,磁盘似乎没有坏扇区。许多操作系统确实提供了坏扇区列表,这些列表来自固件未重新分配扇区的时代,但对于有重新分配扇区的固件(基本上所有现代硬盘都这样做),这些操作系统级别的坏扇区规定已经变得毫无用处。
(尽管人们仍然经常担心坏扇区,并不断询问他们需要对它们做些什么。答案是:什么也不做)
但 G 列表中的坏扇区只是被重定向,
我不确定您对“它们只是重定向”的理解是什么。它们“只是重定向”的方式与 P 列表“只是重定向”的方式相同:对于操作系统来说,它们不存在,无法访问。
重定向会降低性能
从“读取连续扇区序列现在不再连续,需要移动磁头”的意义上来说,是的。但从“重定向需要时间”的意义上来说,这是可以忽略不计的。因此,对于随机访问模式,性能没有差异。
P-list 也会导致同样的性能问题。
并且在执行完整磁盘操作(例如完整格式化,全部清理等)时可以直接访问坏扇区。
它们不会被访问。固件一直忽略它们。
并且对坏扇区的 I/O,无论是否重定向,都可能产生更多的坏扇区......
为什么会这样?就操作系统而言,不再有坏扇区。您不能仅通过访问好扇区来制造“更多坏扇区”。(您甚至不能通过访问坏扇区来制造“更多坏扇区”)。
我想将 G 列表中的坏扇区移到 P 列表中,这样它们就不会被 smart 05 rsc 计算在内,
你不能(除非你对固件进行逆向工程),即使你能,你也不会得到任何东西。
并且显示的总扇区数将因坏扇区数而减少,
这没有必要:空闲的当重新分配部门时,部门(从未在任何地方显示)已经减少。
示例:一开始,您的磁盘显示容量为 1000 个扇区,有 50 个备用扇区,总共有 1050 个“仅对固件可见”的扇区。随着时间的推移,它发现了 20 个坏扇区并重新分配了它们。现在它有 20 个重新分配的备用扇区、30 个可用的备用扇区,并且仍然显示容量为 1000 个扇区。
您想在这里做点什么是因为不了解固件的工作原理。固件已经手动完成了您想做的事情。
对于所有软件来说,它们官方上并不存在,
对于所有软件来说,上述 50 个备用扇区无论是否重新分配,都已正式不存在。所有软件都可以访问硬盘上的 1000 个扇区。
不会通过读取/写入创建新的坏扇区
由于现在无法再在 1000 个“报告”扇区内访问坏扇区,因此没有人可以读取或写入它们。
答案4
不要回答这个问题- 它会让少数人受益,却让多数人受损!
从技术上讲,没有理由有两个列表,但有理由显示生命周期内出现的损坏扇区,并防止用户删除这些重要的诊断信息。
通过作者的故意操纵,您可以轻松诱使人们相信损坏的磁盘仍然是好的。
将缺陷分配到P-List(Primary Defect List)中,P-List扇区不影响性能。
这只是一个借口。在 n 个损坏扇区列表中查找备用扇区号需要花费 log(n) 个步骤来处理树形结构。这适用于这两个列表,假设它们都以树形结构维护。
这简直太糟糕了——有人想要了解里程表的操纵信息。
您在评论中指出:
但是磁盘制造时就有缺陷,制造缺陷是不可避免的,那么按照你的逻辑,所有的磁盘都应该坏了,没有可用的磁盘!
我该在哪里陈述这一点?哪种逻辑暗示了这一点?请解释一下!