web-dev-qa-db-ja.com

SSDドライブのゼロ化

お客様向けにVPSをホストします。各顧客のVPSには、標準のスピンドルハードディスク上のLVM LVが与えられます。顧客が離れる場合、このLVをゼロに設定して、データが他の顧客に漏洩しないようにします。

私たちはホスティングビジネスにSSDを使用することを考えています。 SSDに「ウェアレベリング」テクノロジーがある場合、ゼロ化は無意味になりますか?顧客データが別の顧客に漏洩することを許可できない場合、これはこのSSDのアイデアを実現不可能にしますか?

18
jtnire

防止しようとしているのは、次の顧客がディスクを読み取って古い顧客のデータを確認することであると仮定すると、実際にはすべてゼロを書き込んでも機能します。セクター「n」にゼロを書き込むと、セクター「n」が読み取られると、すべてのゼロが返されます。現在、実際のデータはフラッシュチップ上に残っている可能性がありますが、通常の読み取りを行うことはできないため、状況に問題はありません。

IS誰かが物理的にディスクを手に取り、それを分解できる場合は問題があります(フラッシュチップを直接読み取ることができるため)。ただし、アクセスできるのがSATAバスのみである場合、次に、ディスク全体にすべて0を書き込んでも問題ありません。

23
Michael Kohne

SSDをゼロで埋めないでください。少なくとも、これはSSDの書き込み寿命の一部を消耗し、ほとんどまたはまったくメリットがありません。極端な最悪のシナリオでは、SSDのコントローラーを (一時的に)パフォーマンスが低下した状態 にする可能性があります。

this source から:

複数の繰り返しでディスク全体を繰り返し上書きすると、データを正常に破壊できますが、ファームウェア変換レイヤー(FTL)により、これは従来のハードディスクドライブよりもかなり複雑で時間がかかります。彼らの結果に基づいて、それは魅力のないオプションです

あなたの最良のオプション、フルディスク暗号化による安全な消去:

いくつかの最近のSSDはフルディスク暗号化を使用できます-例はIntelの新しい320ドライブといくつかのSandforce 2200シリーズドライブです。 これらのドライブは、ドライブを損なうことなく、シンプルかつ高速な方法で安全に消去できます。ドライブは、書き込まれたすべてのデータにAES暗号化を使用するため、安全な消去単に、古いAESキーを削除し、新しいキーで置き換えることを意味します。これにより、ドライブ上のすべての「古い」データを効果的に回復できなくなります。

ただし、Intelの安全な消去は自動化が容易ではありません。 AFAIKは、IntelのWindows GUIアプリから実行する必要があります。空の非ブートドライブでのみ実行できます。 Intelのドキュメントの21ページ以降]を参照してください。

その他のオプション、ATAセキュア消去:

別のオプションは、Linuxでfx HDPARMを介して ATA Secure Eraseコマンドを発行 することです。これは、スクリプトを使用して自動化する方がはるかに簡単です。

ドライブがATA Secure Eraseを「適切な」方法で実装している場合、少なくとも「フラッシュ変換層」(FTL)が削除されることを期待する必要があります。 FTLテーブルは、論理セクター(オペレーティングシステムが「見る」)とドライブ自体のNVRAMの物理ページとの間のマッピングを保持します。このマッピングテーブルが破壊されると、ドライブからデータを回復することは非常に困難になります(おそらく不可能ではありません)。

ただし、ATA Secure Eraseが一貫して適切にすべてのメーカーのドライブに実装されていることを示した調査については知りません。そのため、常に機能するとは言いがたいです。メーカーの技術ドキュメントをお読みください。

単一のパーティションの場合:

他の回答へのコメントを読んでいると、OPは単一のパーティションを安全に消去したいだけのようです。これを行うための1つの良い方法は、暗号化されたボリュームのみを作成することです。 L.U.K.S または TrueCrypt を使用します。そうすることで、オンドライブのフルディスク暗号化スキームと同様に、暗号化キーを削除することでボリュームを安全に消去できます。

