2014-09-08 15:45:31 +0000 2014-09-08 15:45:31 +0000
84
84

SSDをパーティション化するデメリットは?

NickNという名前の賢者が、強力なコンピュータを構築することについての彼の見解を長々と書いた フォーラム投稿 (MicrosoftのFlight Simulator Xという非常に要求の厳しいソフトウェアをプレイすることを目的としたもの)を保持しています。

彼はどこかでSSDドライブについてのポイントをまとめており、そのリストを次のように締めくくっています。

DO NOT PARTITION SSD

彼は残念ながらこれについては詳しく説明していませんが、なぜこのようなことを言うのか不思議に思います。SSDをパーティショニングすると何か欠点があるのでしょうか?(この文脈でのパーティショニングとは、>>=2つのパーティションのこと)

回答 (7)

126
126
126
2016-05-28 01:24:34 +0000

SSD はファイルシステムレベルでは動作しません。

ファイルシステムがどのように物事を見ているかとSSDがどのように物事を見ているかの間には、1:1の相関関係はありません。

好きな方法でSSDを自由にパーティショニングしてください(各パーティションが正しく配置されていると仮定して、最新のOSがこれを全て処理してくれると仮定して)。1日に50 GBのデータを書き込むことができ、10年は持つようになっています。

Robin Hood’s answer ,

ウェアレベリングは、書き込み操作がより小さなスペースに分散されるので、「できる」かもしれませんが、追加パーティションで同等のウェアを実行しない限り、ドライブ全体が単一パーティションの場合よりも速くドライブのその部分のウェアを消耗するとは限りません(例: デュアルブート)。

それは完全に間違っています。  パーティションだけを読み書きするので、パーティションを消耗させることは不可能です。これは、SSDがどのように動作するかということとは全く関係ありません。

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

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

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

ハードドライブと同様に、ナンドフラッシュの S.S.D.はシーケンシャルアクセスなので、追加パーティションから書き込んだり読み込んだりするデータは、1つのパーティションに書き込まれた場合の「かもしれない」データよりも遠くになります。これにより、追加パーティションに保存されているデータへのアクセス時間が長くなります。

いや、これはまた間違っている!  ロビン・フッドは、SSDが正確にどのように動作するかを考えるのではなく、ファイルシステムの観点から物事を考えています。繰り返しになりますが、ファイルシステムがSSDがどのようにデータを保存しているかを知る方法はありません。ここでは「もっと遠くに」ということはありません。それはファイルシステムの目に映るだけで、SSDが情報を保存する実際の方法ではありません。SSD が異なる NAND チップにデータを分散させることは可能であり、ユーザーはアクセス時間の増加に気づかないでしょう。NANDの並列性により、以前よりも高速になる可能性もありますが、ここではナノ秒の話をしているのですから、まばたきをすると見逃してしまいます。

総容量が少なくなると、断片化されたファイルを書き込む可能性が高くなり、パフォーマンスへの影響は小さいですが、一般的にNAND-Flash S.S.D.をデフラグするのはドライブを消耗させるため、よくないアイデアと考えられていることを覚えておいてください。もちろん、使用しているファイルシステムによっては、断片化の量が極端に少なくなるものもありますが、これは、ファイルをあちこちにダンプして書き込み速度を上げるのではなく、可能な限りファイルを全体として書き込むように設計されているからです。

いいえ、すみません。ファイルシステムのファイルの見方とSSDの同じファイルの見方は、全く似ていません。ファイルシステムは可能な限り最悪の場合、ファイルを断片化されたものとして見るかもしれませんが、同じデータに対するSSDの表示はほぼ常に最適化されています。

このように、デフラグプログラムはこれらの LBA を見て、このファイルは本当に断片化されているに違いないと言うでしょう!   しかし、SSD の内部についての手掛かりがないので、それは 100% 間違っています。これがデフラグプログラムがSSDで動作しない理由であり、そう、デフラグプログラムはまた、前述したように不要な書き込みを引き起こします。

SSDがどのように動作するかについて、より技術的なことを知りたい場合は、記事シリーズ Coding for SSDs が良い概要を説明しています。

