パフォーマンスの復元と使用済みSSDドライブの寿命の推定?


70

私の古い128 GB SSDドライブは約1年半前になりました。それ以来、別のドライブにアップグレードしました。

古いSSDをクリーンアップしたい...

  • パフォーマンスをほぼ新しいレベルに戻す

  • それを修復し、一般的に健康診断を与える

これを行うにはどうすればよいですか?


4
復元については説明していませんが、このブログ投稿これを防ぐために興味深いかもしれません。
タマラWijsman

1
私はちょうどそれを見逃したかもしれませんが、以下の答えのどれもが「チェック」されたことを見ませんでした。この質問の場合、私は最終的にあなたにとって「最良」に機能するようになったことに本当に興味があります。(たまたま思い出すと...)
不合理なジョン

回答:


56

Linuxでは、単に実行するだけです

hdparm --trim-sector-ranges start:count /dev/sda

startおよびの代わりにTRIMするブロック範囲を渡し、の代わりにcountSSDデバイスを渡します/dev/sda。高速であり、ドライブにゼロを書き込まないという利点があります。むしろ、TRIMコマンドをSSDコントローラーに送信するだけで、それらのブロック内のデータを気にしないことを通知し、ガベージコレクションアルゴリズムでデータが未使用であると自由に想定できます。

おそらく、このコマンドをルートとして実行する必要があります。このコマンドは非常に危険であるため、すぐに大きなデータ損失を引き起こす可能性があるため、--please-destroy-my-drive引数を渡す必要もありますhdparm(コピーアンドペーストによる偶発的なデータ損失を防ぐために、コマンドラインにこれ​​を追加していません)。

上記のコマンドラインで、/dev/sdaTRIMコマンドを送信するSSDデバイスに置き換える必要があります。startTRIMへの最初のブロック(セクター)のアドレスであり、countその開始アドレスから空きとしてマークするブロックの数です。複数の範囲をコマンドに渡すことができます。

128GB Crucial RealSSD C300を搭載したラップトップでUbuntu 11.04のhdparm v9.32を使用して個人的に実行した後、問題を指摘する必要があります:ディスクブロックの合計数(0:250069680)を範囲として渡すことができませんでした。私は手動で(本質的に手動で「バイナリ検索」)動作するブロックカウントに十分な値(40000)を見つけ、40000の範囲でTRIMコマンドを発行してディスク全体を解放することができました。次のような単純なシェルスクリプトを使用してこれを行うことができます(Ubuntu 11.04のルートでテスト済み)。

 # fdisk -lu /dev/sda

 Disk /dev/sda: 128.0 GB, 128035676160 bytes
 255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
 ...  

ドライブ全体を消去するには、その合計セクター数を取得し、次の行の250069680をその数に置き換えて実行します(追加--please-destroy-my-drive)。

 # i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
 | hdparm --trim-sector-ranges-stdin /dev/sda

これで完了です!ディスクの生の内容をhexedit /dev/sda前後に読み取って、ドライブがデータを破棄したことを確認できます。


もちろん、マシンのプライマリOSとしてLinuxを使用したくない場合でも、ライブCDから起動してドライブで実行することにより、このトリックを活用できます。


3
すばらしい記事ですが、残念ながらこれはTRIMをサポートしていないSSDでは機能しません。そのためには、もう少し進む必要があります。hdparmでこれを行う方法については、kernel.orgATA wikiを参照してください。元のエントリを変更してこの情報を含めることができればさらに良いと思います:)
ジェームズ

「fstrim」は上記の簡単なバージョンです(別の回答を参照)。
ブライス

@Bryce、不正解; TRIMはセキュリティのみではなく、パフォーマンス上の理由によるものです。これは、ほとんどのドライブと同様に、ドライブがコマンドを無視したり、後で消去を遅らせたりできることを意味します。
-psusi

24

まず、パフォーマンスの低下を引き起こすのは何かを理解することから始めましょう。これを知らずに、多くの人が不適切な解決策を提案します(既に発生しているように)。Wikipediaから引用されているように、この苦境全体の核心は基本的に次の事実に帰着します。それを覚えておいてください、それは重要です:

NANDフラッシュメモリでは、読み取り操作とプログラミング操作を一度に1ページずつ実行する必要がありますが、ロック解除と消去はブロック単位で行う必要があります。

SSDはNANDフラッシュで構成され、フラッシュは「ブロック」で構成されます。各ブロックには多くの「ページ」が含まれています。簡単にするため、メモリの途方もない単一ブロックを含む光沢のある新しいSSDを購入し、そのブロックは4つの空のページで構成されていることを想像してみましょう。

