単純なシェルスクリプトを使用してSDカードの破損に対するストレス(書き込み)テスト

単純なシェルスクリプトを使用してSDカードの破損に対するストレス(書き込み)テスト

私のSDカードがどのくらいの書き込みサイクルを得ることができるか知りたいです。

私はインターネット検索で次のような良い答えを見つけました。これしかし、私のような普通の人にとっては複雑すぎます。

64GB exfatフォーマットカードだとします。

59GBの大容量ランダムファイルを直接書き込めますか?削除してください。計算してみてください。そして、カードが失敗するまでループ全体を繰り返します(何かが最終的に書き込み操作をブロックすると仮定します)。

  1. 次のように59GBのランダムファイルを作成できるようです。

    dd if=/dev/urandom of=/dev/sdd1/file.txt bs=61865984 count=1024
    
  2. ファイルの削除:

    rm /dev/sdd1/file.txt
    
  3. 計算操作を実行したり、ループを実行する方法や、.shファイルに入れる際に他の構文/制限があるかどうかはわかりません。この問題を解決するのに役立ちますか?

上記の考えは大丈夫ですか(受け取ることができますか)。私は完璧になろうとしていません。

これを実行できる商用ソフトウェア/スクリプトもありますか?

(これを行うには数ヶ月間コンピュータの電源を入れる必要があることを知っていますが、大丈夫です。または再起動後にスクリプトを実行すると、以前のカウントに追加される可能性があります。)

ありがとうございます。 :-).

PS:私がこれをする理由 - OEM /無名ブランドがプレミアムブランドカードと比較してかなり安価な大容量microSDカードを提供していることがわかりました。人々はこのカードが信頼できないと言います。私は彼らがどれだけ悪いのか知りたかったのです。実際、私の考えは、5年以内に合計1TBのデータをカードに書き込むことができると思います。それは17サイクルだけです!最悪のカードでもできると思います。 :-)...........

ベストアンサー1

私はあなたの考えがうまくいくと思います。

ドライブのデバイスノードに直接データを書き込むことができます(例/dev/sdd:)。このrmコマンドは可能または必要ありません。とにかく多くのデータを削除するのではなく、rmファイルシステムのメタデータのみを更新します。 1周期に1をすべて書き、次の周期に0をすべて書き込むことを検討できます。

永久カウンター

秘訣は、後で選択できる継続的なカウンターを作成することです。再起動。これは、COUNT_FILE「$HOME/.counter」の例のようなファイルで簡単に実行できます。完了する前にシステムが再dd起動された可能性があるため、この数は実際の数より少なくなる可能性があります。

/etc/rc.localシステムの起動時に自動的に起動するように同様のものを呼び出すこともできます。

#!/bin/ss

COUNT_FILE="$HOME/.counter"

read COUNT < "$COUNT_FILE"

if echo "$COUNT" | grep '[^0-9]' > /dev/null
then
    echo >&2 "$0: ERROR: non-integer counter found in $COUNT_FILE."
    exit 1
fi

while true
do
    echo dd if=/dev/urandom of=/dev/sdd bs=61865984
    COUNT=$(( COUNT + 1 ))
    echo $(( COUNT )) > "$COUNT_FILE"
done

不良ブロック

badblocksパターンをディスクに書き込んで再読み込みするコマンドを確認することもできます。これを使用すると、良いことは、badblocksサイクルごとにすべてのバイトを書き込み、読み取り、比較することです。したがって、ディスクにエラーが発生し始めると、「不良ブロック」の数が増え始める必要があります。

警告する

また、誤って別のUSBドライブを接続した場合、/dev/sddこのスクリプトが実行されるとそのドライブが完全に破壊されます。

おすすめ記事