這裡整理一些硬碟要壞掉之前會出現的一些症狀,例如有雜音、反應慢、資料損毀、抓不到硬碟、當機等,如果電腦出現這些症狀,最好馬上把重要資料備份出來。
最近幾個月我的 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
最後拍一張照片留念,接著就交給廠商維修了。