标签: bad-blocks

如何故意破坏/损坏 SD 卡上的扇区?

我需要测试一些嵌入式硬件的一些读/写代码的弹性。我怎么可能牺牲一些 SD 卡并破坏几个已知扇区来进行对照研究?

我唯一能想到的就是将单个扇区覆盖几百万次。我想知道是否可以创建一个 Linux badblocks 脚本来在单个扇区上重复运行几个小时的破坏性测试。

sd-card bad-sectors bad-blocks

141
推荐指数
8
解决办法
3万
查看次数

坏块在 1TB 驱动器上需要多长时间?

我在 1TB 驱动器上运行坏块(或者更确切地说是“e2fsck -c”),如果进度指示器有任何指示(没有双关语),它几乎需要永远才能完成。

现在它说0.01% done, 30:20 elapsed这意味着这件事需要 17 周左右才能完成,这在我的书中似乎有些过分。

这是进行此类检查的正常时间,还是仅仅因为我的怀疑是正确的,因为驱动器出现故障,从而导致检查时间仅略短于永恒?

我在这里找到了这个问题,但这与完成的传球数量有关。

linux bad-blocks

35
推荐指数
2
解决办法
5万
查看次数

在现代磁盘上使用“坏块”

我想使用坏块来检查我的硬盘,并希望对其操作进行澄清。

有人可以解释与-b和一起使用的最佳选择-c吗?我已经在手册页中包含了它们的定义,但我不确定更大的尺寸是否对具有 64MB RAM 和 4k 扇区的现代磁盘有益。

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64
Run Code Online (Sandbox Code Playgroud)

其次我想知道写模式测试是否比非破坏性读写模式更彻底?

最后,有多少 SMART 扇区重新分配是可以接受的/是否应该立即更换具有非零重新分配计数的驱动器?

linux hard-drive bad-blocks

23
推荐指数
2
解决办法
2万
查看次数

如何让 smartd 关闭某个特定的离线不可纠正扇区?

我在两盘软件 RAID-1 中有一个磁盘,最近在 SMART 状态下出现了“离线不可纠正扇区”。

198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       1
Run Code Online (Sandbox Code Playgroud)

如果它越来越频繁地发生,这显然只是磁盘即将发生故障的迹象(并且由于驱动器是镜像的,因此实际数据丢失的风险也不大)。当时,自检在某些时候也失败了,并向smartd我发送了一封电子邮件以通知我这当然应该这样做。

但是,写入损坏的扇区通常会导致磁盘使用其备用扇区之一,而这显然是因为自从我检查dd了磁盘后,所有自检都运行得很好。而且badblocks还发现没有理由抱怨。

Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
[...]
# 5  Extended offline    Completed without error       00%      5559         -
# 6  Short offline       Completed without error       00%      5540         -
# 7  Short offline       Completed: read failure       90%      5524         63273368
Run Code Online (Sandbox Code Playgroud)

故障扇区的数量并没有减少,但实际上不应该减少,因为损坏的扇区仍然存在,尽管未使用。然而,smartd每天晚上继续给我发电子邮件:

The following warning/error was logged by the smartd daemon:

Device: /dev/sda [SAT], 1 Offline uncorrectable sectors
Run Code Online (Sandbox Code Playgroud)

这显然非常烦人,并且麻木了我对 …

hard-drive smart hardware-failure bad-blocks

21
推荐指数
1
解决办法
8361
查看次数

尝试删除/诊断 SMART 数据中的单个 Current_Pending_Sector

我正在执行全新的 Linux 安装,在我开始安装之前,我认为现在是验证 HDD 健康状况的好时机,因为如果需要,我可以安全地覆盖 HDD 上的任何数据。

首先,我尝试使用 smartmontools 检查...我的 Seagate HDD 报告一个当前待处理的扇区和一个无法更正的离线扇区(大概是同一个)。重新分配的扇区数为零。

5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
...
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1
Run Code Online (Sandbox Code Playgroud)

然而,SMART 自测(短、长、离线、传输)没有发现错误。

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      6631         -
# 2  Conveyance offline  Completed without error       00%      6630         -
# …
Run Code Online (Sandbox Code Playgroud)

linux hard-drive smart bad-sectors bad-blocks

19
推荐指数
2
解决办法
1万
查看次数

如何在 Linux 中测试 SD 卡的全部容量?

我从 eBay 购买了 64 GB SD 卡。当我将 Arch Linux ARM 映像刻录到它并使用它来启动我的 Raspberry Pi 时,它工作正常。

但是,当我尝试在其上创建单个 ext4 分区以使用卡的所有容量时,会发生错误。mkfs.ext4总是幸福地结束;但是,分区不能被mount编辑,总是抛出错误并dmesg显示内核消息包括Cannot find journal. 事实证明,至少在两个平台上都是这种情况:Arch Linux ARM 和 Ubuntu 13.04。

