回答:
防止しようとしているのは、次の顧客がディスクを読み取って古い顧客のデータを確認することであると仮定すると、すべてゼロを書き込むことは実際には引き続き機能します。セクタ「n」にゼロを書き込むと、セクタ「n」が読み取られると、すべてのゼロが返されます。事実、基礎となる実際のデータはまだフラッシュチップ上にある可能性がありますが、通常の読み取りを実行してデータを取得することはできないため、状況に問題はありません。
誰かがディスクを物理的に手に入れてそれを分解することができれば問題になります(フラッシュチップを直接読み取ることができるため)ディスクは問題なく動作します。
SSDをゼロで埋めないでください。少なくとも、これにより、SSDの書き込み寿命の一部が使い果たされるか、ほとんどまたはまったく利点がなくなります。極端な最悪のシナリオでは、SSDのコントローラーを(一時的に)パフォーマンスが低下した状態にする場合があります。
このソースから:
複数回繰り返してディスク全体を繰り返し上書きすると、データを正常に破壊できますが、ファームウェア変換レイヤー(FTL)により、これは従来のハードディスクドライブよりもかなり複雑で時間がかかります。彼らの結果に基づいて、それは魅力のないオプションです
あなたの最良のオプション、フルディスク暗号化によるセキュア消去:
いくつかの最新のSSDはフルディスク暗号化を使用できます。例としては、Intelの新しい320ドライブといくつかのSandforce 2200シリーズドライブがあります。これらのドライブは、ドライブを損なうことなく、簡単かつ迅速に安全に消去できます。ドライブは、書き込まれたすべてのデータにAES暗号化を使用するため、安全な消去とは、単に古いAESキーを削除し、新しいAESキーに置き換えることを意味します。これにより、ドライブ上のすべての「古い」データが事実上回復不能になります。
ただし、Intelの安全な消去は自動化が容易ではありません。知る限りでは、IntelのWindows GUIアプリから実行する必要があります。空の非ブートドライブなどでのみ実行できます。Intelのドキュメントの21ページ以降を参照してください。
他のオプション、ATAセキュア消去:
別のオプションは、Linux上でfx HDPARMを介してATA Secure Eraseコマンドを発行することです。これにより、スクリプトを使用した自動化がはるかに簡単になります。
ドライブがATA Secure Eraseを「適切な」方法で実装している場合、少なくとも「フラッシュ変換レイヤー」(FTL)を削除することを期待する必要があります。FTLテーブルは、論理セクター(オペレーティングシステムが「見る」)とドライブ自体のNVRAMの物理ページ間のマッピングを保持します。このマッピングテーブルが破壊されると、ドライブからデータを回復することは非常に困難になりますが、おそらく不可能ではありません。
ただし、ATA Secure Eraseがすべてのメーカーのドライブに一貫して適切に実装されていることを示した研究はありませんので、常に機能すると言うのをためらいます-メーカーの技術文書を読む必要があります。
単一パーティションの場合:
他の回答へのコメントを読んでいると、OPは単一のパーティションを安全に消去したいだけです。そのための良い方法の1つは、LUKSまたはTrueCryptを使用して、暗号化されたボリュームfx のみを作成することです。これにより、ドライブ上のフルディスク暗号化スキームと同様に、暗号化キーを破棄してボリュームを安全に消去できます。
結論:
本当に、本当に知りたい場合は、ソフォスのブログからリンクされている論文を読んで、ドライブメーカーの安全な消去に関するテクニカルノートを読んでください。ただし、「適切な」安全な消去が必要な場合は、フルディスク暗号化と暗号化キーの安全な消去と置換を備えたSSDがおそらく最良の選択です。別の方法として、オペレーティングシステムレベルの暗号化を使用し、データを安全に消去したいときにキーを破棄します。
ウェアレベリングは、データのゼロ化とは関係ありません。
データを消去して、他の人/アプリケーションがそのデータを読み取らないようにします。SSDはデータを「ウェアレベル」にして、書き込みがSSDに与える「損傷」のために、データをより長く使用できるようにします。また、ディスクは通常、ビジーでないときにこれを行います。サーバーの状況では、静かな時間を常に利用できるとは限らないため、この作業が行われないことがよくあります。
IOオペレーションに対して顧客に請求しますか?そうでなければ、基本的にSSDの一部を数時間/数日で絶えず書き続けるだけで殺すのはどうですか?SSDは、特に書き込みが多い環境では、ほとんどの人が考えるよりもかなり簡単に殺すことができます。
if (time < 9am) chriss_try_again()
SSDを消去する従来の方法(dd
データをゼロにするなど)や、ランダムなデータをディスクに書き込む他の方法は絶対に使用しないでください。これらの方法は、プラッターベースのディスクにより適しています。SSDの消去には効果的ですが、SSDの制限された書き込み操作の多くを不必要に使い果たしてしまうため、SSDの予想寿命が短くなります。それはすぐに高価になります。また、SSDのパフォーマンスが時間とともに低下する可能性があります。
SSDにはセキュア消去のためのさまざまな方法があります。通常、IDEエミュレーションを実行できる特定のタイプのSATAコントローラーが必要であり、手順が複雑になる可能性があるため、非常に面倒だと思われます。一部のメーカーは、独自のSSDを安全に消去するためのツールを提供していますが、Linuxのhdparm(https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase)でも実行でき ます。ただし、これらの手順では、続行する前にドライブが「凍結」していないことを確認する必要があります。これは、システムの起動中にドライブを「フリーズ解除」できるマザーボードとSATAコントローラーを見つける必要があるため、より困難な手順の1つです。通常、SATAケーブルからドライブを取り外してから再び接続する必要があります。
とにかく、私の推奨事項は、あなたの研究を行い、あなたに都合の良いシステムで使用できる安全な消去ユーティリティを備えたSSDを選ぶことです。
dd bs=1M
すると、摩耗が最小限になります。
1つの答えはすでに受け入れられていますが、blkdiscard /dev/sdX
ここで言及する価値はあると思います。
Arch Wiki:SSDによると、blkdiscard
コマンドはすべてのブロックを破棄し、すべてのデータが失われます。「SSDを販売したい」前に使用することをお勧めします。
私はTRIMがどのように機能するかについて詳しくないので、データが消去されるという保証があるかどうかはわかりません。しかし、何もしないよりはましだと思います。
ところで、このコマンドはデバイス全体でのみ機能し、単一のパーティションでは機能しないのではないかと心配しています。
お役に立てれば。:)
blkdiscard
TRIM
それ自体はリクエストであり、すべてのSSDコントローラーがそれを尊重するわけではないため、すべてのケースで安全ではないようです。詳細については、こちらとこちらをご覧ください。しかし、そこで説明されているように、Linuxカーネルは、TRIMを尊重することが知られているデバイスのホワイトリストを維持しています。
hdparm -I /dev/theSSD
含む場合Deterministic read ZEROs after TRIM
、blkdiscard
高速であり、その後にゼロが読み取られることが保証されます。それ以外の場合は、セキュア消去がより良い解決策のようです。ただし、質問は顧客のセキュリティに関するものであることを考えると、Secure Eraseはそのようなユースケース向けに設計されているように見えるため、より良いソリューションかもしれません。
仮想マシンのイメージからデータを消去する最も良い方法は、TRIM機能を使用することです。多くの新しいオペレーティングシステムがこれをサポートしています。現在のほとんどすべてのSSDもサポートしています。
また、このオプションをさらに優れたものにしているのは、すべてのSANがSCSI名UNMAPでこの機能をサポートしていることです。これは、スパースプロビジョニングを実装するSANの優れたコマンドです。これは、特にブロック重複排除と組み合わせた場合、仮想マシンの優れた機能です。
SSDにTRIMコマンドが与えられると、ファームウェアはそれらのブロックをすぐに再利用のために空きとしてマークします。一部のSSDは、TRIMされたブロックに対して常にゼロを返します。他のドライブは、実装定義の(つまり、ランダムな)データを返します。
TRIMをサポートするオペレーティングシステムでは、ファイルを簡単に削除すると、TRIMのブロックがマークされます。実際のTRIM操作はすぐに実行される場合もあれば、後で実行するためにバッチ処理される場合もあります。ファイルを強制的にトリムしたり、未使用のすべてのブロックのパーティションをスキャンしたりするツールがあります。
LinuxでのTRIMパフォーマンスはまだ不安定であるため、使用している場合はオプションを調査する必要があります。Windowsでは、かなり安定しているようです。
「SSD Secure Erase Utility」が必要です。dd
ウェアレベリングのようなものを使用すると、古いクライアントデータがまだ残っているリザーブセクターになります。安全な消去ユーティリティは、デバイス上のすべてのセクターを消去します(OSにディスクとして提示されたセクターだけでなく)。
これらのユーティリティの一部は特定の製造業者に固有のものです。ドライブの製造業者に推奨事項を尋ねてください。彼らは私たちよりもよく知っています。
0を書き込むことで、他の顧客がディスクを読み取れないようにすることはできないと思います。
SSDでは、何かを書くとき、プロセスは通常のハードディスクとは大きく異なります。
次の状況を想像してください。SSDドライブの「空の」メモリセルはすべて1で満たされています。あなたがそれに何かを書くとき、それは0を書き留め、1を変更せずに残します。
その後、別のものを保存する場合、以前のコンテンツと新しいコンテンツが比較されます。いくつかの0を書き留めて、前のものが新しいものになれる場合は、OKです。それができない場合、別のメモリセルが使用されます。
「クリア」:11111111最初の保存:11011011
新しいデータ:00110011 11011011を00110011にする方法はありません(1を0から1に変更する必要があることに注意してください。SSDではできません)。そのため、別のメモリセルが使用されます。
ドライブをトリムすると、すべての未使用のメモリセルが1にリセットされます。したがって、これらのメモリセルが再び使用されることは明らかです。保存されたデータは保存されます。
必要なことを行うには、まず、ファイルを消去(削除)します。そのファイルのメモリセルは空きとしてマークされます。次に、TRIMを実行します。これらのメモリセルはすべて、データの兆候なしに1になります。
答えは簡単:Linuxを使用してパーティションをEXT4として再フォーマットします。これにより、パーティションのすべてのセクターでトリムを行うなど、SSDにすべてのブロックを消去する準備が整います。副作用は、少数の書き込み(EXT4構造)です。
ランダムで「dd」を忘れて、それは多くのSSD寿命を減らします。一部のSSDはインテリジェントであり、ゼロで満たされた完全なセクターが表示された場合、書き込みは行われず、消去用にマークされます。
ファームウェアの内部を知ることができないので、最適なオプションは、パーティションをext4として再フォーマットすることです(完全な再フォーマットなし、高速のもののみ、構造のみ)。最新のLinuxカーネルでは、パーティション全体でトリムを行います。フォーマットする前に。
安全な消去について話しているすべての人、つまりSSD全体について、SSDの1つのパーティションだけが保存されており、そこに保存されている残りの情報(SSDレベルではなくパーティションレベル)を失うことはありません。
結論:Ext4として再フォーマットし、他のフォーマットが必要な場合は、そのような他のフォーマットで再度再フォーマットします。