2022年2月10日作成

廃棄前にディスクのデータを消す

ストレージの種類によって消去方法が異なるのでメモ。

暗号化している場合

鍵さえ漏れなければ読むことは不可能なので、そのままでよい。

HDD

ATAコマンドのSecure Eraseを実装したディスクならそれを使えばいいらしい。 実装されているかどうかは、hdparmコマンドで調べられる。

$ hdparm -I /dev/sda

実装されていない場合はshredコマンドを使って、 ランダムなデータを3回と最後にゼロで合計4回上書きすることになる。 ゼロで上書きするだけでは最適化などの影響でデータが残り続けることがある。

$ sudo shred -v -n 3 -z /dev/sda

手元で試すと、shredは100GBの領域を更新するのに1時間ほど必要だったので、 容量の大きなディスクを消去する場合は分割実行を検討してもよいと思う。

$ sudo shred -v -n 1 /dev/sda
$ sudo shred -v -n 1 /dev/sda
$ sudo shred -v -n 1 /dev/sda
$ sudo shred -v -n 0 -z /dev/sda

SSD

これは試したことがないけれど、NVMeと同じではないか。

NVMe

これも規格によりSecure Eraseが提供されている。 Secure Eraseを利用できるかどうかは以下のコマンドで調べられる。

$ sudo nvme id-ctrl /dev/nvme0 -H | grep 'Format \|Crypto Erase\|Sanitize'

対応しているならnvme formatで消去するといい。

$ sudo nvme format /dev/nvme0 -ses 2 -n 1

対応していない場合は、rmで全て消去したうえでfstrimを使うと良いらしい。

$ sudo mount /dev/nvme0n1p2 /mnt
$ sudo rm -rf /mnt/*
$ sudo sync
$ sudo fstrim -v /mnt

SSDやNVMeはデータを更新するとき、空きブロックから新しいブロックを取得して、 内容を更新したあとでアドレステーブルを交換するためshredはうまく動かない。