SD 카드의 섹터를 의도적으로 끊거나 손상시키는 방법은 무엇입니까?


142

일부 임베디드 하드웨어에 대한 일부 읽기 / 쓰기 코드의 복원력을 테스트해야합니다. 통제 된 연구를 위해 몇 개의 SD 카드를 희생하고 알려진 여러 섹터를 어떻게 파괴 할 수 있습니까?

내가 생각할 수있는 유일한 것은 단일 섹터를 몇 백만 번 덮어 쓰는 것입니다. Linux 불량 블록 스크립트를 만들어 단일 섹터에서 몇 시간 동안 반복적으로 파괴 테스트를 실행할 수 있는지 궁금합니다.


20
저수준 SD 드라이버를 변경하여 불량 블록이있는 것처럼 보일 수 있습니까, 아니면 문제가 아닌 것입니까?

3
@ MarkYisri, 나는 드라이버가 매우 접근하기 쉽다고 생각하지 않습니다. 우리가 사용하는 드라이버는 나머지 펌웨어에 대한 메모리 할당을 최대화하기위한 초보적인 기능입니다. 또한 가능하다면 그것은 내 능력을 넘어서는 것일 것입니다.
Gabe Krause

3
SD 카드 에뮬레이터를 만들 수 있습니까? 가장 간단한 프로젝트는 아닙니다.
user20574

11
목표가 주어지면, 적은 비용으로 중고 SD 카드를 구입할 수 있으며, 결함이있는 카드를 쉽게 얻거나, "찾는 중 ..."이라는 문구를 붙여서 결함이있는 카드를 찾을 수 있습니다. 또는 eBay에서 결함이있는 카드를 검색하십시오. 그런 다음 카드를 테스트하면 결함이있는 영역의 위치를 ​​알 수 있습니다.
FarO

28
전문 사진 작가에게 문의하십시오. 그들은 분명히 스케치 SD 카드 더미를 가질 것입니다.
J ...

답변:


168

유용 수 있는 대체 방법 .

코드가 Linux에서 실행되는 경우 "결함이있는"논리 장치로 코드를 테스트 할 수 있습니다. dmsetupI / O 오류를 반환하는 장치를 만들 수 있습니다. error및 / 또는 flakey대상을 사용하여 장치를 구축하십시오 . 보낸 사람 man 8 dmsetup:

error
이 영역으로가는 모든 I / O에 오류가 발생합니다. 구멍이있는 장치를 테스트하거나 만들 때 유용합니다.

flakey
linear대상 과 유사한 매핑을 생성 하지만 주기적으로 신뢰할 수없는 동작을 나타냅니다. 테스트시 고장난 장치를 시뮬레이션하는 데 유용합니다.

참고 : flakey대상 사용법은 여기 에 설명되어 있습니다 . 기본 예는 여기 입니다.

내가 아는 한, I / O 오류가 즉시보고되므로 지연, 정지 등을 예상 할 수있는 실제 SD 카드 동작과는 다릅니다. 예비 시험 등.


34
그 즉시 사용 가능한 생각에 감사드립니다! 우리는 80MHz Atmel 칩을 통해 SD와 블록 레벨에서 인터페이스하고 실제 OS는 없습니다.
Gabe Krause

1
@GabeKrause이 경우이 답변의 유용성은 Linux 블록 장치 API가 내장 장치 드라이버의 API와 얼마나 유사한 지에 달려 있습니다.
Qsigma

1
dmsetup업 설정 명령 error: 항상 읽기 오류를 반환 장치 stackoverflow.com/questions/1870696/...
피터 코르

1
나는 이것이 더 나은 해결책처럼 들린다는 데 동의합니다. 먼저 모든 하드웨어를 복제 할 수 있습니다. 또한 다양한 오류 모드를 시뮬레이션 할 수 있습니다. 예를 들어 16GB USB 플래시 드라이브가 모두 제대로 작동합니다. 일정 시간이 지나면 특정 영역이 잘못된 데이터를 반환하기 시작합니다. 어떤 종류의 FS 오류도 없습니다. 파일을 읽었지만 내용이 다릅니다. 일부 부문은 분명히 불안정합니다. 그러나 특정 장치의 작동 방식을 미리 알 수는 없습니다.
akostadinov

