web-dev-qa-db-ja.com

SSDを分割することのデメリット

NickNの名を冠した賢い人は、強力なコンピュータを構築することについての彼の見解(MicrosoftのFlight Simulator X、非常に要求の厳しいソフトウェアのプレイに向けられている)についてのlenghty フォーラム投稿 を維持します。

彼はどこかにSSDドライブについてのポイントをまとめて、そして彼は以下のようにリストを締めくくる:

SSDを分割しないでください

彼は残念ながらこれについて詳しく述べていませんが、なぜ彼がこれを言うのか不思議に思います。 SSDを分割することの欠点は何ですか? (この文脈での分割とは、2つ以上の分割を意味する)

77
MarioDS

SSDは、ファイルシステムレベルでは機能しません。

ファイルシステムが物を見る方法とSSDが物を見る方法の間に1対1の相関関係はありません。

SSDを自由にパーティション分割してください(各パーティションが正しく配置されていると仮定してください。最新のOSがこれらすべてを処理します)。それは何も傷つけないでしょう、それはアクセス時間や他の何かに悪影響を与えないでしょう、そしてまたSSDに大量の書き込みをすることについて心配しないでしょう。それらはそれらを持っているので、あなたは一日に50 GBのデータを書くことができ、そしてそれは10年間続くでしょう。

Robin Hood's answer への回答

書き込み操作は小さなスペースに分散されるため、ウェアレベリングにはそれほど多くの空きスペースがありません。そのため、「できる」とは言えませんが、ドライブ全体が速くなるとは限りません。追加のパーティションで同等の消耗を行わない限り(デュアルブートなど)、シングルパーティションでした。

それは全く間違っています。あなたはそのパーティションだけに読み書きするのでパーティションを使い果たすことは不可能です。これはSSDがどのように機能するのかということではありません。

SSDはファイルシステムが見るものよりはるかに低いレベルのアクセスで動作します。 SSDはブロックとページで動作します。

この場合、実際に起こることは、あなたが特定のパーティションに大量のデータを書き込んでいても、ファイルシステムはパーティションによって制約されていますが、SSDはそうではありません。 SSDの書き込みが多いほど、SSDはウェアレベリングを行うためにスワップアウトするブロック/ページが多くなります。ファイルシステムが物事をどう見ているかはそれほど気にすることはできません。つまり、データはSSD上の特定のページに存在する可能性がありますが、別の時点では異なる可能性があります。 SSDはデータがシャッフルされる場所を追跡し続け、ファイルシステムはSSD上のデータが実際にどこにあるのかを知ることができません。

これをさらに簡単にするために、パーティション1にファイルを書くとしましょう。OSはファイルシステムにストレージの必要性を伝え、ファイルシステムは "セクタ"を割り当て、次にSSDにそれが必要であることを伝えます _ x _ スペースの量ファイルシステムは123の 論理ブロックアドレス (LBA)でファイルを見ます(例えば)。 SSDは、LBA 123がブロック/ページ#500を使用していることをメモします(たとえば)。したがって、OSがこの特定のファイルを必要とするたびに、SSDは使用している正確なページへのポインタを持ちます。さて、SSDへの書き込みを続け、レベリングを開始してblock/page#500と言うのであれば、block/page#2300で最適化することができます。 OSがその同じファイルを要求し、ファイルシステムがLBA 123を再度要求すると、今度はSSDはブロック/ページ#2300を返し、#500は返さないようになります。

ハードドライブのように、nand-flash SSDはシーケンシャルアクセスなので、追加のパーティションから読み書きするデータは、単一のパーティションに書き込まれている場合よりもはるかに離れた場所にあります。それらのパーティションこれにより、追加のパーティションに格納されているデータへのアクセス時間が長くなります。

いいえ、これもまた間違っています。 Robin Hoodは、SSDがどのように機能するかのように考えるのではなく、ファイルシステムの観点から考えています。この場合も、ファイルシステムがSSDがデータをどのように格納しているかを知る方法はありません。 「遠く」はありません。これはファイルシステムの目の前にあるだけで、SSDが実際に情報を保存する方法ではありません。 SSDがデータを異なるNANDチップに分散させることは可能であり、ユーザーはアクセス時間の増加に気付かないでしょう。 Heck、NANDの並列性により、以前よりも速くなる可能性さえありますが、ここではナノ秒について話しています。点滅してあなたはそれを逃した。

