linux下其实修复磁盘的工具更多,很多甚至集成在系统里,方便调用。
1、尝试fsck修复磁盘,这个命令其实集成度好的系统开机会自动运行,比如slackware,debian等,方法如下:
fdisk -l
查询需要修复的磁盘盘符
fsck -a /dev/sdc1
进行修复
](https://img-blog.csdnimg.cn/ef8d281989234767b3370e14cd9750d7.png)
2、fsck这个命令其实集成在了很多linux的启动初始化程序中,没过去的情况也有,说明磁盘损伤严重,这个时候要尝试手动屏蔽坏道。注意不论损伤有多严重,修复坏道,仅限于逻辑坏道,原理就是跳过错误屏蔽错误。物理坏道是磁盘产生了机械损伤,那个是不可逆,不可屏蔽的,只能更换硬盘。
badblocks -v /dev/sdf1 >bads.txt
将坏道信息输入到缓存bads.txt,然后使用fsck有针对性的修复:
fsck -l bads.txt /dev/sdf1
如果是ext3/ext4的文件卷,linux有专门的命令e2fsck
sudo e2fsck -l bads.txt /dev/sdf1
3、使用samrtctl修复,这个方法对带有 S.M.A.R.T(自我监控分析报告技术(Self-Monitoring, Analysis and Reporting Technology))系统的现代磁盘(ATA/SATA 和 SCSI/SAS 硬盘以及固态硬盘)更加的可靠和高效。笔者的硬盘是sata移动硬盘,很适合这种一件操作。
apt-get install smartmontools
没有的需要装一下,一般的linux主流系统都集成了
smartctl -H /dev/sdf1
修复,注意参数是大写的H
运行完输出如下:
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-kali6-amd64] (local build)
Copyright © 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Health Satus ok
4.逻辑坏道的修复,屏蔽,跳出及数据还原方法
逻辑坏道修复方式其实还是使用badblocks,下面举例来说明。
下面是badblocks在/dev/sdf1分区检查出的坏道列表:
cat bads.txt
6821532
6821533
6821534
6821535
6821536
6821537
6821538
6821539
4.1先备份数据(可选)若修复的硬盘或分区的重要数据已备份,此部分可以省略
dd if=/dev/sdf1 skip=6821532 of=/tmp/6821539-6821532.dat count=8
这句命令是拷贝镜像错误分区,并且跳过异常坏逻辑分区,跳过的数是8,具体情况自行修改,仅仅是例子。
4.2硬盘在使用时不能修复,否则可能存在写并发的问题,所以卸载分区
umount /dev/sdf1
4.3umount 分区成功后,修复命令如下,其中-s表示给出进度,-w表示写入修复的,后面是结束(END)和开始(START)块号
badblocks -s -w /dev/sdf1 6821539 6821532
注意!命令的使用方式是:::END在前,START在后!!!
badblocks -s -v /dev/sdc1 6821539 6821532
此句命令是检查是否已修复,实在不行的用极端暴力的格式化试试
dd if=/tmp/217874591-217874595.dat of=/dev/sdf1
此句是恢复备份的错误数据
4.4操作完毕,最后检查一下坏道的修复情况
badblocks -s -v -o /root/bads2.txt /dev/sdf1
若没有坏道说明修复已完成,若有坏道可以尝试重复以上方法。完成后重新mount分区,或者直接插拔移动硬盘即可(我是怕了,有心里阴影,所以软操作的,汗啊)。
mount /dev/sdf1 /mnt/usb1
5、万幸坏道的数据不重要,重要的都备份出来了。
本教程完全来自实例、实测,具体参数请根据个人情况修改
版权归原作者 CIb0la 所有, 如有侵权,请联系我们删除。