什么是坏扇区/坏块(bad sector/bad block)?顾名思义,它是指磁盘驱动器或闪存上无法再读取或写入的部分,这通常是由于磁盘表面的永久性物理损坏或闪存晶体管故障造成的。
随着坏扇区的不断积累,它们会严重影响存储设备的性能、降低其容量,甚至导致硬件完全故障,从而导致数据丢失。需要注意的是,出现坏道的情况应提醒你考虑更换新硬盘驱动器,或直接将坏道标记为不可用。
在本文中,小编将简单介绍如何通过特定的磁盘扫描工具,帮助您你检测Linux硬盘驱动器或闪存设备是否存在坏道,接下来一起来看看吧。
使用 badblocks 工具检查坏扇区
badblocks
工具可让你扫描存储设备(例如硬盘或外部驱动器)中的坏扇区,设备通常以/dev/sdc
或/dev/sda
之类的文件形式列出。
步骤1:列出所有磁盘和分区
首先使用具有超级用户权限的fdisk命令显示有关所有磁盘驱动器或闪存及其分区的信息:
sudo fdisk -l
这将帮助你识别要扫描的正确设备名称。
步骤2:扫描坏扇区/坏块
然后通过输入以下命令扫描Linux磁盘驱动器以检查是否有坏扇区/坏块:
sudo badblocks -v /dev/sda10 > badsectors.txt
在上面的命令中,badblocks正在扫描设备/dev/sda10(请替换成你自己实际设备名称),-v
显示操作的详细信息。此外,操作结果通过输出重定向存储在文件badsectors.txt文中。
如果你发现磁盘驱动器上有任何坏扇区,请先卸载磁盘,并按如下步骤指示操作系统不要写入已报告的扇区。
步骤3:将坏扇区标记为不可用
你需要使用e2fsck
(针对 ext2/ext3/ext4文件系统)或fsck
命令,结合badsectors.txt
文件和设备文件执行操作,命令示例如下。
对于ext2/ext3/ext4文件系统:
sudo e2fsck -l badsectors.txt /dev/sda10
对于其他文件系统:
sudo fsck -l badsectors.txt /dev/sda10
使用Smartmontools扫描磁盘健康状况(推荐)
该方法对现代磁盘(ATA/SATA和SCSI/SAS硬盘驱动器及固态驱动器)更可靠高效,这类设备出厂时均预装S.M.A.R.T(自我监测、分析与报告技术)系统,可协助检测、报告并记录设备健康状态,便于你预判潜在的硬件故障。
步骤1:在Linux中安装smartmontools
可以通过运行以下命令来安装smartmontools工具 :
sudo apt install smartmontools #适用于基于Debian系统 sudo dnf install smartmontools #适用于基于RHEL系统
步骤2:使用smartctl运行健康检查
安装完成之后,现在就可以使用smartctl(该工具用于操控磁盘内置的S.M.A.R.T系统)。你也可通过如下方式查阅其手册页或帮助页:
man smartctl smartctl -h
步骤3:运行基本健康测试
现在执行 smartctl命令,并将你的特定设备名作为参数传入。如下列命令所示,其中需包含-H
或--health
标志以显示S.M.A.R.T综合健康测试结果:
sudo smartctl -H /dev/sda10
上述结果表明硬盘状况良好,并且短期内不太可能出现硬件故障。
可选:查看完整的SMART报告
要获取磁盘信息的完整概览,请使用-a
或--all
选项打印该磁盘的所有S.M.A.R.T数据;或使用-x
或--xall
选项显示磁盘的全部信息(包含S.M.A.R.T及非S.M.A.R.T相关数据)。
sudo smartctl -a /dev/sda10
或者更全面一些:
$ sudo smartctl -x /dev/sda10
总结
在上述内容中,小编介绍了使用badblocks和smartmontools工具识别和管理Linux驱动器上的坏扇区简单方法。在平常工作当中,密切关注Linux磁盘存储健康状况至关重要,而这些工具让这一切变得非常简单。