合計スペースが少ないと、断片化したファイルを書く可能性が高まりますが、パフォーマンスへの影響は小さいですが、一般的にフラッシュメモリを軽蔑するのは悪い考えであることに注意してください。それはドライブを摩耗させるからです。もちろん、使用しているファイルシステムによっては、断片化の量が極端に少なくなります。これは、ファイル全体をダンプして書き込み速度を上げるのではなく、可能な限りファイル全体を書き込むように設計されているためです。

いいえ、ごめんなさい。これもまた間違っています。ファイルシステムのファイルのビューとSSDの同じファイルのビューは、遠く離れても閉じていません。ファイルシステムでは、ファイルが最悪の場合に断片化されていると見なされる可能性がありますが、同じデータのSSDビューはほとんどの場合最適化されています。

したがって、最適化プログラムはこれらのLBAを調べて、このファイルは実際には断片化されている必要があると言います。しかし、それはSSDの内部に関して手掛かりがないので、それは100%間違っています。これがSSDでデフラグプログラムが機能しない理由であり、そうです、デフラグプログラムも不要な書き込みを引き起こします。

記事シリーズ SSDのコーディング は、SSDがどのように機能するかについてより技術的になりたい場合に何が起こっているかの概要です。

FTL(Flash Translation Layer)が実際にどのように機能するかについてのもう少し「軽い」読みについては、 ソリッドステートドライブ設計におけるファームウェアおよびFlash Translation Layerの重要な役割 (PDF)をお読みください。 Flash Memory Summit サイトから。

また、他にもたくさんの論文があります。

これがどのように機能するかについての別の論文: フラッシュメモリの概要 (PDF) 「データの書き込み」(26-27ページ)の項をご覧ください。

ビデオがもっとあなたのものであるならば、 フラッシュメモリのアドレス変換を最適化するための効率的なページレベルFTL と関連する スライド を見てください。

115
Time Twin

ここで非常に長い答えは、答えが十分に単純で、SSDの一般的な知識から直接得られる場合です。答えを理解するには、ウィキペディアの用語 Solid-state drive を読むだけで十分です。

「SSDをパーティション分割しない」というアドバイスは無意味です。

(現在は遠い)過去、オペレーティングシステムはSSDをあまりよくサポートしていませんでした。特に、パーティション分割が消去ブロックのサイズに応じてパーティションを調整することに注意していなかった場合はそうです。

OSの論理ディスクセクターが物理SSDブロック間で分割された場合、このアライメントの欠如により、OSが1つのみを更新することを意図したときにSSDが2つの物理セクターをフラッシュする必要があり、ディスクアクセスが遅くなり、 ウェアレベリング =。

現在、SSDははるかに大きくなってきており、オペレーティングシステムは消去ブロックとアライメントについてすべて把握しているため、問題はもう存在しません。たぶん、このアドバイスはパーティションのアライメントに関するエラーを回避するためのものでしたが、今日これらのエラーはほとんど不可能です。

実際、SSDをパーティション分割するための議論は、今日では従来のディスクとまったく同じです。
データをより適切に整理および分離するため。

たとえば、オペレーティングシステムを別の小さなパーティションにインストールすると、OSの大規模な更新を行う際の予防策として、バックアップイメージを取得するのに便利です。

15
harrymc

SSDをパーティション分割することには欠点はありません。パーティション化されていないスペースをいくらか残すことで、実際にその寿命を延ばすことができます。

ウェアレベリングは、デバイスのすべてのブロックに適用されます(下記のHPホワイトペーパーを参照)。

静的ウェアレベリングでは、デバイス内の使用可能なすべてのフラッシュにわたるすべてのブロックがウェアレベリング操作に参加します。これは、すべてのブロックが同じ量の摩耗を受けることを保証します。静的ウェアレベリングは、デスクトップおよびノー​​トブックSSDで最もよく使用されます。

