這裡整理一些硬碟要壞掉之前會出現的一些症狀,例如有雜音、反應慢、資料損毀、抓不到硬碟、當機等,如果電腦出現這些症狀,最好馬上把重要資料備份出來。
最近幾個月我的 ACER TMP645-M 筆記型電腦的硬碟出了一些問題,時常發生檔案無法讀取、損毀等狀況,起初以為是軟體的 bug,但是後來重慣之後問題還是一樣存在,甚至更嚴重,直到上週突然聽到硬碟發出「喀啦~喀啦~」的怪聲音,過了沒幾天就整個掛了。
一般如果硬碟快要壞掉時,可能會出現以下幾種現象:
- 抓不到硬碟
- 開機的時候,電腦會去偵測硬碟,如果硬碟出了問題,可能就會出現找不到硬碟的狀況,也就是出現一堆奇怪的訊息,開不了機。
- 硬碟發出雜音
- 正常的硬碟在運轉時,有微小的聲音是正常的,每一顆硬碟的聲音都不太相同,但是如果您發現硬碟的聲音突然跟平常不同,例如:特別大聲、有「喀啦~喀啦~」聲響、或是各種奇奇怪怪的聲音,那這顆硬碟十之八九是快壞了,出現這樣的狀況最好「馬上」把資料備份出來!
- 開啟檔案很慢
- 如果電腦平常使用都正常,但是在開啟某些特定檔案時會特別慢,這通常是壞軌或是磁區出問題所導致的,如果不嚴重的話可使用軟體修椱後繼續使用,但是也有可能是整顆硬碟損毀的前兆!所以還是要注意。
- 檔案損毀
- 明明已經存檔的檔案,在儲存時也都沒有任何錯誤訊息,但是後來開啟時卻發生檔案損毀的情況,這也有可能是硬碟出問題。
- 硬碟反應遲緩
- 常常硬碟的指示燈一直亮著,電腦的反應有時候變得非常慢,甚至出現當機的狀況,但有時又可以正常使用,這種狀況也有可能是硬碟壞掉所造成的。
以上是比較常見的硬碟損壞徵兆,一顆硬碟壞掉時不見得每一種狀況都會出現,以我這次的經驗而言,前兩三個月只是發生檔案損毀的狀況,其餘一切正常,到了最近一兩週硬碟突然變得很慢,然後這幾天聽到很大聲的雜音之後,它就整個壞了,開機後連 Windows 系統都進不去。
我這台筆電用到現在才兩年,原本以為資料放在裡面應該很安全,沒想到硬碟說壞就壞,不過硬碟的損壞本來就很難預期,幸好資料都有備份出來。
後來我用 USB 隨身碟的 Linux 系統開機,進去看硬碟的狀況,我把硬碟掛載起來之後,就出現一大堆錯誤訊息。
各種奇奇怪怪的訊息都有,不過基本上只要看到是「輸入/輸出錯誤」(I/O error),就有很大的機率是硬體的問題,也就是硬碟壞了。
在終端機中進入掛載的硬碟,執行 ls
也是會出現「輸入/輸出錯誤」。
有些磁碟分割區是連掛載都沒辦法。
我檢查了一下 /var/log/syslog
這個系統記錄檔,開起來一看,整片都是紅色的,一大堆 I/O error。
我擷取了記錄檔中一部份的錯誤訊息,放在這裡記錄一下:
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
最後拍一張照片留念,接著就交給廠商維修了。