わかりやすくするために、空のページ、使用済みのページ、削除されたページを∅、1、およびXで区別しています。重要なのは、コントローラーの観点からこれらのそれぞれに違いがあるということです。1や0ほど単純ではありません。したがって、開始するには、新しいドライブのページは次のようになります。

∅、∅、∅、∅(すべて空)

ここで、ドライブにデータを書き込むと、その最初のページに保存されます。したがって、

1、∅、∅、∅

次に、もう2ページを必要とするだけの十分なデータを書き込むため、2ページ目と3ページ目に保存されます。

1、1、1、∅

スペースが不足しています!書き込んだ初期データは実際には必要ないので、それを削除してスペースを空けます。

X、1、1、∅

最後に、残りの2ページを消費する別の大きなデータセットを格納する必要があります。これは、パフォーマンスヒットがトリムなしでドライブで発生する場所です!! 最後の状態からこれに進みます:

1、1、1、1

...ほとんどの人が認識するよりも多くの作業が必要です。繰り返しますが、これはフラッシュがページ単位ではなくブロック単位でしか消去できないという事実によるものです。これは、上記の最終的な遷移が要求するものです。TRIMと非TRIMベースのSSDの間の差別化があるとき、次の作業が行われました!

空のページと削除されたページを使用する必要があるため、SSDは最初にブロック全体のコンテンツを何らかの外部ストレージ/メモリに読み取り、元のブロックを消去し、コンテンツを変更してから、それらのコンテンツを書き戻す必要がありますブロック。「書き込み」ほど単純ではなく、「読み取り-書き込み-書き込み」になりました。これは大きな変更であり、大量のデータを作成しているときに起こるのは、おそらくそれが起こるのに最も不適切な時間です。その「削除された」ページが事前に回復されていれば、それはすべて回避できます。これはまさにTRIMの目的です。TRIMを使用すると、SSDは削除されたページを削除直後に復元するか、TRIMアルゴリズムが適切であると判断した他の機会に復元します。しかし重要な部分は、TRIMでは書き込みの最中にそれが起こらないことです!

TRIMがなければ、ドライブをデータで満たすときに最終的に上記のシナリオを回避することはできません。ありがたいことに、いくつかの新しいSSDは、TRIMだけでなく、必要なATAコマンドなしでハードウェアレベルでTRIMと同じことを効果的に行います(このガベージコレクションと呼ばれることもあります)。しかし、どちらも持っていない不幸な私たちにとっては、ドライブ全体にゼロを書き込むだけでは元のパフォーマンスを取り戻すには不十分だということを知ることが重要です!!!!! ドライブにすべてゼロを書き込んでも、フラッシュのページが書き込み用に空いていることをコントローラーに示しません。TRIMをサポートしないドライブでそれを行う唯一の方法は、HDDEraseなどのツールを使用して(Wayback Machineを介して)ドライブでATAセキュア消去コマンドを呼び出すことです。

私は信じているパーティションを削除する時にまたはWindows 7の「すべてでdiskpartクリーン」のようなものに応じて、ない個々のファイルの削除時にいくつかの初期のSSDのもののみがサポートTRIMがありました。これは、古いコマンドがそのコマンドの実行時にパフォーマンスを回復するように見えた理由かもしれません。これは私には少しかすんでいるようですが...

一般的なSSDとハードウェア/ガジェットに関する私の知識の多くは、anandtech.comから来ています。私は彼がこのすべてを説明する素晴らしい記事を書いていると思っていましたが、私の人生ではそれを見つけることができません!



これをざっと読みましたが、ATAの安全な消去、ブロックごとの引用とページごとの引用に言及して+1しました。
クリストファーガルピン

1
この答えのほとんどは正しいですが、ガベージコレクションに関する部分は正しくありません。すべてのSSDにはガベージコレクションがあります。それなしでは機能しません。ガベージコレクションは、TRIMに代わるものではありません。空の状態では、NANDセルは1を表し、0に書き込むことができます。しかし、ゼロに戻すには、ブロック全体を一度に消去する必要があります。したがって、既存のデータを上書きする代わりに、変更は新しいブロックに書き込まれ、古いデータは無効としてマークされます。無効なデータを消去するのはガベージコレクションです。TRIMは、OSで削除したデータを無効としてマークするようにSSDに指示します。
アルファ氏

まったくアルファさんではありません。「ガベージコレクション」という用語は、絶対に必要なときに単純に反応するのではなく、最適なタイミングでプロアクティブに実行するコントローラーに由来します(ドライブがいっぱいになるとパフォーマンスが低下します)。
ジェームズ

1
たぶん「ガベージコレクション」と呼ばれるべきではなく、代わりに古いリアクティブコントローラーを「買いだめ」と呼びました。
ジェームズ

17

