古いHDDやSDD、捨てられずにたまってませんか?
ddコマンドによるHDDゼロ埋めと、SSDの暗号化鍵破棄
古いHDDやSSDを廃棄する場合、フォーマットだけではデータは完全に消えません。
ファイルシステムの情報が初期化されるだけで、ディスク上のデータ自体は残っているため、復旧ツールで読み出せる可能性があります。
そこで今回は、Macを使って以下の方法でストレージを消去しました。
- HDD:ddコマンドでゼロ埋め
- SSD:暗号化→ 鍵破棄(cryptographic erase)
実際の作業環境は次の通りです。
作業環境
- macOS:Tahoe 26.3.1
- 接続アダプター:LBSC-SATA-Adapter-JP
- 対象ストレージ:古いHDD / SSD
接続アダプターは類似品がたくさんあって迷ってしまうと思いますが、PC側のコネクタがUSB-AなのかCなのかの違いがあるくらいなのでどれを買っても問題ないと思います。が、たまにハズレがありまして・・・。
実は最初にRunbodというブランドのアダプターを買ったのですが、すべて正しく接続してもドライブがうんともすんとも言わず。初期不良で返品して、上記のLBSCというブランドに買い替えたという経緯があります。Runbodの方がランプがちょっとカッコよくて電源スイッチの質感も良かっただけに残念です。ただ、LBSCの方はPC側のコネクタにUSB-A→Cの変換アダプターが付属していたので良しとします。

フォーマットだけではデータは消えない
多くの人が誤解していますが、ディスクをフォーマットしても実際のデータは残っています。
フォーマットで行われるのは主に次の処理です。
- ファイルシステム構造の初期化
- ファイル管理テーブルのリセット
つまり、
「どこにファイルがあるか」の情報が消えるだけ
であり、ディスクのデータ領域はそのまま残っています。
このため廃棄前にはディスク全体の上書き消去または暗号鍵の破棄などの方法を取るのが安全です。
macOS Tahoeではディスクユーティリティの完全消去が見当たらない
以前のmacOSでは、ディスクユーティリティの「セキュリティオプション」で
- 1回上書き
- 3回上書き
- 7回上書き
などを選択できました。
しかし macOS Tahoe 26.3.1 ではこのオプションが見当たらなかったため、今回は
- HDD → dd で上書き
- SSD → 暗号化して鍵破棄
という方法を採用することにしました。

