記事内に広告を含む場合があります。

UbuntuからNVMe SSDをSanitizeしてデータを完全消去する(Secure Erase)

スポンサーリンク

概要

Linux OSのUbuntuをUSBメモリから起動して、SanitizeコマンドでNVMe SSDのデータを完全削除します。Sanitizeはターミナル(Linuxのコマンドプロンプト)から行います。

今回Gpartedを使わない理由

筆者はGpartedを好んで使っていましたが、今回は使いません。

NVMe SSDをLinuxターミナルから操作するためには、nvme-cliというパッケージをダウンロードする必要があります。

そのためにWi-Fiへ接続する必要があるのですが、GpartedではWi-Fi接続がうまくできなかったためです。今回は他の手段を探しました。

UbuntuはフルバージョンのLinuxみたいなOSなので、ネットサーフィンやメール程度なら、パソコンとして使えるレベルです。Gpartedから見て完全な上位互換です。

ちなみに、GpartedはLinuxとセットになっていますが、アプリ単体の名称でもあります。つまり、UbuntuならGpartedアプリをダウンロードして使うこともできます。

注意点

完全消去を保証するものではありません

筆者は今のところ問題は出ていませんが、本ページの解説でデータの完全消去を保証するものではありません

NVMe SSD限定の方法です

2025年現在、主流になっているNVMe SSD限定の方法です。

以下のストレージには使えません。

  • SATA SSD
  • HDD
  • eMMC

作業は自己責任でお願いします

Windowsには安全装置がかかっているので、WindowsからWindows自身を消去することは難しいです。

しかし、今回はUSBメモリからUbuntu(Linux)を起動するので、NVMe SSD内のWindowsも消去することができます。

反面、作業に失敗すると、SSDが使用できない状態になる可能性もゼロではありません。作業する際は自己責任でお願いします。

作業手順

今回の作業環境

かなり古いノートパソコンで作業を行っています。

項目名称
作業するパソコンASUS Zenbook3 UX390UA
データを消去する
NVMe SSD
Crucial P2 1000TB
型番:CT1000P2SSD8
使用するUbuntu
のバージョン
Ubuntu 22.04 LTS
日本語Remix

UbuntuはUEFIブートで起動します。レガシーブート(BIOS互換起動)ができないHP(ヒューレット・パッカード)製パソコンでも起動できると思いますが、試してはいません。

UbuntuのライブUSBを作成する

今回の作業、筆者は「Ubuntu 22.04 LTSの日本語Remix」を使用しました。

「北陸先端科学技術大学院大学」と「KDDI 研究所」はhttpsでアクセスできるので、より安全だと思います。

Ubuntu Desktop 日本語 Remixのダウンロード:
https://www.ubuntulinux.jp/download/ja-remix

ライブUSBの作成には「Rufus4.7」を使用しました。

Rufus:
https://rufus.ie/ja/

メモがてらサラッと書きました。追って、詳しい解説を別ページで書くかもしれません。

確認しておくこと

NVMe SSDはマザーボードに取り付ける

データを消去するNVMe SSDはマザーボードに取り付ける必要があります。

要するに、USB接続で外付けしたNVMe SSDはSanitizeで消去できません

データ消去後にリカバリーする場合は回復ディスクを作成しておく

そのSSDを使ってノートパソコンを工場出荷状態に戻す場合は、データを消去する前に回復ディスクを作っておきましょう。

UbuntuのライブUSBを起動する

作業環境が古いパソコンなので、以下のやり方で起動します。

ASUS・富士通・NECのWindowsノートパソコンでUSBメモリから起動する方法
いわゆるUSBブートの方法について、画像付きで解説!

最近のHP(ヒューレット・パッカード)製パソコンはレガシーブート(BIOS互換起動)が廃止されていますが、UbuntuはUEFI起動なので問題なく起動できると思います(確認はしてませんが)。

nvme-cilをインストールする

NVMe SSDを操作するためのパッケージnvme-cliをダウンロードするまでの手順です。

Wi-Fiを接続する

nvme-cilをインストールするために、まずはWi-Fiにつなぎます。

画面右上のアイコングループをクリックします。

Wi-Fiメニューから使用しているWi-Fiに接続しましょう。

アクセスポイント名はモザイク入れてます

SSIDを選び、パスワードを入れて接続します。UIは異なりますが、やり方はWindowsと大差ありません。

ターミナルを開く

コマンドで操作するためのターミナル(コマンドライン)を開きます。

アプリ一覧から開く場合は、左下のアプリアイコンをクリックします。

アプリ一覧から「端末」を選びます。英言語だと「Terminal」と表示されていると思います。

ターミナルは以下の方法でも開くことができます

  • デスクトップを右クリックして表示されるメニューから選ぶ。
  • ctrl+alt+Tキーを押す。

アプリを更新する

いきなりnvme-cliをインストールをしても、エラーが出て進まないことが多いです。まずはターミナルで以下のコマンドを打って、アプリ全般を更新します。

sudo apt update

Enterキーを押すと、アプリの更新が始まります。更新の状態はターミナルに逐次表示されるので、走っているコマンドが止まるまで待ちましょう。

nvme-cliをインストールする

以下のコマンドを打って、Enterを押します。

sudo apt install nvme-cli

これでnvme-cliと言うパッケージがインストールできます。NVMe SSDのデータ削除を含め、操作するために必要なパッケージ(アプリ)です。

Sanitizeを実行してSSDのデータを完全消去する

ディスクの構成・名称を確認する

まずは、データを消去するSSDの名称を確認します。以下のコマンドを打って、Enterを押します。

sudo nvme list

リストがテーブル状に表示されます。左の列にNVMeストレージ名称が並びます(画面左の赤枠)。複数のストレージが無ければ、ほとんどの場合において以下の名前になります

