如何在破壞性模式下對壞區塊進行單遍處理?

如何在破壞性模式下對壞區塊進行單遍處理?

我在用壞塊對磁碟上的任何資料進行破壞性擦除;使用以下命令:

badblocks -wsp 0 /dev/sdb1

我通過了該選項-p 0,希望這只會導致一次通過,但我得到了多次通過:

Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done
Reading and comparing: done
Testing with pattern 0xff: done
Reading and comparing: 19.01% done, 7:43:47 elapsed. (0/0/0 errors)

透過閱讀線上幫助頁,我可以看到該-w選項本身包括四遍:

-w 使用寫入模式測試。使用此選項,badblocks 透過在裝置的每個區塊上寫入一些模式(0xaa、0x55、0xff、0x00)、讀取每個區塊並比較內容來掃描壞區塊。此選項不能與 -n 選項組合使用,因為它們是互斥的。

這對於我的需求來說是太多的。有什麼辦法可以實現單次破壞性傳遞嗎?

答案1

進一步閱讀手冊頁後,我解決了這個問題。-w正如選項描述所暗示的那樣,確實執行了一次傳遞-p

預設值為 0,表示壞區塊將在第一次通過後退出。

一次通過由四種測試模式組成:

-w 使用寫入模式測試。使用此選項,badblocks 透過在裝置的每個區塊上寫入一些模式(0xaa、0x55、0xff、0x00)、讀取每個區塊並比較內容來掃描壞區塊。

可以使用以下選項覆寫該模式-t

-t test_pattern 指定要讀取(和寫入)到磁碟區塊的測試模式。 test_pattern 可以是 0 到 ULONG_MAX-1 之間的數值,也可以是單字“random”,它指定區塊應該用隨機位元模式填入。對於讀取/寫入 (-w) 和非破壞性 (-n) 模式,可以透過為每個所需的測試模式指定 -t 選項來指定一個或多個測試模式。對於唯讀模式,只能指定單一模式,而且它可能不是「隨機」的。使用模式進行唯讀測試假定指定的模式先前已寫入磁碟 - 如果沒有,則大量區塊將無法通過驗證。如果指定了多個模式,則在繼續下一個模式之前將使用一個模式測試所有區塊。


命令和輸出範例:

# badblocks -wsvt 0 /dev/sdz
Checking for bad blocks in read-write mode
From block 0 to 488386583
Testing with pattern 0x00: done                                                 
Reading and comparing: done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)

答案2

如果目標是銷毀資料而不是尋找錯誤,那麼您可以使用

dd if=/dev/zero of=/dev/sdX status=progress

其中 X 是目標裝置的字母。

但是,如果您確實擔心磁碟上的數據,則可以多次執行 dd,使用其他工具(例如擦除或粉碎)或只是讓壞塊完成其工作。這完全取決於您願意投入多長時間來刪除資料。

相關內容