SSDドライブのゼロ化


18

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

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

回答:


23

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

誰かがディスクを物理的に手に入れてそれを分解することができれば問題になります(フラッシュチップを直接読み取ることができるため)ディスクは問題なく動作します。


1
まさに私が探していた答えであり、それについて考えたとき、私は同じ結論に達しました:)
jtnire

2
ゼロのセクターをSSDに書き込んでも実際のフラッシュチップにヒットすることさえないと思います(しかし確かではありませんが、確かにSSDで使用されているコントローラーチップセットに依存します)。コントローラーは、それがすべてゼロであることを認識し、そのセクターを「ゼロアウト」としてマークするだけです(または、すべてのゼロを含むセクターを指すだけです)。ゼロのセクターを書き込むことは合理的に一般的なことであり、特別なケースにすると、フラッシュの摩耗を減らすための安価で簡単な方法になるので、少なくともIntelとSandforceがそれをしなかったらショックを受けるでしょう。
親切な

20

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がおそらく最良の選択です。別の方法として、オペレーティングシステムレベルの暗号化を使用し、データを安全に消去したいときにキーを破棄します。


1
注意はいいですが、特定のSSDで修正されてからかなり人工的なワークロードでしか表面化していないコントローラーバグに関する2年前の通知を引用するのに大きな重みが必要かどうかはわかりません。
ダニエルローソン

1
@ダニエル・ローソン:フェアポイント。:-)そのセクションを書き直し、一時的なパフォーマンスの低下に変更しました-そして、書き込み操作の後に大幅な減速を示すCrucialのM4 / C400ドライブ(現在出荷中のドライブ)のレビューへのリンクを変更しました。
ジェスパーM

6

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

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

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


私は「ゼロ化を無意味にする」ビットに対処していましたクリス、2つの異なるものです
-Chopper3

1
if (time < 9am) chriss_try_again()
クリスS

ハハ

データについては真実ですが、殺害については真実ではありません。「エンタープライズフラッシュドライブ」は、消費者SSDよりも寿命とサイズがかなり優れていますが、エンタープライズHDDと同じように、パフォーマンスに対してプレミアムを支払います。シーゲイトによると、「パルサー」ESDの寿命は5年間で、書き込みは約6ペタバイトになります。anandtech.com/show/2739/2 -オンパルサードライブvirtualgeek.typepad.com/virtual_geek/2009/02/... -のEFDオン
ダニエルB.

3
私はダニエルを知っています、私は99%以上の読み取り環境に入れた多くのエンタープライズSSDを購入しましたが、それらをテストしてもまだそれらを「殺す」ことは驚くほど簡単であることがわかりましたかなり忙しいOracle 10ボックスのログディスクで、4週間以内に問題が発生し始めました。これは10か月前までだったので、HPのPulsarドライブのリバッジ版ではありませんでした。6PBは、5年間で最大38MB / s、または1年間で最大180MB / sに相当します。したがって、Pulsarを使用してHDビデオの単一チャンネルをキャプチャすることはできません。
チョッパー3

3

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


2

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を選ぶことです。


デフォルトの512バイトではなく、適切に大きなブロックサイズを使用している限り、ddを使用してディスクをゼロにすることで、書き込み/消去サイクルの多くをまったく使用しません。およそ1を使用します。ファイルシステムのアライメントが間違っていると、場合によっては同じフラッシュブロックに2回書き込むことになります。使用dd bs=1Mすると、摩耗が最小限になります。
ダニエルローソン

2

1つの答えはすでに受け入れられていますが、blkdiscard /dev/sdXここで言及する価値はあると思います。

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

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

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

お役に立てれば。:)


blkdiscardTRIMそれ自体はリクエストであり、すべてのSSDコントローラーがそれを尊重するわけではないため、すべてのケースで安全ではないようです。詳細については、こちらこちらをご覧ください。しかし、そこで説明されているように、Linuxカーネルは、TRIMを尊重することが知られているデバイスのホワイトリストを維持しています。
nh2

したがって、をhdparm -I /dev/theSSD含む場合Deterministic read ZEROs after TRIMblkdiscard高速であり、その後にゼロが読み取られることが保証されます。それ以外の場合は、セキュア消去がより良い解決策のようです。ただし、質問は顧客のセキュリティに関するものであることを考えると、Secure Eraseはそのようなユースケース向けに設計されているように見えるため、より良いソリューションかもしれません。
nh2

1

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

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

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

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

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


申し訳ありませんが、これはまったく意味がありません。TRIMは、私が知る限り、シンプロビジョニングとは関係ありません。ファイルシステムによって削除されたことを知らないウェアレベリングセクターを気にしないようにSSDに指示するだけです。ブロックをゼロにします。
チョッパー3

@ Chopper3:ATA TRIMとSCSI UNMAPが同じコマンドであることはわかりませんか?UNMAPは、シンプロビジョニングで間違いなく使用されます。TRIMは、少なくとも一部のSSDドライブでブロックをゼロにします。TRIMの後、データはなくなります。データを取得するためのサポートされた方法はありません。ドライブはゼロを返す可能性があり、いくつかはそうします。
ザンリンクス

「ドライブはゼロを返すこともあります」と「データは回復不能です」は、2つの非常に異なるものです。いずれにせよ、ユーザーは実際にSSDを消去したくないので、次の顧客が古い顧客のデータを取得できるようにしたくないだけです。これも同じことではありません。
クリスS

0

「SSD Secure Erase Utility」が必要です。ddウェアレベリングのようなものを使用すると、古いクライアントデータがまだ残っているリザーブセクターになります。安全な消去ユーティリティは、デバイス上のすべてのセクターを消去します(OSにディスクとして提示されたセクターだけでなく)。

これらのユーティリティの一部は特定の製造業者に固有のものです。ドライブの製造業者に推奨事項を尋ねてください。彼らは私たちよりもよく知っています。


ディスク全体を消去するつもりはないので、申し訳ありませんが、これは私が探しているものではありません。物理SDDディスクでクライアントデータがまだ使用可能かどうかは気にしません。LVへのデータ漏洩を介して、別の顧客がアクセスできるようにしたくないだけです。
jtnire

0

0を書き込むことで、他の顧客がディスクを読み取れないようにすることはできないと思います。

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

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

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

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

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

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

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


0

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

ランダムで「dd」を忘れて、それは多くのSSD寿命を減らします。一部のSSDはインテリジェントであり、ゼロで満たされた完全なセクターが表示された場合、書き込みは行われず、消去用にマークされます。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.