SD 카드를 완전히 지워야 하는 경우가 많습니다.
이 프로세스를 사용하면 속도가 크게 향상될 수 있습니다.SD 메모리 카드 포맷터.
불행하게도 이 프로그램은 Linux에서 사용할 수 없는 것 같으며 대체 프로그램(예: dd
또는 shred
)은 시간이 오래 걸립니다.
AFAIK SD/MMC 카드에는 대량 삭제를 위한 특정 명령이 있으며, 이것이 "SD 메모리 카드 포맷터"가 사용하는 것인 것으로 의심됩니다(덮어쓰기를 통해 내용을 지우려는 대신).
같은 것을 사용하는 도구가 있나요?
답변1
차단 폐기 사용
간단히 말해서:
blkdiscard /dev/mmcblk0
논의하다
전체 SD 카드를 빠르게 지우려면 다음을 사용할 수 있습니다.blkdiscard
(8)주문하다. 이는 Linux BLKDISCARD ioctl을 호출하며, 이는 차례로 CMD38을 전달합니다.SD 메모리 카드 포맷터.
흥미로운 선택
-s
,--secure
블록을 안전하게 폐기합니다. 다른 곳에서 언급했듯이 일반 CMD38을 사용하면 일부 블록은 비어 있는 것처럼 보이지만 가비지 수집으로 인해 다른 블록은 명확하게 표시됩니다.-s
좀 더 안전하고 가비지 수집 블록을 강제로 삭제하려는 경우에 사용하세요.-z
,--zero
버리는 대신 블록을 0으로 채웁니다.
USB를 통해 작동하지 않음
이 기능은 내 노트북과 Raspberry Pi에서는 작동하지만 USB SD 카드 리더에서는 작동하지 않습니다. 차이점은 커널이 하위 수준에 액세스해야 한다는 것입니다.MMCUSB는 이를 범용 "대량 저장" 장치로 추상화합니다. [Microsoft Windows에도 동일한 제한이 있다고 생각하는데, 제가 틀렸다면 댓글로 정정해 주시기 바랍니다. ]
낮은 수준의 SD 카드와 직접 통신할 수 있는 장치가 없는 경우 Arduino를 사용하여 장치를 만들고 실행할 수 있습니다.SDFormatter.ino.
매우 위험합니다!
blkdiscard
루트로 실행해야 하기 때문에 쉽게 할 수 있습니다.파괴하다귀하의 모든 데이터. 올바른 장치를 가리키고 있는지 확인하고 다시 확인하는 것이 좋습니다. lsblk
및 을 사용합니다 df
.
맨페이지에는 보안상의 이유로 드라이브가 아직 마운트되지 않은 경우에만 작동한다고 나와 있습니다. 이는 훌륭한 보안 기능이지만 이 글을 쓰는 시점에서는 그렇지 않습니다. 현재 구현에서는 드라이브가 이미 포맷된 경우 옵션이 필요하며, -f
이는 --force
SD 카드가 사전 포맷되어 있기 때문에 (거의) 항상 그렇습니다. 불행하게도 --force
수단을 사용하여모두확인(드라이브 사용 여부 포함)이 비활성화됩니다.
언젠가는 Linux에서 루트 권한 없이 이동식 장치에서 blkdiscard를 실행할 수 있게 되어 훨씬 덜 위험해질 수 있기를 바랍니다.
기타 용도
개인 정보 보호를 위해 데이터를 빠르게 삭제하는 것 외에도 blkdiscard(SSD의 fstrim과 유사)는 웨어 레벨링을 개선하고 일부 SD 카드에서일반적으로 더 빠르게 실행.
답변2
최근 SD 메모리 카드 포맷터(CLI 버전)로 인해리눅스에서 사용 가능(x86_64 및 arm64의 경우):
https://www.sdcard.org/downloads/sd-memory-card-formatter-for-linux/
얼마 전 저는 가급적이면 Linux에서(툴체인의 일부로) 공식 SD 메모리 카드 포맷터를 사용해야 했기 때문에 SD 협회에 이에 대해 문의하는 이메일을 보냈습니다. 그들은 반응이 좋고 도움이 됩니다. 최근 그들은 이제 Linux에서 포맷터를 사용할 수 있다는 이메일을 보냈습니다.
답변3
기자의 요점을 설명하자면 다음과 같습니다. https://forum.armbian.com/topic/3776-the-partition-is-not-reised-to-full-sd-card-size/?do=findComment&comment=27413
시저
게시일: 2017년 3월 13일
"예약된 섹터" 및 과잉 프로비저닝 관련: 카드가 n바이트의 용량을 요구하는 경우 내부적으로 더 많은 용량을 갖습니다. 이는 예약 역할을 하며(컨트롤러가 불량 섹터를 감지하면 예약 섹터가 매핑됨) 카드가 가득 찼을 때 특정 수준의 쓰기 성능을 허용합니다. 직접 덮어쓸 수 없는 플래시 미디어에서는 항상 읽기/삭제/쓰기 주기에 시간이 많이 걸립니다. 플래시 셀이 쓸 수 있는 양은 설계된 프로그램/삭제(P/E) 주기 수에 따라 결정됩니다. 컨트롤러는 모든 플래시 셀이 고르게 마모되도록(웨어 레벨링) 이를 처리해야 합니다.
컨트롤러는 실제 데이터가 포함된 섹터와 그렇지 않은 섹터를 알지 못하기 때문에(SD 카드가 TRIM을 지원하지 않습니다.) 카드를 완전히 한 번 채우면(모든 공간 파티션) 이제부터 컨트롤러는 모든 섹터에 유용한 데이터가 포함되어 있다고 생각합니다(동시에 데이터를 삭제하더라도 TRIM 지원이 없기 때문에 컨트롤러는 데이터를 삭제하지 않습니다). 알고 있음 예) 비어있든 없든 이제부터 전체 용량을 사용한 것으로 간주됩니다. 이제 "예약된 섹터"만 사용하여 읽기/삭제/쓰기 주기를 수행할 수 있으며, 섹터 수가 적으면 평균 SD 카드(최근 삼성이 아님)가 훨씬 느려집니다.
SSD에 대해 설명하는 기사를 확인하고 SD 카드가 10년 전의 형편없는 SSD처럼 작동하고 느린/원시 컨트롤러를 포함하며 TRIM을 지원하지 않는다는 점을 기억하세요.
참고: 이것은 SD Association의 "SD Formatter"에 대한 유일한 좋은 사용 사례입니다. 이 도구는 SD 카드를 올바르게 포맷하는 데 사용됩니다("올바른" 파일 시스템이 선택된 경우(FAT 또는 exFAT) 파티션). 다음 단계는 OS 이미지를 굽는 것이므로 Armbian 관점에서는 확실히 쓸모가 없습니다. 파티션 테이블 이전에 존재하는 파일 시스템을 덮어쓰게 됩니다. 그렇다면 애초에 SD 포맷터를 사용하는 이유는 무엇입니까? 이 도구는 ERASE CMD38을 구현하기 때문입니다. 이는 카드의 각 섹터/블록에 더 이상 실제 데이터가 포함되어 있지 않으며 비어 있는 것으로 간주될 수 있음을 카드 컨트롤러에 알려줍니다. "일반" SD 카드에서는 극도로 낮은 성능을 "공장 기본값" 성능으로 복원할 수도 있습니다. 그러나 최신 SD 카드 컨트롤러는 특히 많은 예약된 섹터와 쌍을 이루는 경우 그다지 영향을 받지 않습니다.
(...)
편집하다: "SD 카드는 TRIM을 지원하지 않습니다."에 대한 작은 참고 사항입니다. SD 프로토콜은 블록 삭제 명령을 정의하며 fstrim과 같은 도구가 해당 작업을 수행해야 합니다. 커널 + SD 카드 조합이 이를 지원하는지 여부는 간단한 "sudo fstrim -v /"를 통해 알 수 있습니다. 이것이 원하는 효과를 가져오는지는 다른 질문입니다. (이것을 테스트하려면 이 항목을 참조하십시오. 데이터 세그먼트를 지워진 지점으로 표시하면 덮어쓰기가 포함되어서는 안 되기 때문에 접근 방식이 충분한지는 잘 모르겠습니다. SD 카드의 컨트롤러는 특정 섹터/페이지가 이제 "비어 있음"으로 표시되므로 마모 수준 풀에 추가될 수 있음을 알고 있습니다.)
따라서 Linux에는 sdcard.org SD 포맷터와 동등한 기능이 없으며 Windows 및 Mac에서만 사용할 수 있습니다.
fstrim 또는 dd는 대체품이 아닙니다. 왜 우리가 그런 도구를 놓쳤는지 모르겠습니다. 향상된 오버프로비저닝과 향상된 컨트롤러를 사용하면 장기적으로 큰 문제가 되지 않을 수 있습니다. SD Formatter를 만든 Tuxera에게 Android 또는 일반 Linux 버전을 출시할 계획이 있는지 물어보세요.
답변4
SD 카드는 포맷할 필요가 없습니다. "포맷"은 실제 데이터를 위해 트랙과 섹터가 준비되는 디스크에 대한 오래된 용어입니다. 이는 디스크에 의해 정의되지 않고 디스크가 포맷될 때 헤드에 의해 정의됩니다. 따라서 포맷이 매우 느립니다.
이제 "포맷"은 더 이상 느린 프로세스가 아니므로 실제로 포맷하는 것이 아닙니다.
일반적으로 프로그램은 한 가지 mkfs
스타일 만 수행합니다.체재, 파일 시스템의 구조를 만드는 것뿐입니다. 카드와 내부 컨트롤러는 데이터를 저장할 위치를 정의했습니다.
불행하게도 디스크에 사용되지 않은 섹터가 있음을 알려주는 명령(컨트롤러가 제공한)을 찾지 못했습니다. 이는 도움이 될 수 있지만 일부일 수도 있습니다 mkfs
(커널 측에 숨겨져 있음). 그러나 실제 자기 하드 드라이브를 제외하고는 불필요한 작업을 수행하지 마십시오 dd
. SD, SSD 등에서는 장치가 소모될 뿐입니다.