我的3 Tb驱动器有故障。有很多坏块,但仍然有大约2.6 Tb的可用空间,我想将其用于垃圾存储(音乐,视频等)。起初,我遇到了一些人的手册。他将磁盘切成几个分区,然后制作了JBOD(只是一堆磁盘)RAID(如果您感兴趣,这里有一个链接(俄语):https : //habr.com/ru/post/252211)。但是有人在评论该文章时提到,mkfs本身可以使用“ -c”键来完成此操作。现在我想知道,它是如何工作的?是的,有一个手册页,它告诉我们:
-c在创建文件系统之前,检查设备是否有坏块。如果两次指定此选项,则使用较慢的读写测试,而不是快速的只读测试。
维基百科上有一篇文章介绍了几乎相同的内容。它检查设备是否有坏块,然后怎么办?互联网上到那里的人们都说,它标记了坏块,而OS并未使用它们。我该如何检查?是否有任何实用程序可以显示标记出的块以备将来使用(可能会创建将来的分区)?
确实man mkfs.ext4
(man 8 mke2fs
)说出您所引用的内容:
-c
创建文件系统之前,请检查设备是否有坏块。如果两次指定此选项,则使用较慢的读写测试,而不是快速的只读测试。
但也有-l
:
-l filename
从文件名中读取坏块列表。注意,坏块列表中的块编号必须使用与所使用的相同的块大小来生成mke2fs
。结果,-c
选项tomke2fs
是一种更简单,更不易出错的方法,在格式化磁盘之前检查磁盘是否有坏块,因为mke2fs
它将自动将正确的参数传递给badblocks
程序。
因此,让我们调查一下man 8 badblocks
:
重要说明:如果要将的输出
badblocks
馈送给e2fsck
或mke2fs
程序,则正确指定块大小非常重要,因为生成的块号非常取决于文件系统使用的块大小。因此,强烈建议用户不要badblocks
直接运行,而应使用and程序的-c
选项。e2fsck
mke2fs
它提到了e2fsck
(又名fsck.ext4
ext4),所以让我们检查一下man 8 e2fsck
[强调我的]:
-c
此选项导致e2fsck
使用badblocks(8)
程序对设备进行只读扫描,以查找任何坏块。如果找到任何坏块,则将它们添加到坏块inode中,以防止将它们分配给文件或目录。如果两次指定此选项,则将使用无损读写测试来完成坏块扫描。
而且,由于mke2fs
和e2fsck
是相同的工具包的一部分,我希望 -c
在mke2fs
以相同的方式工作,尽管它的描述中没有明确说明这一点。
然后检查文件系统知道使用的坏块dumpe2fs
。来自man 8 dumpe2fs
:
-b
打印在文件系统中保留为错误的块。
(此答案的积分)。
请注意,是存储信息的文件系统。要将其用于将来的文件系统,需要先保存它,然后再销毁当前文件系统。而且,如果您更改分区表或为新文件系统选择不同的块大小,则需要重新计算数字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句