如何扫描 Ubuntu 机器上的启动/系统驱动器查找坏扇区?

如何扫描 Ubuntu 机器上的启动/系统驱动器查找坏扇区?

我的工作站是一台 Ubuntu v14.04 (Trusty) 机器,有两个系统启动选项。我可以运行 Windows(用于 protools 和音乐录制),但更多时候我会启动 Ubuntu 进行软件开发工作。

我需要将旧版本的 Ubuntu 升级到 18.04 LTS。在此之前,我担心系统驱动器的健康状况。在升级操作系统之前,我想扫描此分区以查找坏扇区和/或其他问题。如果驱动器状况不佳,我可能会选择购买新驱动器并在那里安装升级后的操作系统。

我想过逃跑fsck,但是看到此警告

运行 FSCK 之前需要注意一件事:您需要使用“umount”命令卸载文件系统。使用 FSCK 修复已安装的文件系统最终可能会造成比原始问题更大的损害。

我无法卸载系统驱动器,可以吗?这听起来像是破坏系统稳定性的好办法。

我还要指出的是,我安装当前正在运行的 Ubuntu 操作系统的磁盘分区只是 2TB 旋转磁盘上的一个 ext4 分区。其上的其他分区是 NTFS,用于运行单独的 Windows 7 启动。

答案1

扫描文件系统并不能告诉您太多有关硬件健康状况的信息。

正常的做法是看看智能数据磁盘。在 Linux 上,这是通过软件包smartctl中的命令完成的smartmontools

注意:某些字段的内容定义不太好,巨大的数字更多地表明几个字节/短值被编码在一个长整数中,并且必须对其进行解码(这可能取决于制造商/驱动器)

以下内容是从我的一个备忘录文件中复制的,也许并不完全是我自己写的:

智能数据

https://help.ubuntu.com/community/Smartmontools https://www.isalo.org/wiki.debian-fr/Smartmontools

配置

安装

您可以从 Synaptic 包管理器安装 smartmontools 包(参见 SynapticHowto),或者在终端中输入以下内容:

sudo apt-get install smartmontools 
检查硬盘的 SMART 功能

要确保您的驱动器支持 SMART,请输入:

sudo smartctl -i /dev/sda 

其中 /dev/sda 是您的硬盘。这将为您提供有关您的驱动器的简要信息。最后两行可能看起来像这样:

SMART support is: Available - device has SMART capability.
SMART support is: Enabled 
启用 SMART

如果您的驱动器未启用 SMART,您可以输入以下命令来启用它:

sudo smartctl -s on /dev/sda 
测试驾驶

您可以在安装驱动器时运行任何类型的测试,尽管性能可能会有所下降。可以在驱动器上进行三种类型的测试:

Short
Extended (Long)
Conveyance 

要估计进行每个测试所需的时间,请输入:

sudo smartctl -c /dev/sda 

最有用的测试是扩展测试(长)。您可以通过键入以下内容来启动测试:

sudo smartctl -t long /dev/sda 
结果

您可以通过输入以下命令来查看驱动器的测试统计信息:

sudo smartctl -l selftest /dev/sda 

要显示 IDE 驱动器的详细 SMART 信息,请输入:

sudo smartctl -a /dev/sda 

要显示 SATA 驱动器的详细 SMART 信息,请输入:

sudo smartctl -a -d ata /dev/sda

了解结果:

https://lime-technology.com/wiki/Understanding_SMART_Reports

注意:这也适用于新内核中通过 SCSI 堆栈运行并显示为 /dev/sdX 的 IDE 驱动器

答案2

SMART 与 fsck

xenoid 的说法是正确的,SMART 统计数据是驱动器健康状况的更可靠指标。但是,较旧的驱动器可能无法捕获统计数据。对于可能在 USB 驱动器上启动 Linux 的其他读者,您可能无法通过 USB 接口访问 SMART 统计数据。

fsck 可以查找并修复当前问题。它不会告诉您有关过去问题的任何信息,也不会提供任何能说明驱动器处于生命周期哪个阶段的统计数据。如果您无法获得 SMART 统计数据,fsck 也总比没有好,而且如果您不着急,至少有一种方法可以指示驱动器是否正在走向死亡。