另一方面,我可以无误地创建和挂载 FAT32 分区(尚未完成全容量检查)。

我听说有些坏人可以更改 SD 卡接口以向操作系统报告错误的容量(即该卡实际上只有 2 GB,但它报告自己为 64 GB),以便以更好的价格出售该卡。

我知道有类似的工具badblocks可供我检查 SD 卡是否存在坏块。能badblocks检测出这样的问题吗?如果没有,还有什么其他解决方案可供我测试卡?

理想情况下,我想知道我是否被骗了;如果结果显示我刚收到一件坏物品,我只能退回给卖家,而不是向 eBay 报告有人试图欺骗我。

更新

操作和消息:

~$ sudo mkfs.ext4 /dev/sde1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4096000 inodes, …
Run Code Online (Sandbox Code Playgroud)

sd-card bad-blocks

18
推荐指数
2
解决办法
4万
查看次数

badblocks 与 SMART 扩展自检

“坏块”的完整读/写表面扫描与内置的SMART Extended 自检有何不同?

看起来它们都是全表面扫描,那么为什么badblocks -vws测试 1TB 驱动器需要3 天,而 SMART 只需 2 1/2 小时(至少这是 smartmon 给我的估计时间)?

hard-drive bad-blocks

16
推荐指数
2
解决办法
1万
查看次数

查看挂载的 ext2/ext3/ext4 文件系统上的坏块

fsck不久前,我在有问题的(未安装的)分区上运行了-c。该过程无人值守,结果未存储在任何地方(坏块 inode 除外)。

现在我想获取坏块信息,以了解硬盘驱动器是否有任何问题。不幸的是,分区是在生产系统中使用的,无法卸载。

我看到了两种获得我想要的东西的方法:

  1. 运行badblocks在只读模式。这可能会花费大量时间,并对系统造成不必要的负担。

  2. 以某种方式从文件系统本身提取有关坏块的信息。

如何查看已挂载的文件系统中注册的已知坏块?

linux ext3 ext4 ext2 bad-blocks

13
推荐指数
1
解决办法
9616
查看次数

如何测试 SSD 或 NVMe 的坏块?

使用传统的旋转磁盘诊断相当容易。如果您怀疑驱动器有故障,您可以检查 SMART 值,运行 SMART 扩展测试和badblocks -wsv测试。如果所有三个测试都没有显示错误,则驱动器可能/通常没问题。

对于 SSD 或现代 NVMe 驱动器,我们应该怎么做?

显然,SMART 仍然是一个好主意,但如果它没有错误地完成呢?badblocks -wsv在基于闪存的存储设备上运行是个好主意吗?

还有其他选择吗?

另外,如果使用badblocks什么选项是合适的?应该使用SSD的“擦除块大小”吗?


这个问题类似于我能证明固态硬盘坏了吗?但答案是从 2013 年开始的。从那时起,我们已经看到了几代闪存技术。- 另外,虽然他们建议badblocks,但我错过了关于天气的讨论,这是一个好主意。最后,有些闪存不喜欢将其写入 100%。另外,之后我们如何告诉 SSD 哪些扇区是空闲的(再次)?

如何修复SSD上的坏块也不令人满意。

在 SSD 上运行 CHKDSK 有多安全?只讨论影响chkdsk

我找不到处理这个问题的其他资源。

ssd smart bad-blocks

13
推荐指数
1
解决办法
1万
查看次数

拯救坏扇区的硬盘:dd vs gddrescue

我在互联网上的某个地方读到gddrescue优于dd 至少在能够区分在有问题的扇区上执行的磁盘读取量方面。真的是这样吗?

时间 dd if=/dev/sda skip=900343967 of=a.bin count=4 iflag=direct conv=noerror,sync

dd: 读取`/dev/sda': 输入/输出错误
2+0 记录中的
2+0 记录
复制了1024 字节 (1.0 kB),18.6057 秒,0.1 KB/s 4+0 记录中的
3+1
记录输出
2048复制的字节 (2.0 kB),18.6707 s,0.1 kB/s

真实 0m18.672s
用户 0m0.000s
系统 0m0.004s

顺便说一句,直接标志真的很有帮助,没有它我只能读取 4 个扇区中的 1 个(与 3/4 相比)。然而,这明显降低了传输速度——对我来说至少慢了大约 5 倍:5MB/s vs 25MB/s没有这个标志。无论如何,现在对于gddrescue (ddrescue) 部分..

时间 ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b /dev/sda b.bin

即将从 /dev/sda 复制 2048 字节到 b.bin
起始位置:infile = …

linux hard-drive dd bad-blocks

11
推荐指数
1
解决办法
3万
查看次数

标签 统计

bad-blocks ×10

hard-drive ×5

linux ×5

smart ×3

bad-sectors ×2

sd-card ×2

dd ×1

ext2 ×1

ext3 ×1

ext4 ×1

hardware-failure ×1

ssd ×1