web-dev-qa-db-ja.com

使用済みSSDドライブのパフォーマンスを復元し、寿命を推定しますか?

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

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

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

  • それをリハビリし、一般的に健康診断をする

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

70
Jeff Atwood

Linuxでは、単に実行します

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

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

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

上記のコマンドラインで、/dev/sdaは、TRIMコマンドを送信するSSDデバイスに置き換える必要があります。 startは、TRIMへの最初のブロック(セクター)のアドレスであり、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を起動してドライブで実行することにより、このトリックを活用できます。

56
Mehrdad Afshari

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

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

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

明確にするために、空のページ、使用されたページ、削除されたページを∅、1、Xで区別します。重要なのはこれらのそれぞれにコントローラからの違いがあることです視点!1と0ほど単純ではありません。つまり、最初に、新しいドライブのページは次のようになります。

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

次に、ドライブにデータを書き込みます。その結果、最初のページに保存されます。つまり、

1、∅、∅、∅

次に、もう少しデータを書き込みますが、今回は2ページが必要なため、2ページ目と3ページ目に保存されます。

1、1、1、∅

スペース不足です!書き込んだ初期データは本当に必要ないと判断したので、スペースを空けるために削除します。

X、1、1、∅

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

1、1、1、1

...ほとんどの人が理解するよりも多くの作業が必要です。繰り返しますが、これはフラッシュがブロック単位でのみ消去できるという事実によるものであり、ページ単位ではなく、上記の最後の遷移が要求するとおりです。 TRIMと非TRIMベースのSSDの違いは、whenです。次の作業が実行されます!

空のページと削除されたページを使用する必要があるため、SSDは最初にブロック全体の内容を外部ストレージ/メモリに読み取り、元のブロックを消去し、内容を変更する必要があります。そしてそれらの内容をブロックに書き戻します。 「書き込み」ほど単純ではありませんが、代わりに「読み取り-消去-書き込み」になります。これは大きな変化であり、大量のデータを書き込んでいる間に発生することは、おそらくそれが発生する最も不都合な時間です。その「削除された」ページが事前に回復された場合、それはすべて回避できます。これは、TRIMが意図したとおりです。 TRIMを使用すると、SSDは削除されたページを、削除直後に、またはTRIMアルゴリズムが適切であると考える他の適切なタイミングで復元します。ただし、重要な部分は、TRIMでは書き込みの最中には発生しないことです。

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

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

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

24
James

どうやら標準的な推奨は、すべてゼロのフルドライブ書き込みを行うことです。私は完全にこれが役立つ理由はわかりません(多くの書き込みが最終的に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 which ドライブにすべてゼロを書き込みます

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

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

17
Jeff Atwood

SSD Life Pro というツールも見つけました。悪い知らせがあります。

SSDLife Pro -- drive health is bad!

その計算方法については、SMART SSDインジケーターを使用します。どうやら S.M.A.R.T.データに基づいて予測する試み

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

いつ見積もりの​​ためにデータが書き込まれたかを知る必要があるため、これはトリッキーですが、基礎となるデータは次のとおりです。

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

残りのドライブ寿命である恐ろしい数は4です。パーセント!

そして結果の計算:

モデル:CRUCIAL_CT128M225 
サイズ:128 GB 
シリアル番号:xxxxxxxxxxxxxxxxx456 
ファームウェア:2030 
パワーオン時間:318 
 TRIMドライブ/ OSでのサポート:有効/有効
稼働時間:9か月16日5時間
読み取りデータの合計:2607.46 GB 
書き込み:19855.94 GB 

ちなみに、このドライブはもともと2009年10月に購入されたもので、1年半前のものです。

16
Jeff Atwood

ドライブからゼロを書き込むのが最善の方法ではないことがわかりました。短期的には役立つかもしれませんが、ドライブをフルパフォーマンスに復元することはできませんでした(TRIM非対応の古いIntel-SSDを使用しています)。 1年ほどのかなりの使用量の後、SSDがanyファイルに書き込もうとすると、1〜2秒フリーズし始め、 SSDをゼロにした後でも。

パフォーマンスを完全に復元する唯一のことは、hdparmを使用した 安全な消去 でした。マイナーな問題が発生し始めたら、6〜12か月ごとにSSDを安全に消去することを習慣にしました。 Macrumorsの誰かが、mac *デバイスの操作方法についてMac固有の tutorial を作成しました。

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

6
Kendall Hopkins

Macでは、 digilloydTools DiskTester を確認してください。ドライブのパフォーマンスに対する再調整の影響を確認するための興味深いデータポイントもあります。

5
jerwood

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

4
chx

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

Sudo fstrim -v/boot

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

2
Bryce

(ソリッドステートドライブ)SSDに残っているSSDの寿命を確認するには、smartmontoolsパッケージをインストールする必要があります。これには、最新のATAおよびSCSIハードディスクに組み込まれている自己監視、分析、および報告技術システム(S.M.A.R.T.)を使用してストレージシステムを制御および監視する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
Victor Sanders