SD / MMC 카드가 자체 컨트롤러로 마모 레벨링을하는 것이 사실입니까?


51

이것에 대한 신뢰할만한 정보를 찾을 수 없습니다. SD / MMC 카드 하드웨어의 전체 사양이 없습니다.

사실인가요? 이 고급 카드로 작업 할 때웨어 레벨링에 대해 걱정할 필요가 없습니까?

편집하다

SD 사양에 따라 마모 레벨링 이 보장 되는지 확인할 수 있습니까? 대부분의 벤더가하는 것처럼 보이지만 사양에 필요하지는 않습니다.


5
모든 플래시 미디어 제조업체가웨어 레벨링 알고리즘에 투자하는 것은 아닙니다. 웨어 레벨링은 제조업체가 알고리즘으로 인해 시장을 주도하는 SSD에서 더 널리 사용됩니다.
Chetan Bhargava

답변:


43

저는 SD 협회의 회원이었던 회사에서 일하고 있으며 2.0 (SDHC) 사양에 익숙합니다. SD 카드 사양에는 마모 레벨링에 대한 항목이 없습니다. 그것은 그들이 선택한다면 그것을 처리하기 위해 SD 제조업체에 전적으로 의존합니다. 우리는 일부는 가능하지만 다른 일부는 그렇지 않습니다 (슈퍼 저렴한 녹아웃 SD 카드에주의하십시오). SDXC가 마모 레벨링을 포함하도록 변경했을 수도 있지만 확실하지 않습니다. 불행히도 그것을 실제로 보여주는 유일한 방법은 공식 사양을 얻는 것입니다. 온라인에서 가장 많이 찾을 수 있지만 SD 협회에서 실제로 지불하기를 원합니다.

참고로, 2GB 카드를 가져 와서 다시 시작하기 시작하는 것은 카드가 죽기 전에 더 이상 쓰기가 불가능하기 전에 평균 약 10TB입니다. 또한 SD 카드는 데이터가 나쁜시기를 알려주지 않습니다. 즉 PC 하드 드라이브처럼 I / O 오류를 반환하지 않습니다. 10TB는 많은 데이터이므로 임베디드 디자인에는 문제가되지 않지만 누군가에게 영향을 줄 수 있습니다.


2
나는 그것이 사양에 있지 않더라도 회사는 여전히 평판을 유지하기 위해 그것을 원한다고 가정합니다. 초저가의 넉 오프는 평판에 신경 쓰지 않지만 모든 것을 싸게 살려는 사람들에게 판매합니다. 이것이 합리적으로 들립니까?
Kellenjb

1
@Kellenjb 그것은 매우 합리적인 가정이며 개인적으로 당신에게 동의 할 것입니다. 그러나 사양에 포함되어 있지 않으며 특정 제조업체의 SD 컨트롤러 디자인에 액세스 할 가능성이 거의 없기 때문에 실제로 입증 할 수는 없습니다. 우리는 수년에 걸쳐 많은 테스트를 해왔으며, 일부 주요 브랜드는 다른 브랜드보다 훨씬 우수한 성능을 발휘합니다. 내부 알고리즘의 차이 또는 완전히 부족한 것일 수 있습니다.
Kris Bahnsen

4
저렴한 넉 오프는 사양에 있더라도 상관하지 않습니다. 고객에게 즉시 표시되지 않으며 누락 될 수 있습니다. 우리는 리드 플러그를 IC로 판매하는 사람들에 대해 이야기하고 있습니다. 레벨링을하지 않는 유명 브랜드 카드에 대해 들어 보지 못했지만 가능하다고 생각합니다.
darron

@KrisBahnsen 복구 불가능한 오류가 발생했을 때 SD 카드가 실제로 무엇을 반환하는지 자세히 설명 할 수 있습니까? 나는 이것에 매우 관심이 있습니다. 이 상태를 감지하는 방법이 전혀 없습니까?
프레드 바셋

3
@fredbasset, 스레드를 좀비하는 방법;) SD 카드 작업을 한 지 오래되었습니다. 그러나 IIRC SD 카드 자체는 자신이 느끼는 것을 물리적으로 반환합니다. 괜찮은 드라이버와 결합 된 최신 드라이버 중 일부는 IO 오류를 감지 할 수 있습니다. 그러나 오래된 SD 카드 중 일부는 NAND에 저장된 잘못된 데이터를 반환하여 양호하게 호출 할 수 있습니다. 그러나 쓰기를 완료 할 수 없으면 IO 오류가 반환됩니다.
Kris Bahnsen 2018 년