なんで無くなっちゃったんでしょうね?
HDDを完全消去する方法(ddコマンド)
HDDの場合は、ディスク全体を上書きする方法がシンプルで確実です。
手順① ディスクユーティリティでフォーマット
まずはディスクユーティリティで対象ディスクを初期化します。
- ディスクユーティリティを起動
- 対象ディスクを選択
- 「消去」を実行
この段階ではまだデータは残っています。
手順② diskutilでデバイス名を確認
ターミナルで消去対象とする接続ディスクを確認します。
diskutil list
表示例
/dev/disk3 (external, physical)
この例では disk3 が消去対象ディスクの名前です。
ここを間違えると Macの起動ディスクである内蔵SSDを消す可能性があります。
どれが消去対象か判断できない場合は作業を断念してください。
手順③ ddコマンドでゼロ埋め
次のコマンドでディスク全体を0で上書きします。
sudo dd if=/dev/zero of=/dev/disk3 bs=1m status=progress
指定したオプションの意味は次のとおり。
| オプション | 内容 |
|---|---|
| if=/dev/zero | 0データを入力 |
| of=/dev/disk3 | 書き込み対象ディスク |
| bs=1m | 1MB単位で書き込み |
| status=progress | 進行状況表示 |
この処理によりディスク全体が0で上書きされます。
ddコマンドのブロックサイズを1MBにした理由
bs は 1回の読み書き単位(ブロックサイズ) を指定するオプションです。
例えば次のような違いがあります。
| ブロックサイズ | 特徴 |
|---|---|
| 512B | 非常に遅い |
| 4KB | やや遅い |
| 64KB | 一般的 |
| 1MB以上 | 高速になりやすい |
ddコマンドはこの単位ごとにデータの読み書きを繰り返します。
ブロックサイズが小さすぎるとシステムコールの回数が増えたり、CPUのオーバーヘッドが増えたりするため処理が遅くなります。
一般的には1〜4MBを指定するのが性能と安定性のバランスが良いとされています。
また、今回のようにUSB接続でSATA-USBブリッジを経由する場合、ストレージそのものの読み書き性能ではなく、USB転送がボトルネックになることが多いため、ブロックサイズを極端に大きくしても大きな速度差は生まれません。
そのため今回はブロックサイズに1MBを指定(bs=1m)しました。
ランダムデータで上書きする方法
ゼロ埋めではなくランダムデータで上書きすることも可能です。
sudo dd if=/dev/urandom of=/dev/disk3 bs=1m status=progress
| オプション | 内容 |
|---|---|
| if=/dev/urandom | ランダムデータを入力 |
| of=/dev/disk3 | 書き込み対象ディスク |
| bs=1m | 1MB単位で書き込み |
| status=progress | 進行状況表示 |
ゼロ埋めより念入りな消去が可能ではありますが、/dev/urandomは乱数を生成しながら書き込んでいくことになるため処理が遅くなります。
ゼロで潰されていればじゅうぶんだろうという考えから、今回はゼロ埋めを選択しました。
SSDを安全に消去する方法(暗号化→鍵破棄)
SSDには寿命を延ばすためのウェアレベリングという機能があり、データを書き込むとき内部で位置が自動的に調整されます。
そのためOSからは上書きされたように見えても、実際には古いデータブロックが内部に残る可能性があります。
これがHDDと同じ方法ではSSDを消去できない理由です。
そこでSSDでは暗号化して鍵を破棄する方法(Cryptographic Erase)が有効とされています。
FileVaultで暗号化して消去する手順
SSD全体を暗号化して、それを復号する鍵を破棄してしまえ!というシンプルかつ乱暴なやり方です。
これをやるとSSDには復号する術を失った意味のない暗号データだけが残ることになります。
古いSSDをいくつか破棄しようとしたのですが、まだ使い道がありそうだったので手元に残すことにしました。
よって以下の手順は調べただけで今回は実施していません。よって、あくまでも参考程度にしてください。
手順① SSDを接続
USB-SATAアダプターでMacに接続します。
手順② APFS(暗号化)でフォーマット
MacのディスクユーティリティでAPFS(暗号化)を指定してフォーマットします。
この時点でSSD全体が暗号化されます。
手順③ APFS(暗号化なし)でフォーマット(暗号鍵を破棄)
まず、暗号化するときに自分で指定したパスワードを忘れましょう笑。指定する時点でメチャクチャで長いパスワードを指定してもいいですね。
Macのディスクユーティリティで、今度はAPFS(暗号化なし)を指定してフォーマットします。
この時点で暗号鍵が消え、暗号化されたデータは複合されず、二度と読めないゴミになります。
ここまでやれば安心して破棄できそうですね。
参考:HDD消去にかかる時間の目安
最後に作業時間の目安です。
消去時間は 容量 ÷ 書き込み速度 で決まります。
例えば書き込み速度が120MB/sの場合は以下の時間が予想できます。
| 容量 | 消去時間 |
|---|---|
| 250GB | 約35分 |
| 500GB | 約1時間10分 |
| 1TB | 約2時間20分 |
| 2TB | 約4時間40分 |
単純計算では上の表のようになりますが、HDDが古くて読み書き性能が低かったり、USB変換アダプターがボトルネックになったりで、ものすごく遅くなることがあります。
今回の実測値ですが、500GB 7200rpm SATA接続のHDDのゼロ埋めで、なんと約11時間もかかりました。
おそらくUSB変換アダプターを介した上にHDD自体が劣化していたのが原因と考えられます。
他にも接続方式がIDEだったり、回転数が5400rpmだったり、容量違いだったり、いくつか消去して実測値を掲載したかったのですが、認識しなかったり既にクラッシュしていたり、0埋め中にクラッシュしたりで完走したのは上記1台のみでした。残念・・・。
まとめ
古いストレージを破棄する場合、フォーマットだけでは不十分です。
HDDはゼロ埋め、SSDは暗号化→鍵破棄。これで安全に破棄できます。
できなかった場合は物理破壊するか、業者に依頼しましょう。



今回うまくいかなかったやつらは、しばらく水没させた上で、ハンマーなどで物理破壊して捨てようと思っています。

コメント