/dev/nvme0n1

ターミナルからSSDを操作する際に指定する名前です。以下、SSDを操作するために、上記の名称を使います。

複数のNVMeストレージがある場合は、容量やモデル名で判別しましょう。

そもそも、データを消去しないストレージは、初めから取り外しておいた方が安全です。

それともう1つ、フォーマットサイズも確認しておきましょう(画面右側の赤枠)

format
512 B

作業の最後に、この値を使用します。

SSDがSanitizeに対応しているか確認する

データを削除するSSDがSanitizeに対応しているかを確認します。以下のコマンドを打って、Enterを押します。

sudo nvme id-ctrl -H /dev/nvme0n1

SSDのステータスがたくさん表示されます。約200行以上あります。

Sanicapという項目を探してください。表示された情報一覧の、おおよそ中央部分にあります。

赤枠部分に「Block Erase Sanitize Operation Supported」と表示されており、ここだけ「0x1」と表示されています。これで「Sanitizeのブロック消去」に対応している(使用できる)ことがわかります。

[1:1] : 0x1 Block Erase Sanitize Operation Supported

ブロック消去に対応していない場合は、今回解説している内容は使えません

事例はCrucial P2における環境ですが、有名メーカーで標準クラスのNVMe SSDのほとんどは、Sanitizeのブロック消去に対応しているとは思います。

エントリークラスのNVMe SSDや、格安NVMe SSDだと、未対応品もあるかもしれません。

Sanitizeを実行する

以下のコマンドを打って、Enterを押すと、Sanitizeのブロック消去が実行されます。SSDのデータが完全消去されます。

sudo nvme sanitize /dev/nvme0n1 -a 2

-a (aオプション)で2を入力することで、ブロック消去を指定しています。

データ消去が進行しますが、進捗は表示されません。

すぐコマンド待機状態になります。進捗は表示されません。

以下のコマンドを打って、Enterを押してください。Sanitizeの進捗状況が表示されます。

sudo nvme sanitize-log -H /dev/nvme0n1

Sanitize Progressの(SPROG)の値に注目します(赤枠部分)。この値が65535なら、データ消去が完了しています。

実際のところ、1TBのNVMe SSDでもデータ消去までに30秒もかかりませんでした。コマンドを打った頃には、完了していることの方が多いかと思います。

ちょっと補足。SPROGは65535が100%に当たります。SPROGが65535と異なる値の場合、その数値を65535で割った値が進捗率になります。%にするには100を掛けます。

進捗率%=数値/65535×100

データが削除されたかを確認する

以下のコマンドを打って、Enterを押します。SSDの1番初めの区間に保存されている内容を表示することができます。

sudo nvme read /dev/nvme0n1 -s 0 -c 0 -z 512 | hexdump

-z(zオプション)の値は、SSD名称を確認したときのformatの値を使ってください。今回の事例では512です。

SSDのフォーマットによっては4096を使う場合もあると思います。

以下の3行目のように、0の羅列(オールゼロ)が表示されていれば、データの完全削除は完了です。

作業完了

データ消去の作業は完了です。Ubuntuをシャットダウンします。

画面右上のアイコングループをクリックすれば、電源メニューが選べます。

参考:暗号化消去(Cryptographic Erase)について

暗号化消去(Cryptographic Erase)とは

NVMe SSDのデータ消去にはもう1つ、暗号化消去(Cryptographic Erase)という方法があります。

暗号化消去(Cryptographic Erase)は、ストレージを暗号化したあと、その暗号化鍵を消去します。データ自体は残りますが、データを複合化するための鍵(暗号化鍵)が無くなるので、元のデータを復元することができなくなります。

SanitizeCryptographic
Erase
データ自体消す消さない
暗号化鍵消さない消す

消去強度が高いのはどっち?

Perplexity AIに質問したところ、データ自体を消す「Sanitize」の方が消去強度がやや高い、との回答を得ました。

ただ、環境や回答者により、正解は変わる可能性があります。

そもそも、どちらもSecure Erase(セキュア消去)であることに、変わりはありません。使える方を用いればよいと思います。

暗号化消去(Cryptographic Erase)の対応確認

NVMe SSDが暗号化消去(Cryptographic Erase)に対応しているかを確認する必要があります。Ubuntuのターミナルにて以下のコマンドを打ち、Enterを押します(Sanitize対応を調べた時と同じコマンドです)。

sudo nvme id-ctrl -H /dev/nvme0n1

Sanicapの欄のもう少し下に、fnaという項目があります。以下、Crucial P2のfnaステータスです。

fna       : 0x1
  [3:3] : 0	FormatNVM Broadcast NSID (FFFFFFFFh) Supported
  [2:2] : 0	Crypto Erase Not Supported as part of Secure Erase
  [1:1] : 0	Crypto Erase Applies to Single Namespace(s)
  [0:0] : 0x1	Format Applies to All Namespace(s)

この[2:2]の部分が「[2:2] : 0x1 Crypto Erase Supported as part of Secure Erase」になっていれば、暗号化消去(Cryptographic Erase)に対応しています。

Crucial P2は0で「Not Supported」になっているため、暗号化消去(Cryptographic Erase)に対応していません。

暗号化消去(Cryptographic Erase)のコマンド

暗号化消去(Cryptographic Erase)に対応している場合は、以下のコマンドで実行できます。

sudo nvme format /dev/nvme0n1 -s 2

-s 2で暗号化消去を指定しています。

/dev/nvme0n1は、実行環境に合わせてストレージ名を指定してください。

筆者のCrucial P2は暗号化消去に未対応だったので、エラーが出て実行不可でした…。

暗号化消去に対応したNVMe ストレージなら実行できると思います。

コメント

タイトルとURLをコピーしました