Как бы вы провели тестирование (до разрушения) срока службы карты microSD?

Как бы вы провели тестирование (до разрушения) срока службы карты microSD?

Я использую карты microSD в продукте, и у меня были некоторые сбои из-за плохих секторов. У меня все еще есть больше карт SD из той же партии, и я хотел посмотреть, смогу ли я протестировать их до разрушения (т. е. до износа сектора) и измерить, сколько всего данных было записано на карту до этого.

Как мне это сделать?

Спасибо

решение1

Одним из простых методов является использование безопасного инструмента стирания диска. Эти инструменты записывают последовательность данных в каждое место на диске. Это позволит проверить все сектора диска. Вы можете запускать эти инструменты итеративно, чтобы убедиться, что диск очень чистый. Эта очистка израсходует ресурс SD-карты. Если вы отследите количество проходов, которые выполняются до отказа карты, вы узнаете, сколько данных вы записали на диск. Тем не менее, это лучший вариант для диска, поскольку записи распределяются по всему диску.

Худшим вариантом будет повторная запись в один и тот же сектор до тех пор, пока он не выйдет из строя. Это приведет к записи наименьшего количества данных до того, как карта начнет выходить из строя. Если бы вы записали один файл и удалили его, а затем снова записали его несколько раз, это должно привести к преждевременному отказу карты с наименьшим количеством записанных данных. Это предполагает, что карта не является интеллектуальной и не перераспределяет сектора вокруг флэш-памяти так, как это делает SSD.

Оба вышеперечисленных действия можно выполнить с помощью команды dd в Linux или на Linux Live CD.

Если предположить, что устройство — /dev/sdx, то следующее должно сработать.

i=0
while :
do
  dd if=/dev/urandom of=/dev/sdx bs=1024 count=1000
  if [ $? != 0 ];then break;fi
  let i=i+1
  echo $i
done

Это не идеально, но примерно то, что вы получите без собственного кодирования. Он будет записывать 1 МБ случайных данных на диск для каждой итерации. Когда dd начнет выдавать ошибку, он завершит работу, и вы узнаете, сколько итераций прошло до сбоя. Большой недостаток здесь в том, что данные случайны. Если биты такие же, как и раньше, они могут не быть записаны флэш-памятью и, как таковые, не будут использованы. Если предположить идеальное распределение, результат будет вдвое больше фактического числа записей, необходимых для сбоя.

Более совершенным решением было бы перебор нулей и единиц или использование чередующихся шахматных досок. Без устройства /dev/one в Linux это требует более сложного решения, чем, как я думаю, оправдано здесь.

Связанный контент