答案1
HDD和SSD的SMART信息
gnome-disks
检查 SMART 信息。根据此链接,使用磁盘别名很容易,
恶意软件损坏引导扇区后重新格式化硬盘 - 向下滚动到“磁盘硬件可能已损坏”
通过(1)处的按钮选择SMART,并在(2)处检查整体评估。
fsck
在ext4
文件系统上运行
当我fsck
在ext4
文件系统上使用时,我从另一个驱动器启动并卸载文件系统。
sudo e2fsck -f /dev/sdxn
其中 x 是设备字母,n 是分区号,/dev/sda1
根据屏幕截图所示。
有时运行两次此命令会有所帮助。有时文件系统损坏且无法修复。
有时会出现坏扇区(驱动器上的硬件缺陷)。然后,您可以使用以下命令标记坏扇区(并使系统避开它们)
sudo e2fsck -cfk /dev/sdxn
查看手册
man e2fsck
有关更多详细信息,以及有关修复文件系统的更多提示,请访问以下链接,
答案2
恐怕您的硬盘有坏块或已损坏。您是否看到此消息:blk_update_request: I/O error, dev sda, sector 2048
?这意味着无法从物理设备读取此扇区。
您需要从 LiveCD 启动并使用以下命令检查您的驱动器:
$ sudo smartctl -HA /dev/sda
并检查该行
SMART overall-health self-assessment test result: PASSED
以及该行Reallocated_Sector_Ct
是否应包含0
在RAW_VALUE
字段中。
如果 SMART 自我检测成功,PASSED
您可以尝试使用以下badblocks
工具“重新映射”坏块:
$ sudo badblocks -svo ~/msg.log /dev/sda
并在之后运行 fsck:
$ sudo fsck -a /dev/sda1
如果 SMART 自我检测结果正确,则FAILED
您需要更换 HDD。
PS:所有这些步骤您都应该在 LiveCD 会话中执行。并且您必须将其替换/dev/sda
到您的驱动器。
更新 [2017.11.11]:
因此,我检查了我的一个旧 HHD badblocks
,并收到了以下消息syslog
:
Nov 10 13:46:55 router kernel: [ 121.339691] ata2.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov 10 13:46:55 router kernel: [ 121.339702] ata2.01: BMDMA stat 0x64
Nov 10 13:46:55 router kernel: [ 121.339711] ata2.01: failed command: READ DMA
Nov 10 13:46:55 router kernel: [ 121.339726] ata2.01: cmd c8/00:08:58:64:00/00:00:00:00:00/f0 tag 0 dma 4096 in
Nov 10 13:46:55 router kernel: [ 121.339726] res 51/40:00:5b:64:00/00:00:00:00:00/f0 Emask 0x9 (media error)
Nov 10 13:46:55 router kernel: [ 121.339733] ata2.01: status: { DRDY ERR }
Nov 10 13:46:55 router kernel: [ 121.339738] ata2.01: error: { UNC }
Nov 10 13:46:55 router kernel: [ 121.364282] ata2.00: configured for UDMA/100
Nov 10 13:46:55 router kernel: [ 121.380287] ata2.01: configured for UDMA/100
Nov 10 13:46:55 router kernel: [ 121.380327] sd 1:0:1:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov 10 13:46:55 router kernel: [ 121.380337] sd 1:0:1:0: [sdb] tag#0 Sense Key : Medium Error [current] [descriptor]
Nov 10 13:46:55 router kernel: [ 121.380346] sd 1:0:1:0: [sdb] tag#0 Add. Sense: Unrecovered read error - auto reallocate failed
Nov 10 13:46:55 router kernel: [ 121.380355] sd 1:0:1:0: [sdb] tag#0 CDB: Read(10) 28 00 00 00 64 58 00 00 08 00
Nov 10 13:46:55 router kernel: [ 121.380361] blk_update_request: I/O error, dev sdb, sector 25691
Nov 10 13:46:55 router kernel: [ 121.380369] Buffer I/O error on dev sdb, logical block 3211, async page read
Nov 10 13:46:55 router kernel: [ 121.380410] ata2: EH complete
因此,所有有关 I/O 错误的信息都来自内核。我发现最有趣的是这一行:
Nov 10 13:46:55 router kernel: [ 121.380346] sd 1:0:1:0: [sdb] tag#0 Add. Sense: Unrecovered read error - auto reallocate failed
据我所知,这是来自磁盘固件的解码消息。看来固件发现了读取错误并尝试重新分配扇区,但失败了。因此,在我们的案例中,badblocks
除了读取所有扇区外什么也没做,我们可以用 替换它dd if=/dev/sdX of=/dev/null
。
现在我对 非常不满sudodus
。最合适的解决方案是:
sudo e2fsck -cfk /dev/sdxn