命令做什麼:badblocks -svn /dev/sda
?它只是報告壞塊嗎?
這個命令:
badblocks -svn /dev/sda
它有什麼作用?它只是報告壞塊嗎?或者它是否以某種方式處理壞塊,這樣我就不必擔心它們?
我閱讀了手冊
man badblocks
,但我沒有得到-n
選項:-s Show the progress of the scan by writing out rough percentage completion of the current badblocks pass over the disk. Note that badblocks may do multiple test passes over the disk, in particular if the -p or -w option is requested by the user. -v Verbose mode. Will write the number of read errors, write errors and data- corruptions to stderr. -n Use non-destructive read-write mode. By default only a non-destructive read- only test is done. This option must not be combined with the -w option, as they are mutually exclusive.
badblocks -svn /dev/sda
持續了將近兩天的執行輸出:更新
一些文章建議執行後
badblocks -svn /dev/sda
,硬碟控制器會處理壞塊。沒有把握。讓硬碟控制器用備用塊替換壞塊。
https://askubuntu.com/a/490552/507217
如果您以這種方式完全處理了磁碟,則磁碟控制器應該已將所有壞塊替換為工作塊,並且重新分配的計數將在 SMART 日誌中增加。
https://askubuntu.com/a/490549/507217
聰明的
badblocks
執行命令後,我通過以下方式檢查了 SMART 表:smartctl --all /dev/sda
請注意,
Current_Pending_Sector
原始值為56
.28
是報導的兩倍badblocks
。也許他們是相關的。錯誤解釋
根據這個:
badblocks
錯誤日誌的格式為reading/writing/comparing
. 就我而言,所有28
錯誤都是閱讀錯誤。這意味著沒有應用程序可以讀取這些塊。作業系統日誌
我查看了作業系統日誌
sudo journalctl -xe
。實際上,SMART 會拋出有關這些56
壞扇區(28
壞塊)的錯誤:智能
$$ 1243 $$: 設備: /dev/sda$$ SAT $$, 56 目前不可讀(待處理)扇區
結論
我寧願在為時已晚之前備份數據並更換硬碟。
由該選項觸發的“非破壞性讀寫模式
-n
”將測試數據寫入每個塊,就像-w
, 並強制磁碟接受寫入、重新分配故障塊或返回寫入錯誤。然而,它最大的優勢在於它首先讀取它要覆蓋的塊,並在寫入測試數據後重新寫入該數據。這意味著
badblocks
完成後,磁碟應該包含與開始執行之前相同的數據。過程
- 讀取塊並保存
- 寫入測試數據塊
- 擷取狀態結果並在必要時報告
- 重寫保存的塊
- 重複下一個塊直到完成
警告
將一個好的數據塊寫入磁碟將導致預期的操作:該塊將被寫入。但是,如果寫入失敗,磁碟韌體將自動且透明地將塊地址重新映射到其備用塊之一,並在磁碟上的新位置為您重試寫入。如果該寫入成功,您將不會知道任何不同,並且磁碟看起來完全正常。(在 SMART 表中,Sector Reallocated 計數器將加一。)最終,隨著時間的推移,備用塊集可能會被用完,從此時起,本應重新映射的磁碟寫入將失敗。
一個完整的磁碟寫入測試,例如由or提供的測試
badblocks
,將強制寫入所有磁碟塊,確保它們都對您可用,或者突出顯示無法重新映射的磁碟塊。-w``-n
請注意,這**
badblocks
並不能保證您沒有失去數據**:如果它無法讀取一個塊,它就無法在測試後重寫它,因此它不會執行寫入測試(但會報告該塊是壞的)。如果badblocks
無法讀取塊,那麼任何其他應用程序都無法讀取,並且您的數據將失去。我的建議是,如果您有任何無法重新映射**的磁碟塊,請盡快更換磁碟,**因為您不再有任何安全網。(就個人而言,我會在達到此階段之前更換這樣的磁碟。)該
ddrescue
工具可能有助於將數據從這個損壞的磁碟複製到新磁碟。