結論:

本当に知りたい場合は、ソフォスのブログからリンクされている 論文を読む にリンクし、ドライブの製造元の安全な消去に関するテクニカルノートを読んでください。ただし、「適切な」安全な消去が必要な場合は、フルディスク暗号化と安全なワイプと暗号化キーの交換を備えたSSDがおそらく最良の選択です。別の方法として、オペレーティングシステムレベルの暗号化を使用し、データを安全に消去する場合はキーを破棄します。

20
Jesper M

ウェアレベリングは、データのゼロ化とは何の関係もありません。

他の人/アプリケーションがそのデータを読み取るのを停止するために、データをゼロにします。 SSDは、データを「磨耗レベル」にして、SSDへの書き込みによる「損傷」により、データをより長く使用できるようにします。また、ディスクは通常、ビジー状態でないときにこれを実行します。サーバーの状況では、静かな時間が常に利用できるとは限らないため、この作業が行われないことがよくあります。

IOオペレーションの料金を顧客に請求しますか?そうでない場合は、基本的にSSDの一部を絶えず書き込むことで時間/日で殺すのを止めることは何ですか? SSDはほとんどの人が考えるよりもかなり簡単に殺すことができます 、特に書き込みが多い環境では。

6
Chopper3

したがって、 this などの記事を読む価値があります。誰かがディスクに物理的にアクセスできる場合は、情報を取得する方が簡単です。 SSD上のデータを暗号化することを検討した後、必要なのは、より簡単な問題であるはずの秘密鍵を安全に忘れることだけです。 SSDはランダムアクセスパフォーマンスがはるかに優れているため、vpsで大きな成功を収めています。

3
James

1つの回答はすでに受け入れられていますが、コマンドblkdiscard /dev/sdXは、ここで言及する価値があります。

Arch Wiki:SSD によると、blkdiscardコマンドはすべてのブロックを破棄、すべてのデータが失われます。 「SSDを売りたい」の前に使うことをお勧めします。

TRIMの仕組みに詳しくないので、データが消去される保証があるかどうかわかりません。しかし、何もしないよりはましだと思います。

ところで、このコマンドはデバイス全体でのみ機能し、単一のパーティションでは機能しないと思います。

お役に立てれば。 :)

2
mksegv

ddを使用してデータをゼロにするか、ディスクにランダムなデータを書き込む他の方法など、SSDを消去する従来の方法を使用したくはありません。これらの方法は、Platterベースのディスクに適しています。 SSDの消去には効果的ですが、SSDの制限された書き込み操作の多くを不必要に使い果たし、SSDの予想寿命が短くなります。それはすぐに高価になります。また、時間の経過とともにSSDのパフォーマンスが低下する可能性もあります。

SSDには、安全な消去方法が異なります。通常、IDEエミュレーションを実行できる特定のタイプのSATAコントローラが必要であり、手順が複雑になる可能性があるため、実行するのは非常に面倒だと思われます。一部のメーカーは、自分のSSDを安全に消去しますが、Linuxのhdparmでも実行できます: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase 。しかし、これらの手順で気づくでしょう先に進む前にドライブが「フリーズ」していないことを確認する必要があります。システムの起動中にドライブを「フリーズ解除」できるマザーボードとSATAコントローラを見つける必要があるため、これはより困難な手順の1つです。 、これは通常、SATAケーブルからプラグを抜いて、再びプラグを差し込みます。

とにかく、私の推奨は、あなたの調査を行い、あなたにとって便利なシステムで使用できる安全な消去ユーティリティが付属しているSSDを選ぶことです。

2
churnd

仮想マシンイメージからデータを消去する最良の方法は、TRIM機能を使用することです。新しいオペレーティングシステムの多くがこれをサポートしています。ほとんどすべての現在のSSDもサポートしています。