23

사실이야! MicroSD 카드에는 검은 색 플라스틱으로 캡슐화 된 (ARM) 마이크로 컨트롤러에 본딩 된 NAND 플래시 칩이 포함되어 있습니다. http://www.bunniestudios.com/blog/?p=898 는 설명합니다.

후속 포스트의 끝에서 http://www.bunniestudios.com/blog/?p=918 컨트롤러를 통합하는 Bunnie는 아마도 플래시를 미리 테스트하는 것보다 비용이 적게 든다.

SanDisk의 SD 카드 제품 설명서 인용 : "1.9 마모 레벨링. 마모 레벨링은 NAND 메모리를 사용하는 SD 카드의 소거 풀링 기능의 본질적인 부분입니다." 데이터 시트에서 SanDisk 브랜드 카드에 대한 모든 내용을 읽을 수 있습니다 .


1
Bunnie Huang은 확실히 나를 위해 충분히 신뢰할 수 있습니다!
vicatcu

알아두면 좋지만이 기술의 공식 사양에 따라이 질문을 밝힐 수있는 사람을 기다릴 것입니다.
ivarec

2
Digikey는 데이터 시트를 조회 할 때 쓸모없는 SanDisk 브로셔를 보여주었습니다 . 윈텍Swissbit 데이터 시트는 더 좋았다, 둘 다 마모 레벨링을 언급했다. Digikey 호스팅 데이터 시트에 링크 할 수 있습니까?
케빈 베르메르

그것들은 오래된 SanDisk보다 더 좋습니다.
joeforker

Wintec은 크지 않았지만 새로운 SanDisk는 가장 훌륭합니다! 편집 해 주셔서 감사합니다.
케빈 베르메르

19

예, SD / MMC 카드에는 마모 수준을 조정하는 컨트롤러가 있습니다. 그렇지 않은 경우 몇 분 안에 잘못된 쓰기 패턴으로이를 파괴 할 수 있습니다.

그것은 실제로 일부 임베디드 프로젝트의 문제입니다. 어떤 섹터가 언제 마모 될지 알 수있는 방법은 (명백히) 없습니다. 따라서 잘못된 시간에 전원을 껐다 켜면 카드의 어느 곳에서든 데이터를 삭제할 수 있습니다. (내가 아는 방법을 묻지 마십시오 :))

SD 카드는 시스템을 완전히 종료 시키거나 최소한 쓰기가 완료되도록 보장하는 시스템과 함께 사용해야합니다. 그렇지 않으면 데이터가 손실 될 수 있습니다.

편집하다

문제는 마모 레벨링 프로세스가 완전히 숨겨져 있다는 것입니다. 디스크의 모든 섹터는 언제든지 이동할 수 있으며 (페이지가 기록 된 상태로 스왑 됨) 해당 프로세스 도중에 전원이 공급되지 않으면 임의의 섹터가 손상 될 수 있습니다.

이 동작을 구현하는 데는 합리적으로 안전한 방법이 있지만 어떤 사양도 아니므로 카드가 그렇게 할 것이라고 믿을 수 없습니다. 하나의 카드를 테스트하고 작동하게 한 다음 제조업체는 부품 번호를 변경하지 않고 구현을 변경할 수 있습니다.

테스트에서 내 SD 카드 컨트롤러는 안전한 방법으로이 작업을 수행하지 않습니다.

난 정전 허용을 위해 특별히 광고 된 "고 신뢰성"SD 카드를 볼 수 있습니다.하지만 제조업체가 올바르게 그렇게하려면 제조업체를 신뢰해야합니다. 페이지 지우기를 직접 제어하고 싶습니다. 나는 아직도 이것을 알아 내려고 노력하고있다.


4
게시 된 답변을 참조하십시오. 마모 레벨링 알고리즘은 제조업체에 따라 다르기 때문에 스너프하지 않을 수 있습니다. 올바른웨어 레벨링 알고리즘은 먼저 데이터를 이동 한 다음 해당 데이터를 양호로 표시 한 다음 가비지 수집하여 원래 데이터를 수집합니다. 일부 카드에서는 문제 일 수 있으며 다른 카드에서는 그렇지 않을 수 있습니다. SD는 당신이 바닥에 도착했을 때 매우 추악한 디자인입니다.
Kris Bahnsen

2
예, 그것은 내가 염려하는 한 표준입니다. 이러한 유비쿼터스 메모리 스토리지 표준이 본질적으로 신뢰할 수 없다는 것은 매우 성가신 일입니다.
darron

2
@ jpc : 아마도 블로그 항목을 할 것입니다. 자주 고려되지 않는 인상을 받고 있습니다. 너무 늦을 때까지 나는 그 의미를 스스로 깨닫지 못했다. 나는 이것으로 싸웠고 내 SD 카드 제조업체와 이야기했습니다. 쓰기 시간을 최소화하는 것 외에는 해결책이 없습니다. 이제 NAND 플래시에 쓰고 하루에 한 번 SD에 가능한 빨리 복사합니다. 임의의 정전시 "내성"으로 설계된 SD 카드가 있지만 이러한 카드가 완전히 신뢰할 수 있는지 확실하지 않습니다.
darron

2
@fred basset 이상하게도이 답변이 작성된 이후로 산업용 카드의 사양이 변경된 것 같습니다. 나는 쓰기에 대한 보증 있는 microSD 카드를보고 있었습니다 (저는 생각합니다) ... 지금, 그들은 그런 주장을하지 않습니다. 제조업체와 대화하면서 현재 슈퍼 캡을 사용하고 있지만 컴팩트 플래시 카드 만 사용할 공간이 있습니다. 안전하게 작업하면 성능이 너무 떨어집니다. 그들은 어떻게 든 쓰기를 완료하기에 충분한 백업 능력을 제공한다고 말합니다. 현대 ARM SBC가 얼마나 복잡한 지 고려할 때 공급 업체의 참조 디자인이 그렇게하지 않으면 실제로하기가 어렵습니다. 내가 아는 사람은 없습니다.
darron

2
@freq basset UBI 및 UBIFS를 사용하고 있습니다. 잘 작동하는 것 같습니다 ... 지금 몇 년 동안 많은 시스템이 문제없이 실행되었습니다.
darron

12

기존의 NAND 플래시 메모리를 사용하는 모든 유형의 SD 카드는 일부 유형의 섹터 가상화를 사용해야합니다. 기존의 NAND 플래시 장치는 개별 512 바이트 섹터의 소거를 지원할 수 없으며 크기가 큰 기존의 NAND 플래시 장치는 없기 때문입니다. 섹터를 쓰려고 시도 할 때마다 장치가 해당 섹터의 지우기 블록 (RAM까지도)의 모든 섹터를 복사 한 다음 블록을 지우고 쓰기를 요구하는 경우, 허용 가능한 수준의 성능을 발휘할 수 있습니다. 모든 부문이 돌아 왔습니다. 대부분의 섹터 가상화 기술은 본질적으로 다소 마모 수준입니다. 품질 장치와 넉 오프 간의 가장 큰 문제는 장치가 블록 사이의 레벨링을 적극적으로 시도하는 정도, 단순히 의사-랜덤 블록 할당을 사용하고 거의 균일 한 결과를 얻을 수 있기를 바라고 있습니다. 실제로, 나는 무작위 / 최선의 최선의 할당조차도 대부분의 경우에 적합 할 것으로 기대한다.


일부 제조업체가 구현하는 "마모 레벨링"은 NAND 인터페이스 자체에 의해 발생하며 가상화를 차단하기 위해 섹터 / 섹터로 차단되는 것일 수 있습니다.
Kris Bahnsen

1
@ 크리스 반센 (KrisBahnsen) : 마모 레벨링을 요구하는 제조업체는 다른 블록의 데이터와 그 데이터의 연령에 대한 상대적 마모를 적극적으로 모니터링하고 수명이 긴 데이터가있는 블록이 평균보다 마모가 훨씬 적은 블록에있는 경우, 해당 블록의 데이터는 마모가 더 많은 블록으로 이동합니다 (대부분 해당 블록의 향후 마모를 최소화하기 위해). 이로 인해 절대 변하지 않는 데이터로 95 % 채워진 장치의 유효 수명이 10 배 향상되고 나머지 5 %의 공간이 자주 사용됩니다.
supercat

나는 그들이 광고하는 경우에 일종의 실제 마모 ​​레벨링을 할 것이라고 생각합니다. 나는 사과하는 전체 주제에 대해 약간 부정적입니다. 나는 SD의 단점으로 몇 번 물렸다.
Kris Bahnsen

1
@ 크리스 반센 (KrisBahnsen) : 제가 생각하는 가장 큰 문제는 연속적으로 번호가 매겨진 512 바이트 섹터의 선형 묶음을 가정하는 가상화 모델입니다. DOS와 인터페이스하는 것이 편리했을 수도 있지만, 존재하는 하드웨어 나 호스트 소프트웨어가 실제로 원하는 것과는 잘 맞지 않습니다. 블록 번호를 64 비트로 열고 임의로 비 연속적으로 허용 한 다음 파일을 항상 논리적으로 연속적인 블록에 저장하도록합니다. 파일을 삭제하려면 해당 블록 범위를 삭제하십시오.
supercat

2
이것은 아마도 가장 좋은 대답 일 것입니다. 나는 이것이 그들 모두가하는 방식이라고 생각합니다. 당신이 그것에 대해 생각한다면, 마모 이력 자체동일한 카드의 어딘가에 저장되어야 하고 그 부분이 먼저 실패 하기 때문에 진정으로 정교한 알고리즘으로 결정적 마모 레벨링을 수행 할 수있는 방법이 없습니다 . 무작위 레벨링이 유일한 가능성입니다. 나는 SSD가 더 똑똑하다고 확신하지 않습니다. 그것들은 더 많은 대체 버퍼를 가질 수 있지만, 매우 거친 마모 정보를 저장할 가능성은 확실합니다.
님로드

7

Sandisk에는 카드의웨어 레벨링 로직을 설명하는 백서 가 있으며 여러 시나리오에서 카드 수명을 추정합니다. 행정상 개요 : 당신이 논스톱 카드를 망치지 않는 한, 수십 년 동안 지속될 것입니다.


링크가 죽었고 콘텐츠가 삭제 된 것 같습니다. 아마도 너무 많이 노출 되었기 때문일까요?
Cuadue

6
@Cuadue 링크에 액세스 할 수 있습니다. 그냥 나누기 경우, 페이지에 현재 보관 web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/...
Lekensteyn

2

이것에도 불구하고 많은 장치가 배터리가 부족하거나 전화가 충돌하거나 종료되는 경우 SD 및 microSD 카드, 특히 고밀도 카드를 손상시킵니다. 나는 문제가이 잘 일부 카드에 (기침 광고 알려진 바와 같이 전압 공급의 불충분 한 규제 것으로 의심 t 특정 외부 독자에 읽을 수없는 카드의 현상이 발생할 수 / 기침)하지만, 일부에서 제공하는 마이크로 다양한 잘 작동 컴퓨터 상점.

이 결함이있는 순간에 카드를 복구하는 중입니다. 이상하게도 대부분의 데이터를 복구 할 수 있지만 일부 섹터는 각 시도 에서이 변경 사항을 수행하지는 않습니다. 마모 레벨링 자체에 결함이있을 수 있습니까? (예, 여러 명의 독자를 시도했지만 동일한 오류가 발생했습니다.)


0

좀비 카드, 즉 형식을 완성하지 못하거나 읽기 전용 인 "nuking"좀비도 성공했습니다. 적은 비율로만 작동하지만 효과에 대한 대부분의 "공식적인"지침보다 훨씬 더 민감합니다.

따라서 처리 된 테스트 카드는 다시 실패하기 전에 4 개월 동안 지속되었으며, 시끄러운 전압을 공급하는 데 사용 된 장치가 아닌 경우 수명이 길어질 수 있습니다.


1
"nuking"이란 전자 레인지에 넣는 것을 의미합니까? 와트 수와 시간은 얼마입니까?
0x6d64

어, 아니 :-) 또한 왜 글로우 방전 (RF)이 비슷한 효과를 가지고 내가 사용한 방법보다 훨씬 덜 위험할까요? 한쪽에 금속 케이스가 없기 때문에 uSD 카드가 훨씬 더 민감합니다.
Conundrum5642Z

법적인 이유로 핵화가 "가제트"5642 + HVPS를 사용한다는 것을 확인하거나 거부 할 수 없습니다. 그러나 그것은 반복적으로 작동했고,이 기법은 이제 내가 그것을 HaD 등에 출판 한 것으로 알려져 있습니다.
Conundrum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.