How-To:Linux 硬碟資料抹除

在淘汰舊硬碟時,如果在未採用物理性破壞的情況下,為避免資料外洩往往得先進行資料抹除的動作,而這類操作其實在 Linux 上很容易就能夠做到。本文將說明兩款 Linux 上的相關工具,分別為 hdparm 以及 shred。這兩款工具事實上算是非常普遍的工具程式,在許多 Linux 發行版裡都可以找得到。使用者也可以藉由諸如 GParted Live 這類的免安裝版本,利用光碟或隨身碟啟動後,直接在任何電腦上進行操作。

 

1. hdparm

hdparm 是一款硬碟參數修改工具,它可以用來執行 IDE/SATA 介面硬碟所內建的 Secure Erase(安全抹除)指令。其操作流程如下:

 

首先需確認該硬碟是否支援 Secure Erase:

  • sudo hdparm -I /dev/sda

 

輸出訊息應出現如下的「Security」項目,其中必須顯示「not frozen」(未凍結),才表示 Secure Erase 是可執行的,如果是「frozen」則無法執行 Secure Erase。解除凍結狀態的可行方法不一,一種方式是將系統暫停(suspend)再喚醒。或者以 IDE 介面的硬碟來說,可以嘗試藉由調整 master/slave 設定來解除。

Security: 
	Master password revision code = 65534
		supported
	not	enabled
	not	locked
	not	frozen
	not	expired: security count
		supported: enhanced erase

 

確認支援 Secure Erase 後,對硬碟設置 Security 功能的密碼,例如「1234」:

  • sudo hdparm --user-master u --security-set-pass 1234 /dev/sda

 

然後使用相同的密碼執行 Secure Erase:

  • sudo hdparm --user-master u --security-erase 1234 /dev/sda

 

這個指令會跑一段時間,結束時若無任何錯誤訊息即表示資料抹除完成。

 

2. shred

shred 是 GNU 核心工具組(GNU Coreutils)的一部分,它能夠重複用亂數值或零值將硬碟填滿,以達到資料抹除的目的。雖然同樣的作法其實可以用 dd 去完成,然而 shred 的效率更好,而且還能夠顯示處理進度。

 

shred 的操作指令相當簡單,基本的填滿硬碟指令如下:

  • sudo shred -vz /dev/sda

 

參數「v」是顯示進度,「z」則是增加一道程序填入零值。由於 shred 預設為填入亂數值三次,因此上述指令代表三次亂數值和一次零值,總共填滿硬碟四次。

 

3. 兩款工具、方式的選擇

使用 hdparm 執行 Secure Erase 指令應該是最優先的選擇,不過出產年份過於久遠的 IDE 硬碟可能未包含 Secure Erase 功能。此外若是使用 USB 轉接線連接硬碟,則可能會造成 hdparm 的執行錯誤。

 

shred 可作為不錯的備案,不過一個具體的缺陷是它會略過無法寫入的磁區,在處理部份故障的硬碟時就會不夠完整。處理效率方面,兩種方式都會受到裝置本身的速度以及容量的影響,但基本上執行 Secure Erase 指令都會比用 shred 重複填滿來得快。

 

4. 其它參考資料: