![간단한 쉘 스크립트를 사용하여 SD 카드 손상에 대한 스트레스(쓰기) 테스트](https://linux55.com/image/77428/%EA%B0%84%EB%8B%A8%ED%95%9C%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20SD%20%EC%B9%B4%EB%93%9C%20%EC%86%90%EC%83%81%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%8A%A4(%EC%93%B0%EA%B8%B0)%20%ED%85%8C%EC%8A%A4%ED%8A%B8.png)
내 SD 카드가 얼마나 많은 쓰기 주기를 얻을 수 있는지 알고 싶습니다.
나는 인터넷 검색을 통해 다음과 같은 좋은 답변을 찾았습니다.이것하지만 나 같은 평범한 사람들에게는 너무 복잡하다.
64GB exfat 포맷 카드라고 가정합니다.
59GB의 대용량 랜덤 파일을 직접 쓸 수 있나요? 삭제하세요. 계산해 보세요. 그리고 카드가 실패할 때까지 전체 루프를 반복합니다(뭔가 결국 쓰기 작업을 차단한다고 가정합니다).
다음과 같이 59GB의 임의 파일을 만들 수 있을 것 같습니다.
dd if=/dev/urandom of=/dev/sdd1/file.txt bs=61865984 count=1024
파일 삭제:
rm /dev/sdd1/file.txt
계산 작업을 수행하거나 루프를 수행하는 방법이나 .sh 파일에 넣는 데 다른 구문/제한 사항이 있는지 잘 모르겠습니다. 이 문제를 해결하는 데 도움을 주실 수 있나요?
위의 생각이 괜찮은가요(받아들일 수 있나요). 나는 완벽해지려고 노력하는 것이 아니다.
이 작업을 수행할 수 있는 상용 소프트웨어/스크립트도 있습니까?
(이를 위해 몇 달 동안 컴퓨터를 켜 두어야 한다는 것을 알고 있지만 괜찮습니다. 아니면 재부팅 후 스크립트를 실행하면 이전 카운트에 추가될 수도 있습니다.)
감사해요. :-).
추신: 내가 이 일을 하는 이유 - OEM/무명 브랜드가 프리미엄 브랜드 카드에 비해 상당히 저렴한 대용량 microSD 카드를 제공한다는 것을 알았습니다. 사람들은 이 카드가 신뢰할 수 없다고 말합니다. 나는 단지 그들이 얼마나 나쁜지 알고 싶었습니다. 실제로 내 생각은 5년 안에 총 1TB의 데이터를 카드에 쓸 수 있을 것이라고 생각합니다. 그것은 단지 17주기입니다! 최악의 카드라도 할 수 있다고 생각합니다. :-)...........
답변1
나는 당신의 생각이 효과가 있다고 생각합니다.
드라이브의 장치 노드에 직접 데이터를 쓸 수 있습니다(예 /dev/sdd
: ). 이 rm
명령은 가능하거나 필요하지 않습니다. 어쨌든 많은 데이터를 삭제하지는 않고 rm
파일 시스템의 메타데이터만 업데이트합니다. 한 주기에 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
이 스크립트가 실행될 때 해당 드라이브가 완전히 파괴됩니다.
답변2
답변을 받을 때쯤에는 해당 SD 카드가 손상된 것입니다. 이를 통해 동일한 제조사 및 모델의 다른 카드의 수명을 어느 정도 알 수 있습니다(또는 그렇지 않을 수도 있습니다...카드마다 다르며, 더 나쁘게는 기본 하드웨어가 동일한 모델 번호에서 작동하지 않을 수도 있습니다). 제조업체는 항상 그렇듯이 사악한 일을 할 것입니다.)
내 조언은 상관하지 않는다는 것입니다. 여분의 SD 카드를 구입하고 카드에 있는 모든 중요한 데이터를 정기적으로 백업하세요.