如何确认 dddoes Not
擦除由 e2fsck 创建的坏块列表?
一个旧的 1500 GB HDD(硬盘驱动器),没有数据,运行此命令
大约需要(1932 分钟):33 hours
time sudo e2fsck -c -c -k -C 0 /dev/sda1
输出
e2fsck 1.46.5 (30-Dec-2021)
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: done
_1500G_GEXT4: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
_1500G_GEXT4: ***** FILE SYSTEM WAS MODIFIED *****
_1500G_GEXT4: 11/91578368 files (0.0% non-contiguous), 6031026/366284288 blocks
real 1932m4.759s
user 0m2.296s
sys 0m7.618s
time sudo e2fsck -c -c -k -C 0 /dev/sda1
-c
使用 badblocks(8) 程序进行只读扫描
第二步,-c
进行非破坏性的写入+读取测试,
Linux 中的外部硬盘坏道恢复/标记实用程序
-k
与 -c 选项结合使用时,坏块列表中任何现有的坏块都将被保留,并且通过运行 badblocks(8) 发现的任何新坏块都将添加到现有的坏块列表中。
-C fd
-C 0
可以监控文件系统检查的进度
看man e2fsck
换句话说:
执行 dd 命令会擦除需要33 hours
实现的目标吗?
dd 命令会擦除坏块列表吗?
如何确认 dddoes Not
擦除了 e2fsck 创建的坏块列表?
dd 命令表示以下一个或两个:
time sudo dd if=/dev/urandom of=/dev/sd_ bs=64K status=progress
time sudo dd if=/dev/zero of=/dev/sd_ bs=64K status=progress
细节:
lsblk -ae7 -oType,name,path,size,fsuse%,tran,pttype,fstype,label,partlabel,mountpoints |grep 'sda\|MOUNT'
TYPE NAME PATH SIZE FSUSE% TRAN PTTYPE FSTYPE LABEL PARTLABEL MOUNTPOINTS
disk sda /dev/sda 1.4T sata gpt
part └─sda1 /dev/sda1 1.4T gpt ext4 _1500G_GEXT4 PART_1
neofetch --stdout |grep 'OS:'
操作系统:Kubuntu 22.04.2 LTS x86_64
e2fsck -V
e2fsck 1.46.5(2021 年 12 月 30 日)
使用 EXT2FS 库版本 1.46.5,2021 年 12 月 30 日
--
答案1
您想要实现什么?--实现硬盘无错误。
这可以让磁盘将错误重新分配给备用扇区。
重新分配扇区并不能修复损坏的磁盘。重新分配过程会掩盖损坏的扇区。
你所做的只是在文件系统层面上进行装饰。在对磁盘进行分区和格式化时,它看起来会很干净,但在固件层面上,你可能会遇到很大的混乱。
计算机速度变慢或挂起。磁盘发出咔嗒声。
咔嗒声表示硬件有问题。所有症状都表明您的磁盘已损坏,请更换它。
运行“smartmontools”来编译 SMART 信息很可能会提供一些额外的参数来不再使用该磁盘。
答案2
如果磁盘出现坏块,则应更换该磁盘。问题很快就会出现。
但是,解决坏块问题的方法是使用 dd 命令进入该磁盘上的文件系统中的文件,而不是整个磁盘。文件系统会知道坏块在哪里,并会去到它们旁边。