使わなくなった 1TB の大容量 SD カードを手放すことになり、第三者にデータを復元されないよう安全に初期化(フォーマット)しようとしました。
しかし、現在の Mac の標準機能では少し勝手が違ったので、備忘録としてまとめます。
ディスクユーティリティで「セキュリティオプション」が出ない?
Mac でドライブを初期化する際、通常は「ディスクユーティリティ」を使います。
昔の Mac では、ここで「セキュリティオプション」ボタンを押し、データをゼロで上書きして復元不可能にする機能がありました。
しかし、現在の macOS では、SD カードや USB メモリなどのフラッシュストレージに対して、このセキュリティオプションが意図的に隠される仕様 になっています。
理由は主に以下の 2 点です。
- 寿命への配慮: フラッシュメモリには書き込み回数に上限があるため、全領域の上書きを繰り返すと寿命を縮めてしまうから。
- ウェアレベリングの仕様: フラッシュメモリは書き込み場所を自動で分散させる仕組み(ウェアレベリング)を持つため、OS 側から「完全に上書きした」と命令しても内部に古いデータが残留する可能性があり、Apple として「確実な消去」を保証できないから。
とはいえ、フリマアプリなどで見知らぬ人に売却する場合、通常のフォーマット(目次を消すだけ)では少し不安が残ります。
ターミナルで dd コマンドを使って完全にゼロ埋めする
GUI で制限されている場合でも、ターミナルからコマンドを実行すれば強制的にゼロ埋めを行うことができます。
今回は OS の制限を迂回して直接ドライブに書き込める dd コマンドを使用しました。
※注意:ディスク番号を間違えると Mac 本体のデータが消去されるため、実行は自己責任で慎重に行ってください。
1. 対象のディスク番号を特定する
まずはターミナルを開き、以下のコマンドで SD カードの番号を調べます。
diskutil list
容量(1TB)などから該当するディスクを探します。ここでは仮に /dev/disk4 だったとして進めます。
2. アンマウントしてゼロ埋めを実行
次に、対象のディスクの論理的な接続を解除してから、dd コマンドで空データを先頭から末尾まで書き込みます。
diskutil unmountDisk /dev/disk4
sudo dd if=/dev/zero of=/dev/rdisk4 bs=1m
出力先に disk4 ではなく rdisk4(キャラクターデバイス)を指定することで、OS のキャッシュをバイパスして書き込み速度が向上します。
また、実行中に Ctrl + T を押すと進捗を確認できます。
1TB ともなると数時間〜十数時間かかる長丁場になるため、Mac の電源を繋ぎ、スリープしないようにして放置します。
3. exFAT で再フォーマット
コマンドが完了してプロンプトが戻ってきたら、SD カードは完全に空っぽの状態です。
最後に、一般的な機器で使えるように exFAT 形式でフォーマットし直します。
diskutil eraseDisk ExFAT "UNTITLED" MBR /dev/disk4
これで安全な初期化は完了です。
ゼロ埋めによるSDカードの寿命への影響について
「1TB ものデータを上書きしたら、SD カードの寿命が大きく縮むのでは?」と心配になるかもしれませんが、結論から言うと 1 回実行する程度であれば実用上の影響はほぼありません。
一般的な大容量 SD カードの書き換え可能回数(P/E サイクル)は、おおむね 500 回〜1,000 回程度と言われています。
dd コマンドで全領域に 1 回書き込みを行っても、ウェアレベリングによって全体が均等に消費されるため、寿命のうちの「1 回分(約 0.1%〜0.2%)」が減る計算になります。
売却前に 1 度だけ実行する分には、製品の価値を損なうことはありません。
まとめ
近年の Mac ではフラッシュストレージの完全消去が GUI からできなくなっていますが、ターミナルを使えば確実なデータ消去が可能です。
手放す際の安心感を得るための手段として、参考になれば幸いです。