ハードディスク – HDDやSSDの空き容量は?

filesystems hard-drive operating-systems performance ssd

非公式な(つまりジャーナリスティックな)技術報道やオンライン技術ブログやディスカッションフォーラムでは、ハードディスクやソリッドステートドライブにある程度の空き容量を残しておくようにという逸話的なアドバイスをよく目にします。その理由は様々ですが、時には全く理由がないこともあります。このように、これらの主張は、実際にはおそらく合理的でありながら、それらについての神話的な空気を持っています。たとえば、次のようなものです

  • あなたのディスクが80%満杯になったら、満杯と考えるべきで、すぐに削除するかアップグレードするべきです。もし、90%が満杯になったら、あなたは自分の個人的なズボンが実際に燃えていると考えるべきであり、それを改善するために適切な量の即時性を持って反応すべきです。(ソース)

  • ピーク効率でゴミ収集を維持するために、従来のアドバイスは、あなたのドライブの空の20〜30%を維持することを目指しています。 ソース

  • 性能を上げるためにHDに20%くらい空きを残した方がいいと言われたことがあります、HDはフルに近いと本当に遅くなります。(ソース)

  • スワップファイルや一時ファイルは余裕を持って置いた方がいいですね。私は現在33%の空きを残し、10GBのHDD空き容量を下回らないように誓っています。(ソース)

  • 私は、通常15%と言うだろう, しかし、どのように大容量のハードドライブは、現在の日であると、限り、あなたのテンポラリファイルとスワップファイルのために十分な量を持っている限り、技術的には安全です。ソース

  • Windowsで10%プラスをお勧めするのは、デフラグを実行するときにドライブにその程度の空きがないとデフラグが実行されませんので、私は10%プラスをお勧めします。(ソース)

  • あなたは一般的に断片化を避けるために約10%の空きを残したいと思います(ソース

  • お使いのドライブが一貫して75%または80%以上満杯になっている場合は、より大きなSSDへのアップグレードを検討する価値があります。(ソース)

オペレーティングシステム、ファイルシステム、ストレージ技術の特定の組み合わせ (例: 磁気プラッター対ソリッドステート) で必要とされる空き容量の割合や絶対量についての研究はありましたか? (理想的には、スワップ領域 のシステムが不足するのを防ぐため、あるいはパフォーマンスの低下を避けるためなど、特定の使用量を超えない理由も説明されていることが望ましいでしょう)

もし、そのような研究をご存知でしたら、その研究へのリンクと調査結果の簡単な要約を添えて回答していただけるとありがたいです。ありがとうございます

  112  None  2017-10-04


ベストアンサー

好ましくは査読付きジャーナルに発表された研究はありますか[…]?

このことについては、システム管理やその他の分野で20年以上も前にさかのぼらなければなりません。これは、少なくともパーソナルコンピュータやワークステーションのオペレーティングシステムの世界では、30年以上も前にホットな話題となっていました

その作成者による両方の文献では、これらのファイルシステムがどのように組織されていたか、ブロック割り当てポリシーが連続したファイルブロックを連続したものにすることでより良いパフォーマンスをもたらすようになっていたかが議論されています。このことや、ブロックを割り当てるために残された空き領域の量と位置がブロックの配置、ひいてはパフォーマンスに影響を与えるという事実についての議論は、このテーマに関する現代の記事で見ることができます

例えば、Berkeley FFS のブロック割り当てアルゴリズムの説明から、カレントシリンダグループとセカンダリシリンダグループに空き領域がなく、アルゴリズムが第 4 レベルのフォールバック (「すべてのシリンダグループに網羅的な検索を適用する」) に達した場合、ディスクブロックの割り当てのパフォーマンスが低下し、ファイルの断片化 (したがって読み取りパフォーマンス) にも影響を与えることは、かなり明らかであるべきです

過去30年の間に得られた知恵の上に築かれたのは、これらの分析や類似の分析 (当時のファイルシステム設計のレイアウトポリシーを改善することを目的とした唯一のファイルシステム設計とは程遠いものです) でした

例えば、以下のようなものです。元の論文にあった、FFS ボリュームを 90% 未満にしておくとパフォーマンスが低下するという口実は、作成者による実験に基づいていますが、今世紀に出版された Unix ファイルシステムに関する書籍でも無批判に繰り返されていることがわかります。これを疑問視する人はほとんどいませんが、Amir H. Majidimehr は 100 年前に実際に xe は実際には顕著な効果が観察されていないと述べています。また、Bill Calkinsは、低い空き容量のパフォーマンス効果を観察する前に、実際には21世紀のディスクサイズで99%まで満たすことができることを提案しています

この後者は、受け取った知恵が間違ったものになってしまう例です。この例は他にもあります。SCSIやATAの世界の論理ブロックアドレッシングやゾーン化されたビット記録が、BSDファイルシステムの設計における回転レイテンシの慎重な計算のすべてを窓から投げ捨てたように、SSDの物理的な力学が、ウィンチェスターディスクに適用されるフリースペースの常識を窓から投げ捨てたのです

SSD では、デバイス全体、つまりディスク上のすべてのボリュームとその間の空き領域の量が、パフォーマンスと寿命の両方に影響を与えます。また、ファイルは連続した論理ブロックアドレスを持つブロックに保存する必要があるという考えの根拠は、SSDには回転するプラッタやシークするヘッドがないという事実によって支えられています。ルールがまた変わるのです

SSDの場合、推奨される最小の空き容量は、33年前のWinchesterディスクやBerkeley FFSの実験で得られた従来の10%よりも実際には多くなっています。Anand Lal Shimpi氏は、例えば25%としています。この違いは、これがデバイス全体の空き領域でなければならないのに対し、10%という数字は各単一のFFSボリューム内にあり、パーティションテーブルによって有効なディスクボリュームに割り当てられていない領域をすべてTRIMすることをパーティショニングプログラムが知っているかどうかに影響されます

また、ディスクボリューム内の空き領域を TRIM することができる TRIM を意識したファイルシステムドライバなどの複雑さや、SSD メーカー自身も、ガベージコレクションやウェアレベリングなどのさまざまな用途のために、デバイスの外 (すなわちホスト) には見えないさまざまな程度の予約領域をすでに割り当てているという事実によって、さらに複雑さが増しています

Bibliography

11  JdeBP  2017-10-09


私は「査読付きジャーナル」に掲載されている「研究」については話せませんし、日々の仕事でそれらに頼る必要はないでしょうが、何年にもわたって様々なOSの下で何百台もの本番サーバを運用してきた現実については話すことができます

フルディスクがパフォーマンスを低下させる理由は3つあります

  • フリースペース飢餓。テンポラリファイル、アップデートなどを考える
  • ファイルシステムの劣化。ほとんどのファイルシステムは、十分なスペースがない場合、ファイルを最適にレイアウトする能力に悩まされます
  • ハードウェアレベルの劣化。十分な空き領域のないSSDやSMRディスクは、スループットの低下を示し、さらに悪いことに、レイテンシーの増加(時には何桁にも及ぶ)を示します

最初の点は些細なことで、特にまともな生産システムでは、動的にファイルを展開したり縮小したりする際にスワップスペースを使用することはありません

二つ目のポイントは、ファイルシステムやワークロードによって大きく異なります。ワークロードが混在している Windows システムでは、70%のしきい値が非常に有効であることがわかります。Linux の ext4 ファイルシステムで、ファイル数は少ないが大容量のファイルを扱う場合 (例: ビデオ放送システム)、これは 90%以上になるかもしれません

3 つ目のポイントは、ハードウェアとファームウェアに依存しますが、特に Sandforce コントローラを搭載した SSD は、高書き込みワークロードでフリーブロック消去に陥り、書き込みレイテンシが数千パーセント上昇する可能性があります。通常、パーティションレベルで25%の空き容量を残し、80%以下のフィルレートを観察します

Recommendations

私は、最大充填率が施行されていることを確認する方法に言及したことを認識しています。いくつかのランダムな考え、それらのどれもが「ピアレビュー」(有料、偽物、本物)ではありませんが、それらはすべて生産システムからのものです

  • ファイルシステムの境界を使う。/var はルートファイルシステムに属していません
  • モニタリング、モニタリング、モニタリング。それがあなたに合っている場合は、既製のソリューションを使用し、それ以外の場合は、df -hの出力を解析して、万が一のためにアラームベルを行かせてください。これは、自動アップグレードがインストールされていて、自動削除オプションなしで実行されているルートfs上の30のカーネルからあなたを救うことができます
  • 最初の場所でそれを大きくするためのコストに対して、fsのオーバーフローの潜在的な混乱を量る。あなたが埋め込まれたデバイス上にいない場合、あなただけのルートのためにそれらの4Gを倍増させるかもしれません

48  Eugen Rieck  2017-10-04


オペレーティングシステム、ファイルシステム、ストレージ技術の特定の組み合わせによって必要とされる空き容量の割合や絶対量についての研究はありましたか?

20年間のシステム管理の経験の中で、様々な構成の空き容量の要件を詳細に調査したことはありません。これは、コンピュータの構成が非常に多様であるため、可能なシステム構成の数が非常に多いために、これを行うのは難しいのではないかと考えています

システムが必要とする空き領域を決定するためには、2つの変数を考慮しなければなりません

  1. 望ましくない行動を防ぐために必要な最低限のスペースであり、それ自体が流動的な定義を持つこともある

    この定義だけで必要なフリースペースを定義するのは役に立たないことに注意してください

  2. ストレージが消費される速度は、管理者が反応する時間がある前にシステムが劣化することを防ぐために、追加の可変量のスペースを確保することを規定しています

OS、ファイルシステム、基礎となるストレージアーキテクチャ、アプリケーションの動作、仮想メモリ構成などの特定の組み合わせは、明確な空き領域要件を提供したいと考えている人にとっては、かなりの課題となります

だからこそ、そこにはたくさんの「ナゲット」なアドバイスがあるのです。それらの多くが特定の構成を中心に推奨していることに気づくでしょう。例えば、”容量に近いときにパフォーマンスの問題が発生するSSDを持っている場合は、20%以上の空き容量を確保してください。”などです

この質問に対する単純な答えはありませんので、システムの最小空き領域要件を特定するための正しいアプローチは、システムの特定の構成に照らして様々な一般的な推奨事項を検討し、しきい値を設定し、それを監視し、必要に応じてそれを喜んで調整することです

あるいは、少なくとも20%の空き容量を確保することもできます。もちろん、SSDと従来のハードディスクと事前に割り当てられたスワップファイルの組み合わせでバックアップされた42TBのRAID 6ボリュームを持っていない限り…。(それは真面目な人のためのジョークです)

29  I say Reinstate Monica  2017-10-04


もちろん、ドライブ自体(HDDでもSSDでも)は、SSDの空き容量を事前に消去することができることを除けば、何パーセント使用されているかなんて気にすることはできません。読み込み性能は全く同じになりますし、書き込み性能はSSDの方が多少悪くなるかもしれません。いずれにしても、ほぼ満杯に近いドライブでは、何も書くスペースがないので、書き込み性能はそれほど重要ではありません

一方、OS、ファイルシステム、アプリケーションは、常に空き容量があることを期待しています。20 年前は、アプリケーションがドライブにファイルを保存しようとする前に、ドライブの空き容量をチェックするのが一般的でした。今日では、アプリケーションはあなたの許可を求めずに一時的なファイルを作成し、それに失敗するとクラッシュしたり、異常な動作をしたりするのが一般的です

ファイルシステムにも同様の期待があります。例えば、NTFS はディスクの大部分を MFT 用に予約していますが、このスペースは空き容量として表示されます。NTFS ディスクを容量の 80% 以上にすると、MFT 断片化が発生し、パフォーマンスに非常に大きな影響を与えます

さらに、空き領域を持つことは、通常のファイルの断片化に対して確かに役立ちます。ファイルシステムは、各ファイルのサイズに応じて適切な場所を見つけることで、ファイルの断片化を回避する傾向があります。ほぼ満杯に近いディスクでは、選択肢が少なくなるので、より悪い選択をしなければなりません

Windows では、スワップファイルのために十分なディスク容量が必要な場合には、必要に応じて容量を増やすことができます。もしそれができない場合は、アプリが強制的に閉じられてしまうことを期待してください。非常に少ないスワップ領域を持つことは、確かにパフォーマンスを悪化させることができます

たとえスワップのサイズが固定されていたとしても、システムのディスク容量を完全に使い切ってしまうと、システムをクラッシュさせたり、/または起動不能にしたりする可能性があります(WindowsでもLinuxでも同じです)。そう、ディスク使用率が90%を超えたら、絵の具が燃えていることを考えるべきです。一度も私は最近のダウンロードが削除されるまで、正常に起動できなかったコンピュータを見たことはありませんが、OSに少しのディスクスペースを与えるために削除されました

12  Dmitry Grigoryev  2017-10-05


SSDの場合、書き換え速度が増加し、ディスクの書き込み性能に悪影響を及ぼすため、ある程度の空き容量があるはずです。80%のフル容量はおそらくすべてのSSDディスクにとって安全な値であり、最新モデルの中には90~95%の占有容量でも問題なく動作するものもあります

Why Solid-State Drives Slow Down As You Fill Them Up
The benchmarks are clear: Solid-state drives slow down as you fill them up.

8  Jaroslav Kucera  2017-10-04


“ルール “は、あなたの要件によって異なります。また、例えば ZFS のような特殊なケースもあります。「90% の容量で、ZFS はパフォーマンスベースの最適化からスペースベースの最適化に切り替わりますが、これは大規模なパフォーマンスへの影響があります。はい、これは ZFS の設計上の側面です…観察や逸話的な証拠から導き出されたものではありません。明らかに、ZFS ストレージプールが SSD のみで構成されている場合は、これは問題ではありません。しかし、回転ディスクを使用していても、スタティックストレージを扱う場合には、99% または 100% に達することができ、一流のパフォーマンスは必要ありません

次に、btrfs – 極端な例ですが、空き容量が少なくなりすぎると(数MByte)、ノーリターンのポイントにぶつかることがあります。いいえ、ファイルを削除することはできません。btrfs は COW (コピーオンライト) ファイルシステムなので、メタデータを変更できなくなってしまうことがあります。この時点では、ファイルシステムにストレージを追加しても構いません (USB サムドライブが使えるかもしれません)。繰り返しになりますが、これはファイルシステムの設計に起因するいくつかの側面があります

本当の(真面目な)データ」を提供できる人は、おそらく「本当の(真面目な)ストレージ」を扱っている人でしょう。Twistyの(優れた)回答は、ハイブリッドアレイ(大量の安価な低速回転の高速回転ディスク、多数の高速回転ディスク、多数のSSDからなる)について言及していますが、これは企業環境で運用されており、主な制限要因は管理者がアップグレードを注文できる速度です。16Tから35Tへの移行には6ヶ月かかることがあります…そのため、アラームを50%に設定することを示唆するような、深刻な裏付けのあるレポートで終わることになります

8  Klaws  2017-10-05


セットアップ固有の量で結果に寄与する多くの要因があります。だから、堅実な数字はありません、これは、これらのパラメータの関数としてのみ測定することができます。他のユーザーがこの特定の主題についての特定の研究を報告していない理由はおそらくそれです – 決定的な何かをコンパイルするには、あまりにも多くの変数)

  • Hardware

    • HDDは常にすべてのセクタが割り当てられています。そのため、その中に現在のユーザーデータがいくつ含まれていようと、絶対に気にしません。(コントローラの場合は、すべてのセクタに常時何らかのデータが含まれており、指示された通りに読み込んで上書きするだけです)
    • 一方、SSDのコントローラは、ファイルシステムのようにセクタを動的に(デ)割り当てます。そのため、使用頻度が高くなると、この作業が難しくなります。これがどの程度難しくなるか、また、これが観測可能なパフォーマンスにどの程度影響するかは、以下の点に依存します
      • コントローラの性能とアルゴリズムの品質
      • Write load
      • 文字の範囲では、全体的な負荷(コントローラにガベージコレクションのための時間を与えるため)
      • スペースオーバープロビジョニング(一部のメーカーでは、顧客がそれを事前に選択したり、動的に変更したりすることもできます)
  • File system

    • 異なるファイルシステムは、異なる負荷やホストの処理要件に合わせて設計されています。これは、フォーマットパラメータによってある程度調整することができます
    • FS の書き込み性能は空き領域と断片化の関数であり、読み取り性能は断片化のみの関数です。最初から徐々に劣化していくので、問題は許容できる閾値がどこにあるかということです
  • Load type

    • 書き込みの多い負荷は、新しい無料のブロックを素早く見つけてアクセスすることに重点を置いています
    • 読み取り重負荷は、関連するデータを統合することを重視しているため、より少ないオーバーヘッドで読み取ることができます

