如何在 Linux 上检查硬盘的坏扇区或坏块

讓我們首先定義壞扇區/塊,它是磁碟驅動器或閃存內的一個部分,無法再讀取或寫入,因為磁碟表面出現固定的物理損壞或閃存晶體管故障的結果。

隨著壞扇區的不斷累積,它們可能會對您的磁碟驅動器或閃存容量造成不良或破壞性的影響,甚至可能導致硬件故障。

同時,需要注意的是,壞塊的存在應警示您開始考慮購買新的磁碟驅動器或將壞塊標記為不可用。

因此,在本文中,我們將介紹一些必要的步驟,可以使用特定的磁碟掃描工具來確定您的Linux磁碟驅動器或閃存中是否存在壞扇區。

話雖如此,以下是方法:

使用badblocks工具檢查Linux磁碟驅動器中的壞扇區

A badblocks program enables users to scan a device for bad sectors or blocks. The device can be a hard disk or an external disk drive, represented by a file such as /dev/sdc.

首先,使用超級用戶權限使用fdisk命令顯示有關所有磁碟驅動器或閃存及其分區的信息:

$ sudo fdisk -l
List Linux Filesystem Partitions

然後,輸入以下命令掃描您的Linux磁碟驅動器以檢查壞扇區/塊:

$ sudo badblocks -v /dev/sda10 > badsectors.txt
Scan Hard Disk Bad Sectors in Linux

在上面的命令中,badblocks正在掃描設備/dev/sda10(請記得指定實際設備),並通過-v選項顯示操作詳細信息。此外,操作的結果通過輸出重定向存儲在文件badsectors.txt中。

如果在硬盤驅動器上發現任何壞道,請卸載該磁盤並通過以下命令告訴操作系統不要對報告的扇區進行寫入。

您需要使用e2fsck(對於ext2/ext3/ext4文件系統)或fsck命令,並將badsectors.txt文件和設備文件作為命令的參數,如下所示。

選項-l告訴命令將文件中列出的塊號添加到壞道列表中,文件名為badsectors.txt

------------ Specifically for ext2/ext3/ext4 file-systems ------------ 
$ sudo e2fsck -l badsectors.txt /dev/sda10

OR

------------ For other file-systems ------------ 
$ sudo fsck -l badsectors.txt /dev/sda10

使用Smartmontools掃描Linux磁盤上的壞道

對於現代磁盤(ATA/SATA和SCSI/SAS硬盤和固態硬盤)來說,這種方法更可靠和高效,這些磁盤配備了一個能夠檢測、報告和可能記錄其健康狀態的S.M.A.R.T(自我監測、分析和報告技術)系統,這樣您就可以找出任何即將發生的硬件故障。

您可以運行以下命令安裝smartmontools

------------ On Debian/Ubuntu based systems ------------ 
$ sudo apt-get install smartmontools

------------ On RHEL/CentOS based systems ------------ 
$ sudo yum install smartmontools

安裝完成後,使用smartctl來控制集成在磁盤中的S.M.A.R.T系統。您可以通過查閱其man頁面或幫助頁面來了解更多信息:

$ man smartctl
$ smartctl -h

現在執行smartctrl命令,並將您的特定設備命名為參數,如下面的命令中所示,標誌-H--health被包含以顯示SMART整體健康自評測試結果。

$ sudo smartctl -H /dev/sda10
Check Linux Hard Disk Health

上面的結果表明您的硬盤健康,可能不會很快出現硬件故障。

要獲得磁盤信息的概覽,使用-a--all選項打印有關磁盤的所有SMART信息,以及-x--xall,它顯示有關磁盤的所有SMART非SMART信息。

在本教程中,我們涵蓋了一個非常重要的主題,涉及磁盤驅動器健康診斷,您可以通過下面的反饋部分與我們聯繫,分享您的想法或提出任何問題,並記住始終保持與Tecmint的聯繫。

Source:
https://www.tecmint.com/check-linux-hard-disk-bad-sectors-bad-blocks/