Filesystems

手動告訴 EXT4 壞扇區?

  • May 23, 2022

該驅動器目前位於 NTFS 中。執行chkdsk幾個小時後,我找到了壞扇區的位置(下圖)。我想在 EXT4 中重新格式化磁碟。我聽說 EXT4 有某種元數據來標記壞扇區,並且有一個實用程序,但我不想再執行幾個小時的測試。我可以直接告訴 EXT4 我已經找到的壞扇區位置chkdsk嗎?

Stage 4: Looking for bad clusters in user file data ...
Read failure with status 0xc000009c at offset 0x280036f1000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x280036fb000 for 0x1000 bytes.


Read failure with status 0xc000009c at offset 0x280cb987000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x280cb993000 for 0x1000 bytes.


Read failure with status 0xc000009c at offset 0x280dbdc2000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x280dbdc4000 for 0x1000 bytes.


Read failure with status 0xc000009c at offset 0x2835d5bb000 for 0x10000 bytes.
Read failure with status 0xc000009c at offset 0x2835d5c0000 for 0x1000 bytes.

**這很嚴重:備份您的數據並丟棄該硬碟。**在您可以進行備份之前,請不要使用驅動器;斷開它。

在製作文件系統時,有一種直接的方法可以告訴 ext4 哪些扇區是壞的,在製作文件系統時使用-L。*我不會在這裡更詳細地描述它,因為這確實是一個糟糕的想法;*不過,您應該隨意自己研究它。

發現這些錯誤需要幾個小時的事實意味著您的硬碟驅動器在比這些已經出現故障的位置更多的地方進行正常操作需要很長時間。這意味著有更多的地方即將失敗。這個驅動器正在失去數據,它不是

這些地方壞了,驅動器的其餘部分還可以

它是

這個驅動器壞了,但現在大部分都經過努力,仍然可讀;它看起來是正確的,但沒有辦法知道它是否正確。可訪問性可能隨時變得更糟。

使用 EXT4 格式化分區並在其上複製任何新數據會給設備帶來更大的壓力。更多的事情會失敗。

這個驅動就完成了。它不再適合存放。對不起。把它扔掉。當數據在未知位置出現錯誤或在您需要時可能無法讀取時,實際上沒有有用的數據。

大約 20 到 25 年前,在磁碟具有內部缺陷管理之前,文件系統在格式化和驅動器老化時進行塊級缺陷管理並將塊添加到壞塊列表是有意義的。

現代磁碟都具有 SMART 缺陷管理(或 NVME 等效功能)並自動將壞塊替換為好塊。通常寫入壞塊足以觸發它通過替換一個好塊來修復。

如果您的磁碟有大量壞塊,這意味著它已經用完了替換塊。考慮到它開始時有大量替換塊,這可能意味著磁碟發生機械故障(可能有碎片漂浮在內部造成更多損壞),並且可能接近完全災難性故障。

smartctl -a您可以使用設備上的命令來驗證這一點。在頂部附近,它應該指示驅動器執行狀況,在底部附近,它包含一個塊錯誤列表。如果它表明磁碟出現故障或您看到塊錯誤報告,則可能是磁碟出現故障。如果它說沒問題,您應該執行一個測試(-t long或者-t short),然後等待(通常短時間為 2 分鐘,長時間為數小時),再次檢查並查找測試結果。

如果驅動器通過了長時間的測試,它可能仍然可以使用,並且您可能只需要觸發一些對壞扇區的寫入以嘗試修復它們。

引用自:https://unix.stackexchange.com/questions/703543