76

이 사람은 불량 블록을 표시하는 데 사용되는 SD 카드 내부의 마이크로 컨트롤러를 해킹했습니다 : https://www.bunniestudios.com/blog/?p=3554

동일한 작업을 수행하고 임의로 블록을 결함으로 표시 할 수 있습니다.

오늘 Chaos Computer Congress (30C3)에서 xobs와 저는 일부 SD 카드에 메모리 카드 자체에서 임의의 코드 실행을 허용하는 취약점이 포함되어 있다는 발견을 공개했습니다. 어두운면에서 메모리 카드의 코드 실행은 MITM (man-in-the-middle) 공격 클래스를 가능하게합니다.이 경우 카드는 한 가지 방식으로 작동하지만 실제로는 다른 방식으로 작동합니다. 한편으로는 하드웨어 애호가가 매우 저렴한 유비쿼터스 마이크로 컨트롤러 소스에 액세스 할 수도 있습니다.

.

이러한 알고리즘은 응용 프로그램 또는 OS 수준에서 실행하기에는 너무 복잡하고 장치별로 고유하므로 모든 플래시 메모리 디스크에는 사용자 지정 디스크 추상화 알고리즘을 실행할 수있는 상당히 강력한 마이크로 컨트롤러가 제공됩니다. 소형 microSD 카드조차도 하나 이상의 칩이 아닌 컨트롤러와 하나 이상의 플래시 칩을 포함합니다 (고밀도 카드는 여러 개의 플래시 다이를 쌓을 수 있습니다).

.

임베디드 마이크로 컨트롤러는 일반적으로 크게 수정 된 8051 또는 ARM CPU입니다. 현대적인 구현에서, 마이크로 컨트롤러는 100 MHz 성능 수준에 접근 할 것이며, 여러 개의 하드웨어 가속기가 온다이 (die-on) 상태가 될 것입니다. 놀랍게도 이러한 컨트롤러를 장치에 추가하는 비용은 아마도 $ 0.15- $ 0.30 정도일 것입니다. 특히 같은 사업부에서 플래시 메모리와 컨트롤러를 모두 제조 할 수있는 회사의 경우 더욱 그렇습니다. 각 플래시 메모리 칩을 철저히 테스트하고 특성화하는 것보다 이러한 마이크로 컨트롤러를 추가하는 것이 더 저렴할 수 있습니다. 이는 마이크로 컨트롤러를 포함하더라도 관리 형 플래시 장치가 원시 플래시 칩보다 비트 당 저렴할 수있는 이유를 설명합니다.

.

요점은 특히 타사 컨트롤러의 경우 펌웨어로드 및 업데이트 메커니즘이 사실상 필수적이라는 것입니다. 최종 사용자는 공장에서 모두 발생하기 때문에이 프로세스에 거의 노출되지 않지만 메커니즘이 덜 실제적이지는 않습니다. 중국의 전자 제품 시장을 조사한 결과, 상점 직원이 카드 용량을 "확장"하는 카드에서 펌웨어를 굽는 것을 보았습니다. 즉, 카드 용량이 카드 용량보다 훨씬 크다는 펌웨어를로드합니다 실제 사용 가능한 저장 용량. 판매 시점에서 이것이 가능하다는 사실은 대부분 업데이트 메커니즘이 보안되지 않았 음을 의미합니다.

30C3의 강연에서 Appotech과 AX211 및 AX215 제품과 같은 특정 마이크로 컨트롤러 브랜드를 탐색 한 결과를보고합니다. 컨트롤러가 펌웨어로드 모드로 전환되는 제조업체 예약 명령 (즉, CMD63 다음에 'A', 'P', 'P', 'O')을 통해 전송 된 간단한 "노크"시퀀스를 발견했습니다. 이 시점에서 카드는 다음 512 바이트를 받아 들여 코드로 실행합니다.


10
모든 답변 중에서 이것은 아마도 OP가 실제로 요구 한 것에 가장 가까운 것일 것입니다.
Cort Ammon

11
정말 대단했습니다!
Gabe Krause

@Twisty는 관련 부품 중 일부를 복사했습니다.
FarO

2
토끼 구멍을 내려 SD 카드 아키텍처의 세계로갑니다.
Tejas Kale

38

대부분의 최신 SD 카드 (또는 eMMC)는 정적 및 동적웨어 레벨링을 사용하기 때문에 일반적으로 작동하지 않습니다. 즉, 지능형 컨트롤러가 쓰기 명령을 해석하여 가장 적게 사용되는 플래시 섹터 중 하나에 매핑합니다.

유일하게 할 수있는 일은 공급 업체에 연락하여 데이터 시트를 요청하는 것입니다. 웨어 레벨링 알고리즘의 상태를 검색하는 방법 (공급 업체별)이있을 수 있습니다. 이를 통해 기본 플래시의 상태 / 사용을 쿼리 할 수 ​​있습니다. 또는 운이 좋지 않을 수도 있고 존재하지 않을 수도 있습니다.

실제로 플래시를 파괴하는 것이 목표라면 대량의 읽기 및 쓰기주기를 실행하고 읽고있는 데이터가 여전히 일관성이 있는지 지속적으로 확인하면됩니다. 예를 들어, 두 개의 큰 파일을 작성하고 체크섬을 저장 한 후 체크섬을 확인하기 위해 파일을 읽고 쓸 수 있습니다. 플래시가 클수록이 과정이 오래 걸립니다.


2
SD 카드에 데이터가 완전히 채워 져서 다시 매핑 할 수없는 경우에도 여전히 작동하지 않습니까? 나는 그들이 많은 여분의 숨겨진 섹터를 가지고 있다고 생각하지 않습니다.
Ruslan

2
@Ruslan 장치에 섹터가 채워져 있는지 알 필요가 없습니다. 요청시 제공 할 섹터와 요청시 작성해야 할 섹터의 내용 만 알면됩니다. 그리고 공개되지 않은 알고리즘에 따라 해당 섹터를 나타 내기 위해 다른 물리적 메모리를 사용하도록하는 추상화 계층이있을 수 있습니다.- "full"은 "현재 커런트 가능한 블록에 대한 임계 값"을 의미합니다.
Alexander Kosubek

6
@Ruslan : 전체 장치에 데이터가있는 경우에도웨어 레벨링은 여전히 ​​유효 할 수 있습니다. 예를 들어, 섹터 A가 한 번 작성되고 섹터 B가 1,000 번 작성된 후 또 다른 쓰기가 발생하는 경우 섹터 B 카드는 두 섹터에 대한 데이터를 교환 할 수 있으므로 섹터 A는 섹터 B의 데이터를 포함하고 (많은 시간이 더 많이 겹쳐 써질 것입니다. 그러나 신선하므로 괜찮습니다), 섹터 B는 섹터 A의 데이터를 포함합니다 희망적으로 많이 변경하지 마십시오). 분명히 장치는 어느 섹터가 어디에 저장되는지의 매핑을 저장해야합니다.
psmears

2
@GabeKrause 네, 그 짐승의 본질입니다. 가장 낮은 레벨에는 낸드 또는 플래시 칩 (현재 모든 것이 낸드를 사용하고 있음)이 있으며 버스를 종료하는 낸드 칩 앞에 지능형 컨트롤러가 있습니다 (예 : usb 스틱의 경우 usb 또는 sd 카드의 경우 mmc) ) 및이 칩은 매핑 / 마모 레벨링 등을 담당하며 플래시를 사용자로부터 멀어지게합니다. 임베디드 리눅스에서 낸드를 사용한다면 이것은 예를 들어 유비 프가 당신을 위해 할 것입니다.
amo-ej1

2
SD 카드에는 "플래시 변환 계층"을 구현하는 마이크로 컨트롤러가 있습니다.이 마이크로 컨트롤러가 블록 요청을 원시 NAND 명령으로 변환합니다. 일부 SD 카드에는 MCU 펌웨어를 변경 / 업데이트하기위한 숨겨진 명령이 있으며 일부 역 엔지니어링 노력도 있습니다. 원시 NAND 이외의 대부분의 플래시 스토리지 장치 (많은 가정용 라우터와 같이 일부 경우에 표시 될 수 있음)는 "과잉 프로비저닝 된"것일 수 있습니다. 즉, 1GB SD 카드에는 1024MB + 128MB 원시 NAND 공간과 같은 공간이있을 수 있습니다. 또한 불량 플래시 페이지에 대한 섹터 스페어 링.
LawrenceC

32

작동 온도를 높여서 트랜지스터 마모를 증가시킬 수 있습니다. 가열 된 칩 (70-120 ° C)에서 쓰기 소거주기를 사용하십시오. 빨리 마모됩니다.


18
과도한 보관 온도도 손상되므로 칩을 120 ° C (또는 그 이상)에서 "요리"한 다음 결함을 확인하는 것이 더 실용적 일 수 있습니다.
Dmitry Grigoryev

2
카드 공급에 약간의 과전압이 발생할 수도 있으며 실험도 필요합니다.
Chris H

저전압은 또한 컨트롤러 잠금과 같은 다른 종류의 결함을 유발할 수 있습니다.
user20574

18

서문 :이 옵션에는 추가 프로그래밍 및 하드웨어 수정이 필요하지만 호스트에 투명하게 제어 된 읽기가 가능합니다.

SD 카드에는 여러 I / O 옵션이 있지만 SPI를 통해 제어 할 수 있습니다. SD 카드를 가져 와서 마이크로 컨트롤러 (예 : Arduino)에 핀을 부착 할 수 있도록 수정하려면 Arduino가 SD 카드를 모방하고 SD 카드를 읽는 장치에 투명하게 만들 수 있습니다. 마이크로 컨트롤러의 코드는 필요할 때 잘못된 데이터를 의도적으로 반환 할 수 있습니다. 또한 마이크로 컨트롤러에 SD 카드를 배치하면 판독 값이 마이크로 컨트롤러를 통해 SD 카드로 전달되어 기가 바이트의 테스트를 수행 할 수 있습니다.


3
대부분의 고속 장치 (PC 카드 리더 포함)는 4 비트 SD를 지원하지 않는 카드로는 작동하지 않습니다.
Dmitry Grigoryev

1
영업 이익은 SD 카드에 대한 SPI를 지원하는 것이 더 가능성이 만들 것 카드를 사용하는 것입니다 임베디드 시스템라고 말했다
에릭 존슨

3
이에 대한 변형이지만 더 어려운 작업 은 펌웨어를 다시 플래시 할 수있는 SD 카드를 찾는 것 입니다.
피터 테일러

2
이것은 매우 흥미 롭습니다! 임베디드 시스템은 SPI를 통해 I / O를 실행하고 있습니다. 하드웨어를 수정하여 이와 같은 추가 작업을 수행 할 수있는 대역폭이 있는지 잘 모르겠지만, 훌륭한 생각이라고 생각합니다.
Gabe Krause

2
다이나믹웨어 레벨링에 대한 교육을 받으면 불량 섹터로 알려진 "나쁜"SD 카드를 전략적으로 생성하는 것이 문제를 제기 할 때 기대했던 것보다 훨씬 어렵거나 불가능하다고 믿게됩니다. 현재 제 능력의 범위를 벗어난 반면, 이것은 가장 제어 가능하고 기술적으로 유망한 접근법으로 보이며 @Olafm입니다. 데이터 전송 중 사전 정의 된 섹터 위치에서 데이터를 가로 채 "손상"하도록 중간 하드웨어를 사용자 정의하는 것이 좋은 방법입니다.
Gabe Krause

15

나는 ebay / aliexpress에 가서 중국에서 찾을 수있는 가장 저렴한 SD 카드를 구입합니다. 이들은 종종 결함이있는 섹터와 함께 제공되거나 소프트웨어가 실제보다 훨씬 더 크게 설정되어 있습니다. 어느 쪽이든 테스트에 사용할 결함이있는 SD 카드가 있어야합니다.


재미있는 접근 방법이지만 저장된 코드에 대한 불량 블록의 영향을 테스트하기 위해 불량 영역에 어떻게 작성 하시겠습니까?
fixer1234