どうやら標準的な推奨事項は、すべてゼロのフルドライブ書き込みを行うことです。これがなぜ役立つのかは完全にはわかりませんが(多くの書き込みが最終的にSSDを殺さないのですか?)、大手ベンダーのSSDサポートフォーラムによって支持されているようです。

したがって、Windowsでそれを行うには:

  • 管理者特権でコマンドプロンプトを開始する
  • コマンドを実行する diskpart

ユーティリティをDISKPART>起動すると、プロンプトが表示され、次のコマンドが発行されます。

DISKPART> list disk
DISKPART> select disk x

明らかに、先に進む前に正しいSSDドライブを選択したことを確認してください

DISKPART> clean all
DISKPART> create partition primary
DISKPART> format quick fs=NTFS 

魔法はここにあるclean allどのドライブにすべてゼロを書き込みます

allパラメーターを指定すると、すべてのセクターをゼロにすることができ、ドライブに含まれているすべてのデータを削除できます。

これを実行した後、ディスクのパフォーマンスが大幅に向上したことを確認できます。


11
@Jeffすべてゼロを書き込むことが役立つ理由は最近David Spillettによって説明されました:一部のコントローラーは、ゼロ化されたブロックが破棄され、空きスペースのプールに戻され、TRIMコマンドの効果をエミュレートできると想定しています。
-sblair

1
2ポイント-最初に、通常、フラッシュ消去コマンドはブロックをすべて0xffsに消去するので、0sの代わりにそれを書き込む方が良いと思われます。ただし、データシートを確認して確認する必要があります。2つ目-コントローラをだましてドライブをTRIMしようとする場合、ドライブ上のすべてのブロックをTRIMするだけのユーティリティを実行するのは良い考えではありませんか?個人的には、おそらく両方(0xffsとTRIM)を実行しますが、ここでは少し教訓的です。
デニスマンシー

2
@dennis確かに、そのようなユーティリティがあれば、私にそれを指してください。
ジェフアトウッド

1
@Dennis:ドライブが「物理」「オン」ビットを使用し、これらが論理オンビットに変換される場合、0xffが必要なパターンになる可能性があります。ただし、逆論理を使用している可能性があるため、続行する前に文書化または製造元との通信を確認する唯一の方法です。sdeleteなどを使用することをお勧めしますが、作業中のファイルシステムで未使用のブロックを削除してみてください。もちろん、使用済みと未使用が混在するSSDマッピングのすべてのブロックに対して、非トリム書き込みが発生します。
デヴィッドスピレット

2
SSDを安全に消去することに多くの人が明らかに気づいていないことに少し驚いています。すべてのブロックをトリムする必要はありません。Secure Erase ATAコマンドをSSDに送信するユーティリティを実行するだけで、SSDがTRIMをサポートしているかどうかに関係なく、問題は解決します。
ジェームズ

16

SSD Life Proというツールも見つけました。私にはいくつかの悪いニュースがあります。

SSDLife Pro-ドライブの状態が悪い!

計算方法については、SMART SSDインジケーターを使用します。どうやらそれはSMARTデータに基づいて予測しようとしています

  • SSDのベースとなっているフラッシュメモリの寿命は、セルあたり10,000回の書き込みに制限されています
  • ほとんどのドライブは、SMARTパラメーターに書き込まれた情報および/または読み取られた情報に関するデータも表示します。

これは、推定するためにデータがいつ書き込まれたかを知る必要があるため、注意が必要ですが、基本的なデータは次のとおりです。

01読み取りエラー率7
09電源オン時間カウント7085
0C電源サイクルカウント318
B8初期不良ブロック数15
C3プログラム障害ブロック数0
C4消去失敗ブロック数0
C5読み取り失敗ブロック数0
C6読み取りセクター5468243171
C7書き込みセクター41640920876
C8読み取りコマンド100482453
C9書き込みコマンド417315851
フラッシュ345270からのCAエラービット
訂正可能ビットエラー340001のCB読み取りセクター
CCバッドブロックフルフラグ0
CD最大P / Eカウント仕様5000
CE最小消去カウント3774
CF最大消去カウント65348
D0平均消去カウント4837
D1残りのドライブ寿命4

そこにある恐ろしい数字はRemaining Drive Lifeで、4 .. パーセントです!

そして、結果の計算:

モデル:CRUCIAL_CT128M225
サイズ:128 GB
シリアル番号:xxxxxxxxxxxxxxxxx456
ファームウェア:2030
電源投入時:318    
ドライブ/ OSでのTRIMサポート:有効/有効
勤務時間:9ヶ月16日5時間
読み取られた合計データ:2607.46 GB
書かれた:19855.94 GB

記録のために、このドライブはもともと2009年10月に購入されたので、1年と少し半古いです。


