這裡整理一些硬碟要壞掉之前會出現的一些症狀,例如有雜音、反應慢、資料損毀、抓不到硬碟、當機等,如果電腦出現這些症狀,最好馬上把重要資料備份出來。

最近幾個月我的 ACER TMP645-M 筆記型電腦的硬碟出了一些問題,時常發生檔案無法讀取、損毀等狀況,起初以為是軟體的 bug,但是後來重慣之後問題還是一樣存在,甚至更嚴重,直到上週突然聽到硬碟發出「喀啦~喀啦~」的怪聲音,過了沒幾天就整個掛了。


一般如果硬碟快要壞掉時,可能會出現以下幾種現象:

抓不到硬碟
開機的時候,電腦會去偵測硬碟,如果硬碟出了問題,可能就會出現找不到硬碟的狀況,也就是出現一堆奇怪的訊息,開不了機。
硬碟發出雜音
正常的硬碟在運轉時,有微小的聲音是正常的,每一顆硬碟的聲音都不太相同,但是如果您發現硬碟的聲音突然跟平常不同,例如:特別大聲、有「喀啦~喀啦~」聲響、或是各種奇奇怪怪的聲音,那這顆硬碟十之八九是快壞了,出現這樣的狀況最好「馬上」把資料備份出來!
開啟檔案很慢
如果電腦平常使用都正常,但是在開啟某些特定檔案時會特別慢,這通常是壞軌或是磁區出問題所導致的,如果不嚴重的話可使用軟體修椱後繼續使用,但是也有可能是整顆硬碟損毀的前兆!所以還是要注意。
檔案損毀
明明已經存檔的檔案,在儲存時也都沒有任何錯誤訊息,但是後來開啟時卻發生檔案損毀的情況,這也有可能是硬碟出問題。
硬碟反應遲緩
常常硬碟的指示燈一直亮著,電腦的反應有時候變得非常慢,甚至出現當機的狀況,但有時又可以正常使用,這種狀況也有可能是硬碟壞掉所造成的。

以上是比較常見的硬碟損壞徵兆,一顆硬碟壞掉時不見得每一種狀況都會出現,以我這次的經驗而言,前兩三個月只是發生檔案損毀的狀況,其餘一切正常,到了最近一兩週硬碟突然變得很慢,然後這幾天聽到很大聲的雜音之後,它就整個壞了,開機後連 Windows 系統都進不去。

我這台筆電用到現在才兩年,原本以為資料放在裡面應該很安全,沒想到硬碟說壞就壞,不過硬碟的損壞本來就很難預期,幸好資料都有備份出來。

後來我用 USB 隨身碟的 Linux 系統開機,進去看硬碟的狀況,我把硬碟掛載起來之後,就出現一大堆錯誤訊息。

hard-disk-crash-2

輸入/輸出錯誤

各種奇奇怪怪的訊息都有,不過基本上只要看到是「輸入/輸出錯誤」(I/O error),就有很大的機率是硬體的問題,也就是硬碟壞了。

hard-disk-crash-5

輸入/輸出錯誤

在終端機中進入掛載的硬碟,執行 ls 也是會出現「輸入/輸出錯誤」。

hard-disk-crash-4

輸入/輸出錯誤

有些磁碟分割區是連掛載都沒辦法。

hard-disk-crash-3

無法掛載硬碟

我檢查了一下 /var/log/syslog 這個系統記錄檔,開起來一看,整片都是紅色的,一大堆 I/O error。

hard-disk-crash-1

syslog 系統記錄檔

我擷取了記錄檔中一部份的錯誤訊息,放在這裡記錄一下:

Mar 17 10:45:10 gtwang-TMP645-M kernel: [  114.387137] sd 1:0:0:0: [sdb] tag#9 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Mar 17 10:45:10 gtwang-TMP645-M kernel: [  114.387138] sd 1:0:0:0: [sdb] tag#9 Sense Key : Illegal Request [current] [descriptor] 
Mar 17 10:45:10 gtwang-TMP645-M kernel: [  114.387140] sd 1:0:0:0: [sdb] tag#9 Add. Sense: Unaligned write command
Mar 17 10:45:10 gtwang-TMP645-M kernel: [  114.387141] sd 1:0:0:0: [sdb] tag#9 CDB: Read(10) 28 00 1a 99 eb 40 00 00 08 00
Mar 17 10:45:10 gtwang-TMP645-M kernel: [  114.387142] blk_update_request: I/O error, dev sdb, sector 446294848
[略]
Mar 17 10:47:11 gtwang-TMP645-M kernel: [  234.931664] ata1: COMRESET failed (errno=-16)
Mar 17 10:47:11 gtwang-TMP645-M kernel: [  234.931680] ata1: limiting SATA link speed to 3.0 Gbps
Mar 17 10:47:11 gtwang-TMP645-M kernel: [  234.931684] ata1: hard resetting link
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.963788] ata1: COMRESET failed (errno=-16)
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.963805] ata1: reset failed, giving up
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.963810] ata1.00: disabled
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971732] ata1: EH complete
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971763] scsi_io_completion: 21 callbacks suppressed
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971774] sd 1:0:0:0: [sdb] tag#20 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971782] sd 1:0:0:0: [sdb] tag#20 CDB: Read(10) 28 00 24 be 20 00 00 00 01 00
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971786] blk_update_request: 21 callbacks suppressed
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971789] blk_update_request: I/O error, dev sdb, sector 616439808
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971809] sd 1:0:0:0: [sdb] tag#21 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971814] sd 1:0:0:0: [sdb] tag#21 CDB: Read(10) 28 00 1a 9d e8 18 00 00 08 00
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971818] blk_update_request: I/O error, dev sdb, sector 446556184
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971833] blk_update_request: I/O error, dev sdb, sector 517859744
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971844] FAT-fs (sdb5): unable to read boot sector
Mar 17 10:47:16 gtwang-TMP645-M kernel: [  239.971858] Aborting journal on device sdb8-8.
[略]
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594073] blk_update_request: I/O error, dev sdb, sector 446294824
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594080] sd 1:0:0:0: [sdb] tag#8 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594084] sd 1:0:0:0: [sdb] tag#8 CDB: Read(10) 28 00 1a 99 eb 30 00 00 08 00
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594086] blk_update_request: I/O error, dev sdb, sector 446294832
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594093] sd 1:0:0:0: [sdb] tag#9 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594097] sd 1:0:0:0: [sdb] tag#9 CDB: Read(10) 28 00 1a 99 eb 38 00 00 08 00
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594099] blk_update_request: I/O error, dev sdb, sector 446294840
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594106] sd 1:0:0:0: [sdb] tag#10 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594111] sd 1:0:0:0: [sdb] tag#10 CDB: Read(10) 28 00 1a 99 eb 40 00 00 08 00
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594113] blk_update_request: I/O error, dev sdb, sector 446294848
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594188] EXT4-fs error (device sdb8): __ext4_get_inode_loc:4009: inode #787899: block 3145851: comm pool: unable to read itable block
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594195] EXT4-fs (sdb8): previous I/O error to superblock detected
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594227] Buffer I/O error on dev sdb8, logical block 0, lost sync page write
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594795] EXT4-fs error (device sdb8): __ext4_get_inode_loc:4009: inode #787906: block 3145852: comm pool: unable to read itable block
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594803] EXT4-fs (sdb8): previous I/O error to superblock detected
Mar 17 10:47:31 gtwang-TMP645-M kernel: [  254.594824] Buffer I/O error on dev sdb8, logical block 0, lost sync page write
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.908298] EXT4-fs error (device sdb8): __ext4_get_inode_loc:4009: inode #787899: block 3145851: comm pool: unable to read itable block
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.908307] EXT4-fs (sdb8): previous I/O error to superblock detected
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.908322] Buffer I/O error on dev sdb8, logical block 0, lost sync page write
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.908763] EXT4-fs error (device sdb8): __ext4_get_inode_loc:4009: inode #787906: block 3145852: comm pool: unable to read itable block
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.908770] EXT4-fs (sdb8): previous I/O error to superblock detected
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.908783] Buffer I/O error on dev sdb8, logical block 0, lost sync page write
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936567] EXT4-fs (sdb8): previous I/O error to superblock detected
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936583] Buffer I/O error on dev sdb8, logical block 0, lost sync page write
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936588] EXT4-fs error (device sdb8): ext4_journal_check_start:56: Detected aborted journal
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936592] EXT4-fs (sdb8): Remounting filesystem read-only
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936594] EXT4-fs (sdb8): previous I/O error to superblock detected
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936602] Buffer I/O error on dev sdb8, logical block 0, lost sync page write
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.936986] EXT4-fs warning (device sdb8): htree_dirblock_to_tree:959: inode #786658: lblock 0: comm pool: error -5 reading directory block
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.938088] EXT4-fs warning (device sdb8): htree_dirblock_to_tree:959: inode #786452: lblock 0: comm pool: error -5 reading directory block
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.938421] EXT4-fs warning (device sdb8): htree_dirblock_to_tree:959: inode #786451: lblock 0: comm pool: error -5 reading directory block
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.947667] EXT4-fs warning (device sdb8): htree_dirblock_to_tree:959: inode #786450: lblock 0: comm pool: error -5 reading directory block
Mar 17 10:47:32 gtwang-TMP645-M kernel: [  255.962730] EXT4-fs warning (device sdb8): htree_dirblock_to_tree:959: inode #786449: lblock 0: comm pool: error -5 reading directory block

最後拍一張照片留念,接著就交給廠商維修了。

hard-disk-crash-6

記錄檔 I/O Error

參考資料:makeuseofiThome