@ fixer1234,이 SD 카드 중 하나가 32GB라고 말했지만 실제로는 128MB에 불과했습니다. 카메라에 넣고 128MB 이상으로 사진을 찍을 수 있었지만 첫 번째 사진 만 다시 읽을 수있었습니다. 나머지는 나열되었지만 깨진 것으로 다시 읽었습니다. 그것이 당신이 불평하기에 너무 늦었을 때 그들이 당신이 카드의 문제를 먼저 알아 차리게하는 방법이라고 생각합니다.
GuzZzt

11

옛날 옛적에, 몇 년 전, 나는 다소 혼란스러운 어머니를 위해 SD 카드에서 졸업 사진과 비디오 세트를 가져와야했습니다. 면밀히 조사한 결과, 카드는 외부 케이스에서 눈에 띄는 균열로 물리적으로 손상을 입 었으며 몇 가지 불량 섹터, 특히 몇 가지 초기 중요 섹터가 있었으며 당시 가장 안정적인 복구 프로그램조차도 카드를 완전히 읽지 못했습니다. . 또한 법의학 데이터 도구는 비용이 많이 들었습니다.

나는 동일한 브랜드 / 크기의 SD 카드를 얻고 자신의 사용자 정의 원시 데이터 덤프 및 복원 유틸리티를 작성하여 나쁜 카드에서 좋은 카드로 데이터를 복사했습니다. 유틸리티가 불량 섹터에 도달 할 때마다 해당 섹터에 대한 모든 0을 쓰기 전에 여러 번 재 시도하고 포기 및 중지하는 대신 실패를 무시하고 다음 섹터로 넘어갑니다. 일부 섹터는 여전히 약 40 %의 읽기 성공률을 가지고 있음을 알았으므로 재 시도를 시도했습니다. 데이터가 새로운 SD 카드에 있으면 이전에 실패한 복구 도구는 데이터 손실 / 손상을 최소화하면서 완벽하게 작동했습니다. 전체적으로 모든 파일의 약 98 %가 복구되었습니다. 이전에 삭제 된 많은 항목도 실제로 삭제 된 항목이 없기 때문에 복구되었습니다. 그저 표시된 것으로 서서히 덮어 씁니다. 약간 지루한 데이터 복구 연습으로 시작한 것은 저의 기억에 남고 흥미로운 개인 소프트웨어 개발 프로젝트 중 하나가되었습니다. 궁금하신 분은 어머니에게 감격했습니다.

여하튼,이 이야기는 SD 카드를 물리적으로 손상시켜 데이터에 여전히 액세스 할 수 있지만 거의 작동하지 않고 읽을 수있는 섹터가있는 데 어려움이 있음을 보여줍니다. SD 카드 플라스틱은 매우 연약한 경향이 있으므로 값싼 플라스틱으로 구부리거나 절단하면 트릭이 발생할 수 있습니다. 귀하의 마일리지가 다를 수 있습니다.

해당 지역의 일부 데이터 복구 장소에서 문의 할 수도 있습니다. 여러 가지 실패 또는 실패한 장치의 데이터 복구를 전문으로하기 때문에 유용한 입력 / 팁이 있어야하며 사전에 훈련 된 SD 카드 (예 : 교육 목적)를 보유하고있을 수도 있습니다.


2
유틸리티를 온라인으로 출시 했습니까? 내 무기고에 추가하는 것이 좋을 것입니다.
Ploni

1
이 시점에서 기술의 진보 (컴파일조차하지 않을 수도 있음)와 내가 사용한 저수준 시스템 호출을 고려할 때 아마도 제대로 작동하지 않을 것입니다. 또한 오래된 소프트웨어를 구덩이에서 꺼내는 것보다 먼저 사용하는 것이 더 현대적인 오픈 소스 포렌식 장치 / 드라이브 복제 도구 몇 가지가 있습니다.
CubicleSoft

dd요즘에는 이와 비슷한 방식으로 작동하도록 매개 변수를 제공 할 수 있다고 기대합니다 . 그래도 확실하지 않습니다.
wizzwizz4

@ wizzwizz4, ddrescue를보십시오.
초에 hildred

"법의학 데이터 도구는 당시 많은 비용이 들었습니다." 나는 그들이 여전히 확신합니다.
jpmc26

5

이 답변은 @Ruslan의 의견에 대한 확장입니다.

  1. 최대 약 99.9 %의 SD 카드 채우기
  2. 남은 0.1 %의 내용을 계속해서 다시 씁니다 (쓰기 A-삭제-쓰기 B- 삭제-쓰기 A ...)
  3. 이미 카드가 파손되었는지 테스트 (정기적으로)

가능한 대안 :

이것이 당신의 목적에 맞는지 확실하지는 않지만 실제로 카드를 물리적으로 손상시키는 것으로 충분할 것입니다.


6
마모 레벨링의 전체 목적이 이러한 종류의 조기 손상을 정확히 방지하는 것이므로 카드를 99 %로 채우는 것은 도움이되지 않습니다. 카드가 물리적으로 손상되면 거의 초기화되지 않는 카드가 생성됩니다.
Dmitry Grigoryev

2
@DmitryGrigoryev 카드가 공식 용량보다 훨씬 많은 메모리를 가지고 있지 않다면웨어 레벨링이 어떻게 도움이됩니까 (이 경우 방해) ?
ispiro

12
@ispiro 예를 들어, 다음에 쓰기 횟수가 많은 섹터를 덮어 쓰면 내용이 쓰기 수가 적은 섹터로 교체 될 수 있습니다.
Dmitry Grigoryev

1
나는이 대답을 해석 할 경우 @DmitryGrigoryev 제대로 마모 lvling을하지 SD 카드가 있어야한다 : electronics.stackexchange.com/a/27626/16104
데니스 Jaheruddin

1
@DennisJaheruddin 예, 오래된 카드는 그렇게하지 않습니다. 이러한 카드를 사용하면 할당 테이블의 섹터가 마모 될 때까지 빈 파일을 반복해서 생성 / 제거하면 충분합니다.
Dmitry Grigoryev

3

불안정한 전원 공급 장치 또는 더 높은 전압 신호를 도입 할 수 있습니다.

내가 아는 장치 제품군의 일반적인 결함은 SD 카드 손상과 간헐적 인 배터리 접촉 사이에 강한 상관 관계가 있습니다.


3

일부 오래된 저용량 SD 카드 (16MB-ish)는 TSOP / TSSOP 스타일 패키지에서 플래시 칩을 사용합니다. SMT 재 작업이 가능한 작업장 (임베디드 작업을 수행하는 경우 해당 기술을 보유하고 있거나 보드 수준 전화 / 노트북 수리를 수행하는 소규모 회사를 확인)은 해당 칩을 분리하여 다시 연결하여 읽을 수 있습니다. 장치 프로그래머와 함께 원시 (ECC 코드 포함).

여전히 다음을 주로 테스트한다는 점에 유의하십시오.

  • 장치가 내부 오류 수정으로 인해 발생할 수있는 타이밍 수차 / 딸꾹질을 처리하는 방법

최악의 경우

  • 단말기에서 장애가 발생한 SD 카드를 처리하는 방법

SD 카드에서 어떤 이유로 든 불규칙한 동작으로 어떻게 작동하는지 확인하려면 인터페이스 라인에 전기 노이즈를 도입하는 것이 가장 좋습니다. 그것은 무의미한 신호의 소스로 (올바른 전기 레벨의).


마지막으로 고장난 SD 카드는 "전기 노이즈"를 생성하지 않으며 쓰기 작업을 위해 오류 코드 만 반환합니다.
Dmitry Grigoryev

2

OlafM의 답변과 관련이 있지만 다릅니다. SD 카드 프로토콜을 사용하도록 자신의 마이크로 컨트롤러를 프로그래밍 한 다음 원하는 동작을 에뮬레이션 할 수 있습니다.


1

FAT32 마스터 부트 레코드 영역은 아마도 같은 레벨에 있어야하기 때문에 논리적으로 남용하기 가장 쉽습니다. (아마도 이것은 불량 섹터의 소프트 리 맵핑에 의해 처리되지만 모든 하드웨어에서 구현되는 것은 다소 회의적입니다.) 따라서 sfdisk루프를 실행 하여 그렇게 할 수 있는지 확인할 수 있습니다.