4  ivan_pozdeev  2017-10-06


機械式ドライブで考慮すべきことの一つは、外周部のスループットが内周部よりも高いということです。これは、外側の円周が大きいほど、1回転あたりのセクタ数が多いためです

ドライブが容量に達すると、より低速な内部セクタのみが利用可能になるため、性能は低下します

より詳細な分析については、https://superuser.com/a/643634を参照してください

3  Wes Toleman  2017-10-05


ドライブの使用目的にもよりますが、一般的には20%~15%の空き容量が回転するディスクであれば正解で、10%以上のSSDであれば10%以上の空き容量が良いでしょう

これがコンピュータのメインドライブであり、ファイルを移動する場合は、20%の空き領域を確保することで大幅な速度低下を防ぐことができます。これにより、必要に応じてデータを移動したりコピーしたりできるように、ドライブ全体に十分な空き領域を確保することができます。回転ドライブは、空き領域が元のデータに近い場合に最適ですが、SSDの場合は物理的な位置が日々のパフォーマンスに影響しません。そのため、回転するドライブは、純粋にパフォーマンスの理由から、より多くの空き領域を持つ必要があります。SSDでは、空き領域が減ることでドライブの寿命が短くなりますが、パフォーマンスは低下しません。SSD は、ドライブ全体のセル使用量のバランスを取るために、一時的なデータやランダムなダウンロードファイルを最も使用頻度の低い場所に保存しようとしています。新しい SSD の中には、空のスペースが移動するようにファイルをインテリジェントに再配置するものもありますが、古いドライブではこれができない場合があります

これがメディアまたは長期ストレージドライブであれば、5%から10%の空き容量で十分であり、回転ディスクであれば10%の空き容量が望ましいでしょう。このドライブはほとんどデータを移動する必要がないので、パフォーマンスはそれほど重要ではありません。空き領域は、主に不良セクタを廃棄して置き換えることができるようにするために有用であり、ファイルがより連続していることができるようにします

私は、よほどの明確な理由がない限り、95%の容量を超えたドライブを1日以上押し続けることはありません

3  user3685427  2017-10-06


タイトルとURLをコピーしました