そのことから、パーティションはウェアレベリングにとって重要ではないと結論付けることができます。 HDDとコントローラの観点から見ると、パーティションは実際には存在しないため、これは理にかなっています。ブロックとデータだけがあります。パーティションテーブルでも同じブロック(MBR用ドライブの1ブロック目)に書き込まれます。それは、その後テーブルを読み取り、どのブロックにデータを書き込むか、どのブロックに書き込まないかを決定するのはOSです。 OSはLBAを使用して各ブロックに一意の番号を割り当てることでブロックを認識します。しかし、コントローラはウェアレベリング方式を考慮して、論理ブロックを実際の物理ブロックにマッピングします。

同じホワイトペーパーは、デバイスの寿命を延ばすための良い提案を示しています。

次に、ドライブをオーバープロビジョニングします。デバイスの総容量の一部を分割するだけで寿命を延ばすことができます。たとえば、256 GBのドライブを使用している場合は、240 GBにパーティション分割するだけです。これによりドライブの寿命が大幅に延びます。 20%のオーバープロビジョニングレベル(200 GBのみのパーティション分割)は、さらに寿命を延ばします。良い経験則は、ドライブのオーバープロビジョニングを2倍にするたびに、ドライブの耐久性に1倍を追加することです。

これは、パーティション化されていないスペースでもウェアレベリングに使用されることを示唆しているため、上記の点をさらに証明しています。

出典:テクニカルホワイトペーパー - SSDの耐久性( http://h20195.www2.hp.com/v2/getpdf.aspx/4AA5-7601ENW.pdf

4
JollyMort

ディスクセクタは長い間512バイトであり、メカニカルディスクはセクタを読み書きするのにかかる時間に影響を与える唯一のものはシーク遅延であるという特性を持っています。そのため、メカニカルハードドライブの主な最適化手順は、シークを最小限に抑えるためにブロックを順番に読み書きすることでした。

フラッシュは、通常のハードドライブとは大きく異なる動作をします。生のフラッシュレベルでは、ブロックはありませんが、ページと "eraseblocks"(LinuxのMTD用語から借りるため)です。一度にページをフラッシュするように書き込むことができます。また、一度に消去ブロックを消去することもできます。

フラッシュの一般的なページサイズは2KB、消去ブロックの一般的なサイズは128KBです。

しかし、SATA SSDは、512バイトのセクタサイズで動作するインタフェースをOSに提供します。

ページとセクタの間に1:1のマッピングがある場合、パーティションテーブルが奇数ページまたはeraseblockの中央にあるページで開始された場合に問題が発生する可能性があります。これはx86のページングハードウェアと整合するため、OSが4Kバイトのチャンクでドライブからデータをフェッチすることを好む場合、そのような4Kバイトのブロックが消去ブロックをまたぐことができることがわかります。低いパフォーマンス.

ただし、SSDファームウェアは1:1マッピングを維持せず、物理ブロックアドレス(PBA)から論理ブロックアドレス(LBA)への変換を行います。 5000というセクタまたは他の特定のセクタがフラッシュ内のどこに書き込まれているのかわからないという意味です。常に消去前の消去ブロックに書き込むことを試みることは、設計上の裏でたくさんのことをしています。ファームウェアを分解せずに何が行われているのか正確にはわかりませんが、ファームウェアが完全に壊れていない限り、ファームウェアはおそらくこれを回避します。

あなたは4Knハードドライブについて聞いたことがあるかもしれません。これらは内部的に4Kバイトのセクタサイズを使用しますが、それでもオペレーティングシステムへの512バイトのセクタインタフェースを提供します。これは、より多くのデータを収めるために、セクター間のギャップをプラッター上で小さくする必要があるために必要です。

つまり、内部的には常に4Kセクタの読み取りと書き込みを行いますが、OSからは隠します。この場合、4KB境界にあるセクタに書き込みを行わないと、そのような読み書きのたびに2つの内部4KBセクタが読み書きされるため、速度が低下します。しかし、これはSSDには当てはまりません。

とにかく、これがSSDを分割しないことが推奨される理由を私が考えることができる唯一の状況です。しかし、それは当てはまりません。

0
LawrenceC