格式化时从列表中排除坏扇区

格式化时从列表中排除坏扇区

我正在准备一个旧硬盘用于我的 Pi。但它有超过 36 个坏扇区(avoce 阈值)。所以我跑去badblocks调查哪些扇区受到影响并将它们保存到文件中。

该文件现在基本上包含所有受影响扇区的列表,以换行符分隔。

我现在如何使用此信息,mkfs.ext4以便它不会在这些地址分配数据块?

答案1

所以我犯了一个错误:我使用 badblocks 命令搜索硬盘上的坏扇区,而不是首先使用带有 -c 选项的 mkfs.ext4 。

唯一的问题是我不想重复搜索,因为它花了大约 2 天的时间。

我运行了指向描述符文件 sda 的命令,所以我认为我现在拥有的信息是扇区(LBA 地址)。

因此,我可以计算并创建两个分区,因为扇区几乎位于同一位置。

  • 但最好创建一个不分割的单一分区。

    --有谁这么狡猾吗并知道命令需要什么格式的信息,例如,如果我创建一个具有 4K 块大小的分区。如果有人帮助我,那就太棒了!

一些问题:

  • 分区起始地址和分区块大小在转换信息时以哪种方式相关?

答案2

我现在自己弄清楚了。默认情况下,当指向 /dev/sda 等设备而不是分区时,使用 1k (1024) 的块大小。

当您运行 mke2fs 指向设备而不是分区(带起始地址和结束地址)时,不会写入 MBR / MBR 会被覆盖。

$ sudo dd if=/dev/sda bs=512 计数=1 | hexdump -C
1+0 记录中的 1+0 记录
复制
了 512 字节 (512 B),0.00240179 秒,213 kB/s
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.... …………|
*
00000200

因此,您只需将地址除以 4,并记住 1 个 4k 块有 4 个 1k 块即可计算地址。然后您可以创建一个文件并使用新创建的文件运行 mke2fs 以隔离坏块。像这样:
mke2fs -f ext4 -l badblocks_file /dev/sdX

相关内容