Hard-Disk

命令做什麼:badblocks -svn /dev/sda?它只是報告壞塊嗎?

  • December 22, 2021

這個命令:

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完成後,磁碟應該包含與開始執行之前相同的數據。

過程

  1. 讀取塊並保存
  2. 寫入測試數據塊
  3. 擷取狀態結果並在必要時報告
  4. 重寫保存的塊
  5. 重複下一個塊直到完成

警告

將一個好的數據塊寫入磁碟將導致預期的操作:該塊將被寫入。但是,如果寫入失敗,磁碟韌體將自動且透明地將塊地址重新映射到其備用塊之一,並在磁碟上的新位置為您重試寫入。如果該寫入成功,您將不會知道任何不同,並且磁碟看起來完全正常。(在 SMART 表中,Sector Reallocated 計數器將加一。)最終,隨著時間的推移,備用塊集可能會被用完,從此時起,本應重新映射的磁碟寫入將失敗。

一個完整的磁碟寫入測試,例如由or提供的測試badblocks,將強制寫入所有磁碟塊,確保它們都對您可用,或者突出顯示無法重新映射的磁碟塊。-w``-n

請注意,這**badblocks並不能保證您沒有失去數據**:如果它無法讀取一個塊,它就無法在測試後重寫它,因此它不會執行寫入測試(但會報告該塊是壞的)。如果badblocks無法讀取塊,那麼任何其他應用程序都無法讀取,並且您的數據將失去

我的建議是,如果您有任何無法重新映射**的磁碟塊,請盡快更換磁碟,**因為您不再有任何安全網。(就個人而言,我會在達到此階段之前更換這樣的磁碟。)該ddrescue工具可能有助於將數據從這個損壞的磁碟複製到新磁碟

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