我有一个 SATA 硬盘,它有坏扇区。我不需要数据,需要格式化硬盘以创建新设备。
我试图用类似的命令修复硬盘问题
fsck.ext4 -p /dev/sda1
Run Code Online (Sandbox Code Playgroud)
但修复这些部门需要很长时间。我格式化了整个硬盘,但仍然有问题。有没有快速格式化硬盘和恢复坏扇区的方法?
我在这里提到的“坏扇区”引用自以下扫描/测试:
- CHKDSK 的结果,在报告屏幕上称为“坏扇区”。
- 来自 HD Tune - 错误扫描的结果,称为“损坏块”或红色方块。
我有一个内部硬盘,通过对该磁盘上的整个扇区执行完全擦除,已成功从坏扇区中恢复。(擦除后,运行表面测试告诉所有扇区都正常,我再也看不到坏扇区了)。
之后我遇到了BSOD。重新启动后,我再次进行表面扫描,但这次发现了 1 个坏扇区。我试图再次擦除它,然后运行表面测试告诉坏扇区(再次)消失了。
我已经多次听说突然断电或任何与电源相关的问题可能会损坏您的硬盘。但是 BSOD 也会导致坏扇区吗?或者这是否意味着我的驱动器已经坏了需要更换?仅供参考,HD Tune 的 SMART 状态仍然是“OK”。
由于蓝屏死机很常见(在我的情况下,每 3-6 个月),我发现如果之后我应该重复“重新扫描磁盘、擦除和恢复”循环会很烦人。
编辑: 在这里回复所有评论和答案
我发现很多文章解释坏扇区并不总是物理原因。还有逻辑原因(例如,该块的 CRC 与磁盘读回的数据不匹配)。
逻辑(或软)坏扇区是硬盘驱动器上似乎无法正常工作的一组存储。操作系统可能试图从该扇区读取硬盘驱动器上的数据,发现纠错码 (ECC) 与该扇区的内容不匹配,这表明出现问题。这些可能被标记为坏扇区,但可以通过用零覆盖驱动器来修复
由于内容太多,这里就不复制了,直接放链接:
我有一个 8TB Seagate Archive 硬盘,有一些坏扇区。不过我现在还买不起更换它。我暂时尝试用坏块“修复它”,但这需要很长时间:
# badblocks -b 4096 -nvs /dev/sdd
Checking for bad blocks in non-destructive read-write mode
From block 0 to 1953506645
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: 14.28% done, 82:45:36 elapsed. (0/0/0 errors)
Run Code Online (Sandbox Code Playgroud)
运行了3.5天,电量才达到14%。应该还需要21天。我究竟做错了什么?有可能让它跑得更快吗?
CPU 和 RAM 使用情况似乎正常。
这是 SMART 报告:
# smartctl -a /dev/sdd
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.18.0-2-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Archive HDD
Device …Run Code Online (Sandbox Code Playgroud) 系统不稳定,例如某些程序在负载下崩溃,促使我测试我的内存模块。问题棒上的坏块位于 001CB18000 到 001CB19000 的范围内。
记忆棒有 512MB 的容量,我目前正在运行三个。坏棒正在为 RMA 请求准备。
操作系统:Windows XP(32位)
以前,谷歌展示了一个类似的主题,但我无法重现搜索,我相信没有人提供解决方案。
编写一个可以分配我想要的块的程序是否可行?
在将替换驱动器添加到阵列之前,我执行了此脚本以确保不需要将替换驱动器发送回制造商:
date
badblocks -b 4096 -c 4096 /dev/sdd
date
hdparm -Tt /dev/sdd
date
Run Code Online (Sandbox Code Playgroud)
大约 8 小时后,它的执行产生了以下输出,让我知道我可以保留驱动器:
Thu Jan 28 20:07:54 CST 2021
Fri Jan 29 04:37:40 CST 2021
/dev/sdd:
Timing cached reads: 34840 MB in 1.99 seconds = 17546.64 MB/sec
Timing buffered disk reads: 728 MB in 3.01 seconds = 242.16 MB/sec
Fri Jan 29 04:37:40 CST 2021
Run Code Online (Sandbox Code Playgroud)
当badblocks运行时,我大约每小时执行一次strace来查看它的运行情况。每次执行它时,我都注意到系统调用的频率正在减少。每次我执行它时,我都会看到这种模式,这让我确信它正在取得进展(即,查找值增加了 16M,即读取调用的大小):
lseek(3, 5929403678720, SEEK_SET) = 5929403678720
read(3, "\0\0\0"..., 16777216) = 16777216
lseek(3, 5929420455936, SEEK_SET) = 5929420455936
read(3, …Run Code Online (Sandbox Code Playgroud) bad-blocks ×5
hard-drive ×3
bad-sectors ×2
bsod ×1
formatting ×1
linux ×1
memory ×1
performance ×1
ubuntu ×1