그러나 소프트웨어의 나쁜 하드웨어를 처리하는 대신 하드웨어 안정성을 향상시키기 위해 할 수있는 모든 일을하도록 간청 할 것입니다. SD 카드가 모든 종류의 이상한 방식으로 실패한다는 문제입니다. 그들은 읽을 수 없게되고, 쓸 수 없게되고, 나쁜 데이터를 제공하고, 작동 중에 시간이 초과되는 등 카드가 실패 할 수있는 모든 방법을 예측하는 것은 매우 어렵습니다.

내가 가장 좋아하는 실패 중 하나 인 "빅 데이터 모드"입니다.

나쁜 sd 가짜 빅 데이터

SD 카드는 엄청난 비용 압력을받는 상품 소비자 제품입니다. 부품이 빠르게 변하고 데이터 시트가 나오기 어렵습니다. 모조품은 들어 본 적이 없습니다. 저렴한 스토리지의 경우이기는 것이 어렵지만 SSD는 안정성을 최우선으로 생각하지만 SD 카드의 우선 순위는 속도, 용량 및 비용입니다 (아마 순서대로는 아님).

첫 번째 방어선은 착탈식 SD 카드 대신 유명 제조업체의 실제 데이터 시트와 함께 납땜 가능한 eMMC 부품을 사용하는 것입니다. 그렇습니다. GB 당 비용이 더 많이 들지만 부품은 더 오랜 시간 동안 생산 될 것이며 적어도 당신은 무엇을 얻고 있는지 알고 있습니다. 부품을 아래로 납땜하면 탈착식 카드로 인해 발생할 수있는 잠재적 인 문제 (쓰기 중에 카드가 쇠약 해 지거나 전기 접촉 불량 등)를 피할 수 있습니다.

제품에 이동식 저장 장치가 필요하거나 변경하기에 너무 늦은 경우 "산업용"등급 카드에 추가 비용을 지불하거나 일회용 물체로 취급하십시오. 우리가 (리눅스에서)하는 일은 fsck부팅시 카드이며,이 사용 사례에서 재 포맷이 가능하므로 오류가보고되면 다시 포맷하십시오. 그런 다음 fsck다시. 다시 포맷 한 후에도 오류가 계속보고되면 RMA에서 오류를보고 하드웨어를 eMMC를 사용하는 최신 버전으로 교체합니다.

행운을 빕니다!


나는 당신에게 엄지 손가락을 주었다. 나는 SD 카드를 많이 사용하고 일년에 몇 번 실패합니다. 나는 그다지 많은 생각을하지 않았지만 내 자신의 경험에서 실패한 카드는 최종적으로 가치가 없어지기 전에 실패한 FAT의 증상을 나타냈다. 나는 당신이 여기에 뭔가 있다고 생각합니다 :) 단순히 파일을 만들고 삭제하면 FAT에서 빠져 나올 것입니다.
jwzumwalt

1

아마도 이것은 당신이 원하는 방향이 아니지만 내 라디오 또는 랩톱에서 읽는 동안 SD 카드를 제거하는 것이 SD 카드를 약 1/5 또는 1/10 번 보장한다는 것을 알았습니다. 읽기 및 쓰기 작업 중에는 카드의 전원이 제대로 제거되지 않은 것 같습니다. 아래의 Robert Calhoun의 의견을 읽은 후 FAT가 손상 될 수 있다고 믿게되었습니다. 읽기만으로 인해 충돌이 발생하는 이유를 모르겠지만 쓰기 작업이 없어야합니까?


불량 섹터를이는 FS에 손상을 줄 수 있지만 확실하지 실제로 만들 것
akostadinov

카드와 충돌하고 다시 포맷해야한다는 사실을 알려줄 수 있습니다. 나는 SD 카드, 라즈베리 파이, 랩톱 및 내 홈 장치 중 여러 가지 로이 작업을 여러 번 수행했습니다.
jwzumwalt

2
다시 포맷해야합니다! = 섹터 가 손상됩니다 . 파일 시스템입니다. 아마도 그럴 수도 있습니다.
wizzwizz4

1

