microSD 카드의 수명을 테스트(파괴)하려면 어떻게 하시겠습니까?

microSD 카드의 수명을 테스트(파괴)하려면 어떻게 하시겠습니까?

제품에 microSD 카드를 사용하고 있는데 배드섹터로 인해 일부 장애가 발생한 적이 있습니다. 나는 여전히 같은 배치에서 더 많은 SD 카드를 가지고 있으며, 그것들을 파괴할 때까지(즉, 섹터가 닳을 때까지) 테스트할 수 있는지 확인하고 그 전에 카드에 기록된 전체 데이터의 양을 측정하고 싶었습니다.

이 작업을 어떻게 수행할 수 있나요?

감사해요

답변1

한 가지 간단한 기술은 안전한 디스크 지우기 도구를 사용하는 것입니다. 이러한 도구는 드라이브의 모든 위치에 일련의 데이터를 기록합니다. 그러면 드라이브의 모든 섹터가 테스트됩니다. 이러한 도구를 반복적으로 실행하여 디스크가 매우 깨끗한지 확인할 수 있습니다. 이 정리 작업은 SD 카드의 수명을 모두 소모합니다. 카드가 실패하기 전에 실행되는 패스 수를 추적하면 디스크에 쓴 데이터의 양을 알 수 있습니다. 즉, 쓰기가 전체 디스크에 분산되므로 이는 드라이브에 가장 적합한 경우입니다.

최악의 경우는 실패할 때까지 동일한 섹터에 계속해서 쓰는 것입니다. 이렇게 하면 카드에 오류가 발생하기 전에 기록되는 데이터의 양이 최소화됩니다. 단일 파일을 쓰고 삭제한 후 다시 다시 쓰는 것을 반복하면 기록된 데이터 양이 가장 적은 카드에도 조기 오류가 발생할 수 있습니다. 이는 카드가 스마트하지 않고 SSD처럼 플래시 주변의 섹터를 다시 매핑하지 않는다고 가정합니다.

위의 두 가지 작업은 모두 Linux에서 dd 명령을 사용하거나 Linux 라이브 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

이것은 완벽하지는 않지만 직접 코딩하지 않고도 얻을 수 있는 수준입니다. 각 반복마다 1MB의 무작위 데이터를 디스크에 씁니다. dd가 오류가 발생하기 시작하면 종료되며 실패하기 전에 몇 번의 반복이 통과되었는지 알 수 있습니다. 여기서 가장 큰 결점은 데이터가 무작위라는 것입니다. 비트가 이전과 동일하면 플래시에 기록되지 않아 실행되지 않을 수 있습니다. 완벽한 분포를 가정하면 결과는 실패하는 데 필요한 실제 쓰기 수의 두 배가 됩니다.

보다 완벽한 솔루션은 0과 1 사이를 반복하거나 교대로 바둑판을 사용하는 것입니다. Linux에 /dev/one 장치가 없으면 여기에서 보장되는 것보다 더 복잡한 솔루션이 필요합니다.

관련 정보