また、このオプションのさらに優れた点は、m すべてのSANがSCSI名のUNMAPでこの機能をサポートしている です。これは、スパースプロビジョニングを実装するSANに最適なコマンドです。これは、特にブロック重複除外と組み合わせる場合に、仮想マシンの優れた機能です。

SSDにTRIMコマンドが与えられると、ファームウェアはそれらのブロックをすぐに再利用できるようにマークします。 一部のSSDは、TRIMされたブロックに対して常にゼロを返します 。他のドライブは、実装で定義された(つまり、ランダムな)データを返します。

TRIMをサポートするオペレーティングシステムでは、ファイルを削除するだけでTRIMのブロックがマークされます。実際のTRIM操作はすぐに実行される場合と、後で実行するためにバッチ処理される場合があります。時々、ファイルを強制的にトリムしたり、パーティションをスキャンしてすべての未使用ブロックを探したりするツールがあります。

LinuxでのTRIMパフォーマンスはまだ不十分であるため、それを使用している場合は、オプションを調査する必要があります。 Windowsでは、かなり安定しているようです。

1
Zan Lynx

0を書き込んでも、他の顧客がディスクを読み取れるのを防ぐのに役立つとは思いません。

SSDでは、何かを書き込む場合、プロセスは通常のハードディスクとは大きく異なります。

次の状況を想像してみてください。SSDドライブの「空の」メモリセルがすべて1で満たされています。何かを書き込むと、0が書き留められ、1は変更されません。

その後、別のものを保存したい場合は、以前のコンテンツと新しいコンテンツを比較します。以前のものがいくつかの0を書き留めることによって新しいものになることができれば、わかりました。それが不可能な場合は、別のメモリセルが使用されます。

「クリア」:11111111最初の保存:11011011

新しいデータ:00110011 11011011を00110011にする方法はありません(1を0から1にする必要があることに注意してください。SSDではこれを行うことはできません)。したがって、別のメモリセルが使用されます。

ドライブをトリムすると、すべての未使用のメモリセルが1にリセットされます。したがって、それらは再び使用することが明確になります。そして、保存されたデータは保持されます。

やりたいことを行うには、まず、ファイルを消去(削除)します。そのファイルへのメモリセルは、空きとしてマークされます。次にTRIMを実行します。これらのメモリセルはすべて、データの兆候なしで1になります。

0
woliveirajr

「SSD Secure Erase Utility」が必要です。 ddのようなものを使用する場合、ウェアレベリングが有効になり、古いクライアントデータがまだ含まれている予備セクターになる可能性があります。安全な消去ユーティリティは、デバイス上のすべてのセクターを消去します(OSにディスクとして提示されたものだけではありません)。

これらのユーティリティのいくつかは特定の製造元に固有のものです。ドライブの製造元に推奨を問い合わせてください。彼らは私たちよりもよく知っています。

0
Chris S

答えが簡単:Linuxを使用してパーティションをEXT4として再フォーマットします。これにより、パーティションのすべてのセクターでトリムを行うように、SSDにすべてのブロックを消去できるようになります。副作用は、書き込み数が少ないことです(EXT4構造)。

ランダムでˋddˋを忘れると、SSDの寿命が大幅に短縮されます。一部のSSDはインテリジェントで、書き込みを行わないゼロで満たされた完全なセクターを見つけた場合、そのセクターに消去のマークを付けます。

ファームウェアの内部がわからないため、最新のLinuxカーネルでパーティションをext4として再フォーマットする(完全な再フォーマットなし、高速なものだけ、構造のみ)ことで、パーティション全体でトリムが行われます。フォーマットする前に。

安全な消去、つまり一度にSSD全体を対象とするすべての人に、SSDの1つのパーティションのみを保存し、そこに格納されている残りの情報(パーティションレベル、SSDレベルではない)を失うことはありません。

結論:Ext4として再フォーマットし、他のフォーマットが必要な場合は、そのような他のフォーマットで再フォーマットします。

0
Laura