문맥
저는 Micro SD 디자인의 Raspberry Pi Zero를 실행하고 있습니다. 하지만 이 특정 애플리케이션의 경우 일반적으로 Raspberry Pi에서 사용하는 것처럼 읽기 전용 시스템을 사용할 수 없습니다.
목적
Micro SD의 상태를 계속 확인하세요(그리고 결국에는 Micro SD를 교체해야 한다는 알림을 받게 됩니다).
질문
- Micro SD의 상태를 모니터링하는 가장 좋은 방법은 무엇입니까(아니요,
fsck
시스템이 실행되는 동안에는 Micro SD를 마운트 해제할 수 없기 때문입니다)? - 아래에 제안된 접근 방식이 실용성과 효율성 측면에서 가장 좋은 솔루션인가요?
제안된 접근법
badblocks
출력을 사용하여 Micro SD의 상태를 모니터링하고 적절한 경우 결국 교체하려고 생각했습니다 . 그런데 언제 Micro SD를 교체해야 할까요? 불량 블록이 너무 많으면 몇 개입니까? 쓰기 오류나 읽기 오류, 아니면 둘 다 찾아야 합니까?
저는 다음과 같은 사항을 고려했습니다. Micro SD 카드는 불량 블록 외부의 데이터를 자동으로 재할당합니다. 따라서 Micro SD가 80% 차면 블록의 20%가 "잘못"되어도 Micro SD가 계속 실행될 수 있습니다. 약간의 신뢰 구간을 추가하면 badblocks
불량 블록 출력 수가 여유 공간 블록의 50% 미만인 경우에도 SD 카드를 사용해도 안전하다고 말할 수 있습니까?
밝히다:
- 총 블록 수: 100
- 블록 내 여유 공간: 20
- 허용 가능한 손상된 블록의 최대 수(또는 기타): 10
답변1
불량 블록은 몇 개나 너무 많습니까?
하나.
badblocks
잘못된 도구입니다. 첫 번째 불량 블록이 보고될 때쯤에는 플래시 미디어가 손상될 정도로 사용된 것입니다. 와 마찬가지로 fsck
이미 문제가 발생한 상황만 감지할 수 있으며 데이터가 손실될 수 있습니다.
SD 카드(및 일반적으로 접할 수 있는 모든 플래시 대용량 저장 장치)의 하드웨어에는 플래시 변환 계층이 있어 본질적으로 아날로그이고 신뢰할 수 없으며 실제 메모리가 마모되기 쉬운 것을 단순하고 신뢰할 수 있는 것처럼 보이게 만듭니다. 블록 - 주소 지정이 가능한 메모리입니다. 이 작업은 두 가지 방법으로 수행됩니다.
- 페이지가 기록되는 횟수가 많을수록 비트가 단순히 뒤집히는 사실을 방지하기 위한 광범위한 순방향 오류 수정.
- Pi/OS에서 볼 수 있는 논리적 페이지에 대한 쓰기가 가능한 한 많은 물리적 페이지에 분산되어 항상 동일한 페이지에서 작업하지 않도록 하는 마모 평준화
이는 마모 평준화가 하드웨어에서 발생하고 운영 체제에는 보이지 않음을 의미합니다. 파일 시스템 드라이버가 불량 블록을 발견하면 오류 수정으로 처리할 수 없는 복구할 수 없는 오류가 발생합니다. 페이지가 많이 기록되지 않는 한 이는 거의 발생하지 않습니다. 이 경우 전체 쓰기 볼륨으로 인해 마모 레벨링이 한계에 도달했습니다. 이는 여러 번 기록했음을 의미하므로 쓰기를 미디어 전체에 분산시킨 후에도 일부 위치에는 오류가 발생할 수 있을 만큼 자주 기록됩니다. (일반적으로 다음에 일어나는 일은 SD 카드 내부의 컨트롤러가 읽기 전용 장치가 되었음을 호스트에 알리는 것입니다.)
그래서 아니야. 너무 늦을 때까지 기다리지 않으면 SD 카드의 데이터 유효성을 검사하여(fsck 및 badblocks가 수행하는 작업) SD 카드의 상태를 확인할 수 없습니다.
필요한 정보는 다음에서 제공됩니다.~에SD 카드는 "예약"된 총 쓰기 횟수를 추정합니다. 내가 아는 한, "Give me health information, dear SD card" 명령에 대한 표준 응답은 없지만 "산업용" 라벨이 붙은 SD 카드는 CMD65를 지원할 수 있으며 이를 읽는 것을 지원하는 일부 Linux 도구(sdmon)가 있습니다.
간단히 말해서, 쓰기를 위해 안정적인 저장 공간이 필요한 경우 SD 카드는 최선의 선택이 아닙니다. 인터페이스는 원래 이를 위해 설계되지 않았습니다. 대신 쓰기가 대부분 선형 방식으로 발생하고 한 번에 많은 양의 데이터가 기록되고 반복적인 쓰기가 드물다고 가정합니다(카메라 사용의 일반적인 경우: 전체 이미지 쓰기, 그런 다음 FAT를 한 번 업데이트하세요).
Pi에 장기적으로 안정적인 대용량 저장 장치가 필요한 경우 USB-M.2(일반적으로 SATA) 변환기 하우징(필요한 경우 전원 공급 USB 허브)을 구입하여 연결하는 것이 가장 좋습니다. SSD가 장착되어 있으면 Rpi 0으로 설정하세요. 이러한 컨트롤러의 대부분은 SMART 명령을 지원하므로 실제로 무언가를 모니터링하는 데 사용할 수 있습니다 smartctl
. 각 속성의 "정규화됨"가치는이상이것"해머스톤오래된" 값입니다. 찾을 수 있는 가장 저렴한 SSD를 구입하지 않도록 주의하세요. 하지만 모든 중급 SSD는 177의 속성, wear-level-count
195의 속성 Hardware ECC Recovered
, 182의 속성을 갖습니다. erase-fail-count-total
이러한 정규화된 값의 감소 반드시 나쁜 것을 의미하지는 않습니다(이런 일이 발생할 것으로 예상됩니다. 그렇지 않으면 이러한 측정항목이 쓸모가 없습니다). 그러나 일단 임계값에 가까워지면 SSD 교체를 고려할 수 있습니다(RPi Zero가 먼저 실패할 수 있습니다. 5€ RPi 사이). 기계적, 열적, 전기적 신뢰성을 위해 설계된 제로 소비 등급 SSD입니다.