另外,请注意,这不是“非此即彼”的情况。SMART 会告诉您驱动器的状况,但它不会真正解决当前问题。因此,即使使用 SMART,运行 fsck 仍然是一个好主意。

使用 fsck 指示驱动器状况

运行 fsck 将修复当前损坏并处理坏扇区。如果任何坏扇区是随机事件,或制造时的边缘点但最初未发现,则将捕获并修复这些坏扇区。这就是制造商在驱动器上留下一些备用扇区的原因。发现这些应该是罕见但并非意外的事件。

但是,当驱动器因盘片损坏而开始报废时,会定期发现新的坏扇区。如果您每隔几天重复一次 fsck 扫描,持续几周或一个月,并且在此期间出现任何新的坏扇区,至少您知道驱动器已经报废了。尽快停止使用它,并利用剩余的寿命将文件转移到其他设备上,只要您还能这样做。

运行 fsck

这让我们回到您最初的问题。fsck 的功能与 chkdsk 类似,出于同样的原因,无法扫描已安装的驱动器。解决方案几乎相同,在驱动器使用之前进行扫描,或者从另一个驱动器进行扫描,以便可以卸载扫描的驱动器。

从启动的驱动器运行 chkdsk 会显示一条消息,提示您扫描将在下次启动时进行。您也可以在启动时选择 GRUB 中的“高级选项”来运行 fsck。这样您就可以选择内核,并可以正常启动或以恢复模式启动。选择最新内核的恢复模式。这将运行一些检查和清理,然后为您提供下一步操作的选项菜单。其中一个选项是运行 fsck。该选项将卸载驱动器并运行 fsck。

您可以在此处查看有关此过程的更多详细信息:https://www.tecmint.com/fsck-repair-file-system-errors-in-linux/

另一种方法是启动实时 Linux 会话并从那里运行 fsck。如果您注意到上面的链接,您可以通过将其添加为参数来指定要扫描哪个驱动器/分区。在实时会话中验证驱动器标识(如果它是计算机上的主驱动器,它可能会被标记为sda,但从另一台设备启动可能不会将设备标记为相同)。

fsck 与坏块

这些操作比仅仅运行 fsck 要复杂一些。fsck 处理文件系统问题。这些问题可能来自损坏或坏扇区,fsck 将尝试恢复损坏的文件。但是,fsck 本身并不处理检测和标记任何坏块的根本问题,以免它们被重复使用。这部分对于了解驱动器是否已报废至关重要。但是,如果驱动器控制器通过 fsck 的活动发现问题,它可能会这样做,但您不会意识到坏块,这是驱动器 EOL 的指标。

为了明确处理坏块,badblocks需要使用另一个名为 的实用程序。这里事情变得有点复杂。您可以使用如下所述的方式手动运行该实用程序:https://mintguide.org/system/283-how-to-check-and-fix-the-disk-for-errors-and-bad-sectors-in-linux-mint.html。不过,还有一种不太复杂的方法。

当您运行 fsck 时,它可能会调用另一个专门用于特定文件系统的实用程序。对于ext文件系统(很有可能这就是 Ubuntu 所使用的文件系统),它会调用e2fsck。如果您直接运行 e2fsck,而不是 fsck,它可以运行 badblocks 实用程序本身(如果您c在命令中添加小写参数)(请参阅https://linux.die.net/man/8/e2fsck)本文介绍如何使用 e2fsck 来执行此操作:https://www.techwalla.com/articles/how-to-fix-bad-sectors-in-linux

fsck 没有小写c参数,但它有一个大写C参数,它的作用完全不同(显示完成栏,请参阅https://linux.die.net/man/8/fsck)。

Linux 命令区分大小写,我见过一些文章,例如https://mintguide.org/system/283-how-to-check-and-fix-the-disk-for-errors-and-bad-sectors-in-linux-mint.html,显示使用cfsck 的小写参数。我不知道这篇文章是否不正确,或者 fsck 是否足够聪明,可以将参数传递给 e2fsck。如果不先进行测试,然后对输入进行细致的检查,我不会相信它能完成这项工作。

相关内容