Linuxを使用したSDカードのストレステスト
きちんとした(GB +)サイズのSDカードでのfsメタデータのロギングと維持は、カードを装着するほど重要ではないということについて、昨日ここでの答えの論理および/または信regarding性について誰かと少し議論しました妥当な期間(年および年)でアウト。反論の要点は、SDカードを身に着けている人々のオンラインの物語が非常に多いため、私は間違っているに違いないということのように思えました。 私は24時間年中無休のrwルートファイルシステムを含むSDカードを備えたデバイスを持っているので、私は自分の満足する前に前提をテストしました。このテストを少し調整し、実際に同じカードを使用して繰り返し、ここで紹介します。私が持っている2つの中心的な質問は次のとおりです。 私はそれを再書き込み連続の効果を再現することを意図しています念頭に置いて、実行可能なカードを破壊しようとするために使用される方法で、小さなデータの量は? カードを確認するために使用した方法はまだ実行可能ですか? 最初の部分への異議はおそらく私のテストが実際にカードに書き込みをしなかったと断言する必要があるため、SOまたはスーパーユーザーではなくここに質問を入れていますLinuxの特別な知識。 [SDカードが何らかのスマートバッファリングまたはキャッシュを使用し、同じ場所への繰り返し書き込みが摩耗しにくい場所でバッファリング/キャッシュされることも考えられます。私はどこにもこれの兆候を見つけていませんが、SUでそれについて尋ねています] テストの背後にある考え方は、カード上の同じ小さなブロックに何百万回も書き込むことです。これは、そのようなデバイスが何回の書き込みサイクルを維持できるかという主張をはるかに超えていますが、ウェアレベリングが有効であると仮定すると、カードがまともなサイズであれば、「同じブロック」がそうであるように、何百万ものそのような書き込みはまだ重要ではありません文字通り同じ物理ブロックではありません。これを行うには、すべての書き込みがハードウェアと同じ見かけの場所に本当にフラッシュされるようにする必要がありました。 ハードウェアにフラッシュするために、私はPOSIXライブラリ呼び出しに依存しましたfdatasync(): #include <stdio.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <unistd.h> #include <stdlib.h> // Compile std=gnu99 #define BLOCK 1 << 16 int main (void) { int in = open ("/dev/urandom", O_RDONLY); if (in < 0) { fprintf(stderr,"open in %s", strerror(errno)); exit(0); } …