FTLがどのように動作するかについての「軽い」読み物としては (Flash Translation Layer)が実際に動作するかどうかについては、 Flash Memory Summit nbsp; (PDF)を読むことをお勧めします。

他にも、以下のような論文がたくさんあります。

この仕組みについての別の論文。 フラッシュメモリの概要 nbsp;(PDF)。  データの書き込み」(26-27ページ)を参照してください。

ビデオの方が好きな方は、 An efficient page-level FTL to optimize address translation in flash memory と関連する slides を参照してください。

15
15
15
2016-05-30 14:53:57 +0000

答えは十分に単純で、SSD の一般的な知識から直接導かれたものなのに、ここでは非常に長い答えが出ています。答えを理解するためには、ウィキペディアの ソリッドステートドライブ の用語を読む以上のものは必要ありません。

(今は遠い昔)、オペレーティングシステムはSSDをあまりサポートしておらず、特にパーティショニングが消去ブロックのサイズに応じてパーティションを整列させるように注意を払っていませんでした。

このアライメントの欠如は、OSの論理ディスクセクタが物理SSDブロック間で分割されている場合、OSが1つの更新しか意図していない場合にSSDが2つの物理セクタをフラッシュする必要があり、ディスクアクセスが遅くなり、ウェアレベリングを増加させる可能性がありました。

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

実際、SSDをパーティション化する理由は、今日では従来のディスクと全く同じです: データをより良く整理して分離するため。

例えば、OSの大規模なアップデートを行う際の予防策として、OSを別の小さなパーティションにインストールしておくと、バックアップイメージを取るのに便利です。

4
4
4
2016-06-06 07:25:59 +0000

SSDをパーティショニングすることには何の欠点もなく、実際にはパーティショニングされていないスペースを残しておくことで、SSDの寿命を延ばすことができます。

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

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

このことから、パーティションはウェアレベリングには関係ないと結論づけることができます。これは、HDDとコントローラの観点から見ると、パーティションは実際には存在しないため、理にかなっています。ブロックとデータがあるだけです。パーティションテーブルも同じブロック(MBRの場合はドライブの1ブロック目)に書き込まれています。OSがテーブルを読み込んで、どのブロックにデータを書き込んで、どのブロックにデータを書き込まないかを決めるのです。OSは、各ブロックに一意の番号を与えるためにLBAを使用してブロックを見ています。しかし、コントローラはその後、ウェアレベリングスキームを考慮して、論理ブロックを実際の物理ブロックにマッピングします。

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

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

これはまた、パーティショニングされていないスペースも摩耗のレベルアップに使用されていることを示唆しており、上記のポイントをさらに証明しています。

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

1
1
1
2016-06-02 14:53:00 +0000

ディスクのセクタは昔から512バイトで、機械式ディスクはセクタの読み書きにかかる時間に影響するのはシークの遅延だけという性質を持っています。そのため、機械式ハードドライブでの主な最適化ステップは、シークを最小限に抑えるためにブロックを順次読み書きすることでした。

フラッシュは、機械式ハードドライブとは大きく異なります。生のフラッシュレベルでは、ブロックはありませんが、ページと「eraseblocks」(LinuxのMTD用語を借りると)を持っています。一度にページをフラッシュに書き込むことができ、一度にイレースブロックをフラッシュに消去することができます。

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

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

ページとセクタの間に1:1のマッピングがある場合、パーティションテーブルが奇数ページから始まったり、消去ブロックの途中にページがあったりすると、どのようにして問題が発生するかがわかります。OSはドライブからデータを4Kバイトのチャンクで取得することを好みますが、これはx86のページングハードウェアと一致しているので、そのような4Kバイトのブロックが消去ブロックにまたがっている可能性があることを考えると、どのようにしてそのような4Kバイトのブロックが消去ブロックにまたがっている可能性があるのかがわかります。 つまり、更新するには1ブロックではなく2ブロックを消去して書き換える必要があるということです。 パフォーマンスの低下につながります。