SD 카드가 FAT32 형식 인 경우 2 개의 지방을 16 진수로 편집하고 올바른 16 진수 코드로 섹터를 불량으로 표시 할 수 있습니다. 이 특정 위치에서 불량 섹터를 찾아야하는 소프트웨어를 논리 테스트하려는 경우에는이 방법이 필요합니다. 그것은 SD 카드에도 해를 끼치 지 않으며 다시 포맷하면 정상적인 상태로 돌아갑니다.


1
슈퍼 유저에 오신 것을 환영합니다! 이것은 흥미로운 접근법처럼 보입니다-16 진수 편집을 수행하는 방법을 구체적으로 설명해 주시겠습니까? 감사.
Ben N

나는 리눅스 명령 hdparm이 트릭을 수행 할 것이라고 생각합니다 : 그것은 당신이 나중에 편집 할 수있는 섹터를 저장 한 다음 카드에 다시 쓸 수있게 해줍니다. 그러나 vfat 및 man hdparm에 대한 설명서를 찾아야합니다. 죄송합니다. Windows 컴퓨터와 가까운 곳에 없습니다.
Emile De Favas

--make-bad-sector플래그 유망 보인다! 그러나 이것이 처음 에이 명령을 실행하는 Linux 시스템에서만 작동하는지 알 수 없습니다. 나는 명령 hdparm --make-bad-sector 20000 /dev/sd#이 어떻게 든 20000 섹터를 나쁘게 만들고 Linux를 실행하지 않는 내장 하드웨어 장치에서 나쁘게 감지 되기를 바라고 있습니다. 이견있는 사람?
Gabe Krause

0

Linux 불량 블록 스크립트를 만들어 단일 섹터에서 몇 시간 동안 반복적으로 파괴 테스트를 실행할 수 있는지 궁금합니다.

SD 카드 내부의웨어 레벨링 코드가 모든 장소에서 논리 블록을 다시 매핑하기 때문에 단일 섹터에서 – 아니요.

그러나 당신은 쉽게 실행할 수있는 badblocks -w이 원인이 될 때까지 루프에서 일부 표시 불량 블록. 이와 같은 것이 작동해야합니다.

while badblocks -w /dev/xx; do :; done

불량 블록이 감지되지 않으면 badblocks가 0을 반환하고 그렇지 않으면 ≠ 0을 가정한다고 가정합니다 (매뉴얼 페이지는 말하지 않고 소스 코드를 확인하지 않았습니다).


-1

일반적으로 SD / uSD 카드에서는 마모 레벨링을 구현하므로 상당히 어려울 수 있습니다. 유형 (단일 계층 셀, 다중 계층, TLC, 3D-NAND 등)에 따라 섹터 풀을 소진하기에 충분한 쓰기주기가 다중 TB에있을 수 있습니다.

실제로 4 Micron 16GB 칩을 사용하는 4GB, 64GB 및 256GB Pro Duo, SSD 및 썸 드라이브, 64GB K --- s--로 약 3.84TB 지속되었으며 FAT 영역에서 단일 소프트 오류로 실패했습니다. . 256GB를 사용하면 조금 덜 지속되었지만 직접 칩에 액세스하지 않으면 MBR 손상이 발생하기 전에 아마도 5TB를 쓸 수 있었지만 컨트롤러가 USB3 모드에서 제대로 작동하지만 USB2가 리드 백 중에 더 많은 글리치가 있는지 확실하지 않았습니다. 또한 매우 뜨겁습니다. 데이터를 복사 할 때 리더에서 4GB Duo가 실패했습니다. 다시 확신 할 수는 없지만 6 년 정도 사용했을 때 카메라에 "복구 중"메시지가 표시되었습니다. 쓰기 중에 전원 전압이 변경되면 LOT이 더 빨리 실패합니다. 비슷한 증상으로 약 2 년 동안 사용한 후 128GB microSD가 실패했습니다.

X-ray 실험에 대한 관련이없는 메모를 제거했습니다.


1
특정 총장을 파괴하는 데 도움이되는 몇 가지 답변이 이미 있습니다. 무작위를 파괴하는 것에 대한 당신의 제안은 아무것도 추가하지 않습니다.
Máté Juhász
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.