3
@Jeffフラッシュメモリのプロセスサイズは改善されましたが、プログラム/消去サイクルの数は減少しました。値0xCDは、10,000ではなく5,000の定格P / Eサイクルの34nmベースのドライブがあることを示唆しています。
sblair

1
知っておきたい@sblair; 新しいOCZ Vertex 2でツールを試しましたが、SMARTフィールドと値がまったく異なります。
ジェフアトウッド

2
そのデータは少し外れているように見えます-読んだデータのほぼ10倍のデータを書き込んだということです。それは高く聞こえませんか?それ以上の読み取りが期待されます。そのドライブにページファイルがありますか?
デニスマンシー

1
より多くのデータポイント-私は妻のMacBookに同様のSSDをインストールしています。これは以前は私のラップトップであり、開発目的で使用されていました。私はちょうどそのSSDの統計を見たところ、そのドライブの寿命の8か月かそこらで、それはあなたの7085(295日)に比べて17時間の合計電力を持っていました。マシンが合計17時間以上稼働しているという事実は知っていますが、OSがドライブを積極的にパワーオフしているようです。
デニスマンシー

2
128GBドライブに20TBが書き込まれました!?このドライブを正確に何に使用していますか?
BlueRaja-ダニーPflughoeft

6

ドライブを介してゼロを書き込むことは最良のアプローチではないことがわかりました。短期的には助けになるかもしれませんが、ドライブを完全なパフォーマンスに復元することはできませんでした(かなり古い、TRIM非対応のIntel-SSDがあります)。SSDがゼロになった後でも、SSDが任意のファイルに書き込もうとすると、1年かそこらのかなり重い使用の後、1〜2秒のフリーズに陥り始めます。

パフォーマンスを完全に復元できることがわかったのは、を使用した安全な消去だけでしたhdparm。SSDが軽微なしゃっくりを経験し始めた6〜12か月ごとにSSDを安全に消去することを習慣にしました。Macrumorsの誰かが、mac *デバイスの操作方法に関するmac固有のチュートリアルを作成しました。

私が見たすべての主張によると、安全な消去は特別なコマンドをSSDに送信し、SSDがすべてのセクターをゼロよりもはるかに低いレベルでゼロに設定しますdd


ドライブがTRIMをサポートしていない場合、すべてのベットはオフになっている...
ジェフ・アトウッド

1
不適切なジェフ、セキュア消去はTRIMから完全に独立しています。これは実際のATAコマンドであり、TRIMをサポートしていないドライブを完全に復元するためにできる唯一のことです。SSDがこのコマンドを受信すると、すべてのNANDセルが空としてマークされ、TRIMを必要とせずにドライブの元の書き込みパフォーマンスが復元されます。これを行うことができる多くのツールがあります。これには、これまでのトップアンサーで参照されているhdparmが含まれます。
ジェームズ


4

ThinkPadには、SSDをリセットする非表示のBIOSメニュー(http://www-307.ibm.com/pc/support/site.wss/MIGR-68369.htmlで有効化)があります。


おそらく、他の推奨ツールと同じことを行い、ドライブ全体にゼロを書き込みます。これは、すべてのブロックでTRIMクリアコマンドとしてコントローラーによって解釈されます。
ジェフアトウッド

多分?何も思いつきません。
chx

2

(ソリッドステートドライブ)ssdに残っているssdの寿命を確認するには、smartmontoolsパッケージをインストールする必要があります。最新のATAおよびSCSIハードディスクに組み込まれている自己監視、分析およびレポートテクノロジーシステム(SMART)を使用してストレージシステムを制御および監視する2つのユーティリティプログラム(smartctlおよびsmartd)が含まれています。

Ubuntu、Mint、またはDebianベースのディストリビューションの場合

# apt-get install smartmontools

For Fedora, Centos, or Red Hat based distributions
# yum install smartmontools

Media_Wearout_Indicatorは、探しているものです。100は、ssdの寿命が100%であることを意味し、数字が小さいほど、残りの寿命が少ないことを意味します。

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

ラップトップからの出力

233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0

ドライブの詳細と完全な属性を表示する場合は、次を実行できます。

# smartctl -data -A /dev/sda

ソース:namhuy.net/1024/how-to-check-ssd-life-left.html


2

Linuxシステムでは、@ LeakyCodeの回答と比較して、はるかに優れた回答があります。

sudo fstrim -v / boot

「util-linx」からの「fstrim」コマンドは、ファイルシステムを介して実行され、すべての未使用スペースに対してTRIMコマンドを発行します。Ubuntuなどのディストリビューションでは、IntelおよびSamsungの「既知の安全な」ドライブの選択リストを除き、これはデフォルトで無効になっています。ただし、コマンドは、任意のドライブの任意のパーティションで手動で実行できます。

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