しかし、SSD ファームウェアは 1:1 のマッピングを維持するのではなく、物理ブロックアドレス (PBA) から論理ブロックアドレス (LBA) への変換を行います。つまり、セクタ5000や他の任意のセクタが本当にフラッシュに書き込まれている場所がわからないということです。それは常に事前に消去された消去ブロックに書き込みをしようとする設計によって舞台裏で多くのことをやっています。ファームウェアを分解してみないと何をしているのか正確にはわかりませんが、ファームウェアが完全にジャンクでない限り、ファームウェアはおそらくこれを回避しています。

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

つまり、内部的には常に4Kセクタを読み書きするが、OSからは隠しているということです。この場合、4KByteの境界線上にあるセクタに書き込みをしないと、そのような読み書きのたびに内部で4KByteのセクタが2つ読み書きされることになるため、速度ペナルティが発生することになります。しかし、SSDの場合はこの限りではありません。

いずれにしても、これがSSDをパーティション化しないことが推奨されている唯一の状況です。しかし、これは当てはまりません。

-1
-1
-1
2015-10-14 07:21:57 +0000

これらの回答が無視しているのは、Windows SSDの最適化です。これがパーティショニングが良くなるということなのかどうかはわかりませんが、WindowsドライブとしてパーティショニングされたCドライブの場合、以下のようなことができます。

  1. インデックスを有効にする
  2. 最後にアクセスした時間を追跡する必要がない
  3. 古い 8 文字の DOS 名を保存する必要がない
  4. Windows のゴミ箱をバイパスする。
-2
-2
-2
2014-09-08 22:10:25 +0000

私は、この答えを明確にするためにいくつかの背景情報が役に立つかもしれないと決めましたが、あなたが見ることができるように、私は少し強迫神経症になってしまったので、あなたは最後までスキップして、必要に応じて戻った方がいいかもしれません。私は少しは知っていますが、私はS.S.D.の専門家ではありませんので、誰かが間違いを見つけたらEDITしてください。)

背景情報。

S.S.D.とは何か:

S.S.D.またはソリッドステートドライブとは、可動部分のないストレージデバイスです。S.S.D.という用語は、ハードドライブの代替として機能することを目的としたナンドフラッシュベースのソリッドステートドライブを指すことが多いですが、実際にはS.S.D.の1つの形態にすぎず、最も一般的なものですらありません。S.S.D.の最も一般的なタイプは、USBスティック(フラッシュドライブ)やメモリカードのようなナンドフラッシュベースのリムーバブルメディアですが、S.S.D.と呼ばれることはほとんどありません。S.S.D.S.D.はRAMベースのものもありますが、ほとんどのRAMドライブは物理的なハードウェアではなく、ソフトウェアで生成されたものです。

なぜハードドライブの代替として動作するように意図されたNand-flash S.S.D.s.が存在するのか:

オペレーティングシステムとそのソフトウェアを実行するためには、高速な記憶媒体が必要です。これがRAMの出番ですが、歴史的にRAMは高価で、CPUは大量のデータを処理することができませんでした。オペレーティングシステムやプログラムを実行すると、現在必要とされているデータの一部がRAMにコピーされます。遅いストレージデバイスからラムにデータがコピーされるのを待たなければならないため、ボトルネックが発生します。すべてのナンドフラッシュS.S.D.が従来のハードドライブよりも優れたパフォーマンスを発揮するわけではありませんが、アクセス時間、読み取り速度、書き込み速度を高速化することでボトルネックを軽減することができます。

Nand-flashとは:

フラッシュストレージは、磁気ではなく電気を使ってデータを保存する記憶媒体です。Nand-flashはNANDゲートウェイを利用したフラッシュストレージです。ランダムアクセスであるAノーフラッシュとは異なり、ナンドフラッシュは順次アクセスされます。

**Nand-flash S.S.D.s.はどのようにデータを保存するのですか?磁気を利用してデータを保存するハードドライブとは異なり、フラッシュメディアは電気を利用しています。また、個々のページを消去することはできず、ブロック単位で消去する必要があります。すでに使用されているブロックにデータを書き込むことはできないので、(中のすべてのページが使用されていなくても)まずブロック全体を消去してから、空白になったブロックのページにデータを書き込むことができます。問題は、廃棄したくないデータも含めて、すでに使用されているページのデータが失われてしまうことです。この既存のデータが保持されるのを防ぐためには、ブロックの消去を実行する前に、どこか別の場所にコピーされなければなりません。このコピー処理はコンピュータのオペレーティングシステムによって実行されるのではなく、ガベージコレクションとして知られている機能によってデバイスレベルで実行されます。

ハードドライブでは、データを保存するために磁気プレートが使用されます。レコードのように磁気プレートにはトラックがあり、これらのトラックはセクタと呼ばれるセクションに分割されています。セクターには一定量のデータを格納することができます(通常は512バイトですが、新しいものでは4KBのものもあります)。ファイルシステムを適用すると、セクタはクラスタにグループ化され(指定したサイズに基づいて、割り当てサイズやクラスタサイズと呼ばれる)、ファイルはクラスタにまたがって書き込まれます。また、セクタを分割して、指定したセクタサイズよりも小さいサイズのクラスタにすることも可能です。クラスタ(または複数)にまたがってファイルが書き込まれた後、クラスタ内で使用されていないスペースは使用できないため、次のファイルは新しいクラスタで開始されます。多くの使用不可能なスペースを避けるために、一般的には小さいクラスタサイズを使用しますが、これは大きなファイルを書き込むときのパフォーマンスを低下させる可能性があります。Nand-flash S.S.D.s.には磁気プレートがなく、メモリブロックを通過する電気を使用しています。ブロックはページを含むセルで構成されています。ページの容量はX(通常は4KB)で、ページ数によってブロックの容量が決まります(通常は512KB)。SSDでは、ページはハードドライブのセクタに相当し、どちらもストレージの最小の分割を表すからです。

ウェアレベリングとは何か:

Nand-flashストレージブロックは、限られた回数しか書き込んだり消去したりできません(ライフサイクルと呼ばれています)。ドライブの容量減少(デッドブロック)を防ぐためには、ブロックをできるだけ均等に消耗させることが重要です。ライフサイクルが限られていることは、Nand-flash ベースの S.S.D.を使用している場合、多くの人がオペレーティングシステムにページファイルやスワップパーティションを持たないことを推奨している主な理由でもあります(デバイスからラムへのデータ転送速度が速いことも、この推奨の主な要因ですが)。

**オーバープロビジョニングとは何ですか? Nand-Flashベースのストレージデバイスは、以下のように主張しています。を使用するためのゴミ処理のための空のブロックがあることが保証されているように、それらがあるよりも小さいです。動的オーバープロビジョニングと呼ばれる第二の種類のオーバープロビジョニングがあり、これは単に示された空き領域内の既知の空き領域を参照します。ダイナミック・オーバー・プロビジョニングには、オペレーティング・システム・レベルとドライブ・コントローラ・レベルの2種類があります。オペレーティングシステムレベルでは、Trim を使用してブロックを解放し、すぐに書き込めるようにします。コントローラレベルでは、未割り当てのドライブスペース(パーティション分割されていない、ファイルシステムがない)を使用することができます。より多くの空きブロックを持つことで、すぐに書き込みができるため、ドライブを最高のパフォーマンスで動作させることができます。また、Nand-flash S.S.D.はデータの読み書きにシーケンシャルアクセスを使用するため、ブロックが連続して配置されている可能性が高くなり、アクセス時間が短縮されます。

書き込み増幅とは:

Nand-flashメディアでは、書き込みを行う前にブロックを消去する必要があるため、消去されていないブロック内のデータは、ゴミ処理によって新しいブロックにコピーされなければなりません。このような追加の書き込みは、書き込み増幅と呼ばれています。

Trimとは何か:

オペレーティングシステムは、従来のハードドライブを念頭に置いて構築されています。従来のハードドライブは、データを直接上書きすることができることを覚えておいてください。ファイルを削除すると、オペレーティングシステムはそのファイルを削除したものとしてマークしますが(上書きしても問題ありません)、書き込み操作が行われるまでデータは残っています。Nand-flashベースのS.S.D.S.D.では、まずデータを消去する必要があるため、これが問題となります。消去はブロックレベルで行われるため、消去されていないデータが追加されている可能性があります。ゴミ処理は、削除のためにアップされていない任意のデータを空のブロックにコピーし、問題のブロックを消去することができます。これはすべて時間がかかり、不必要な書き込み(書き込み増幅)が発生します。これを回避するために、Trimと呼ばれる機能が作られました。Trimはオペレーティングシステムに、書き込み操作を要求していない期間中に、オペレーティングシステムが削除するようにマークしたデータを含むページのあるブロックを消去するように指示する力を与えます。ガベージコレクションがそれを行い、結果としてブロックが解放されるので、最初に消去する必要のないブロックへの書き込みが発生し、プロセスを高速化し、書き込みの増幅を最小限に抑えることができます。これはファイルベースではなく、Trim は論理ブロックアドレッシングを使用します。L.B.A.は消去するセクタ(ページ)を指定し、消去はブロックレベルで行われます。

The Answer To Your Question “Disadvantages of partitioning an SSD?

ラムベースのS.S.D.s:

ランダムアクセスなので、デメリットは全くありません!

Nand-flash ベースの S.S.D.s:

デメリットといえば、私の頭に浮かぶのは以下の点だけです。

1.ウェアレベリングでは、書き込み操作がより小さなスペースに分散されるため、遊べる空きスペースが少なくなります。

  1. ハードドライブと同様に、NAND-FLASH S.S.D.はシーケンシャルアクセスなので、追加パーティションに書き込んだり読み込んだりするデータは、通常パーティションに空き領域を残しているため、シングルパーティションに書き込んだ場合の「かもしれない」データよりも遠くになってしまいます。これにより、追加パーティションに保存されているデータへのアクセス時間が長くなります。

  2. 総容量が少なくなると、断片化したファイルを書き込む可能性が高くなります。パフォーマンスへの影響は小さいですが、一般的にはドライブを消耗させるので、ナンドフラッシュS.S.D.をデフラグするのは良くないと考えられていることを覚えておいてください。もちろん、使用しているファイルシステムによっては、断片化の量が極端に少なくなるものもありますが、それは、ファイルをあちこちにダンプするのではなく、可能な限り全体として書き込むように設計されているからです。

複数のパーティションを持っていても問題ないと思いますが、書き込みが多いパーティションと少ないパーティションがある場合、ウェアレベリングが気になるかもしれません。あなたが使用する予定のないスペースを分割しない場合は、代わりに動的なオーバープロビジョニングのためにそれを残しておくと、ブロックを解放し、シーケンシャルなデータを書き込むことが容易になるので、パフォーマンスが向上する可能性があります。しかし、オーバープロビジョニング用のスペースが必要になる保証はありません。

このスレッドの他の何人かの人が、パーティショニングがダイナミックなオーバープロビジョニングに対する Trim の貢献にどのように影響するかについての議論を持ち出しています。私の理解では、TRIM は削除のフラグが立っているデータを持つセクタ(ページ)を指摘するために使用され、ガベージディスポーザがそれらのブロックを自由に消去できるようにしています。この空き領域は、そのパーティション内でのみダイナミックオーバープロビジョニングとして機能します。他のパーティションはそれぞれのファイルシステムを持っています。他のパーティションは独自のファイルシステムを持っています。しかし、オーバープロビジョニングという考え方は、ファイルシステムを持っていない場所にデータが書き込まれたり、ドライブの容量に表示されたりするので、私は完全に間違っているかもしれません。このことから、おそらくオーバープロビジョニングスペースは、ファイルシステム内のブロックへの最終的な最適化された書き込み操作の前に、一時的に使用されるのではないかと考えさせられます。もちろん、ファイルシステム内のダイナミックなオーバープロビジョニングへの Trim の貢献は一時的なものではないでしょう。少なくとも私の理論ではそう考えています。filesytems についての私の理解が間違っているのかもしれません。これについて詳しく説明しているリソースを見つけられませんでした。

-14
-14
-14
2014-09-08 16:14:00 +0000

いや、これは理にかなっている。

SSDの速度は、使用中のパーティションの使用可能なスペースの量に直結します。ドライブを小さなセクションに分割した場合、空き容量が不足しているためにSSDの効率が落ちてしまいます。

つまり、SSDのパーティションを分割することの欠点はありませんが、ドライブに空き容量がないことの欠点はあります。

このSuperUser post を参照してください。