나는 USB 플래시 드라이브 usb 3을 가지고 있으며 읽기 속도가 쓰기 속도보다 훨씬 빠릅니다. 플래시의 99%가 이미 0으로 채워져 있다고 가정하면, 100%까지 모든 메모리 플래시를 0으로 덮어써서 0으로 채우고 싶습니다 dd if=/dev/zero of=/dev/FLASH
.
이 프로세스는 시간이 오래 걸리며 플래시 드라이브의 예상 수명을 최소화합니다.
나는 어떤 영역이 0이 아닌지 확인하고 0이 아닌 영역을 0으로 덮는 것이 더 빠를 것이라고 생각했습니다.
이를 수행할 수 있는 방법이 있습니까? 흥미롭다면 보안상의 이유로 이 모든 것이 필요합니다.
답변1
안전상의 이유는 제쳐두고 그냥 해보자. 우리는 GNU를 (남용)할 수 있습니다 ddrescue
.
제로 섹터를 감지하는 데 --generate-mode
유용합니다 .
ddrescue
options 와 함께 호출 되면--generate-mode
기본 "구조 모드"와는 다른 "빌드 모드"에서 실행됩니다. 즉, 이--generate-mode
옵션을 사용하면ddrescue
아무것도 저장되지 않습니다. 나중에 사용하기 위해 생성을 시도합니다mapfile
.[…]
ddrescue
어떤 경우에는 sum 의 (부분) 복사본인 summapfile
에서 근사값을 생성할 수 있는데 , 이는 거의 정확한 것만큼 좋습니다 . 이는 단순히 모두 0을 포함하는 섹터가 저장되지 않는다고 가정하여 수행됩니다.infile
outfile
mapfile
[…]
ddrescue --generate-mode infile outfile mapfile
(원천)
outfile
귀하의 장치가 마지막 ddrescue
으로 실행된 장치 라고 가정해 보겠습니다 . 우리는 그것을 사용할 수 없습니다 infile
(동일한 파일일 때 작동을 거부하기 때문에 ddrescue
). 더미 파일이 필요하며 그러면 그렇게 됩니다. 장치의 물리적 섹터 크기를 알고 선택적으로 사용해야 합니다. 이 명령이 도움이 될 수 있습니다.infile
outfile
/dev/zero
-b
lsblk -o NAME,PHY-SEC /dev/FLASH
여기서 나는 그것이라고 가정합니다 512
.
ddrescue -b 512 --generate-mode /dev/zero /dev/FLASH flash.map
이제 각 섹터 는 0으로 채워졌는지 여부에 따라 flash.map
시도되지 않음( ?
) 또는 완료됨( )으로 설명됩니다. +
다음 단계는 0이 아닌 섹터를 0으로 채우는 것입니다. --fill-mode
이는 작업에 적합합니다.
ddrescue
options 와 함께 호출 되면--fill-mode
기본 "복구 모드"와는 다른 "채우기 모드"로 실행됩니다. 즉, 이--fill-mode
옵션을 사용하면ddrescue
아무것도 저장되지 않습니다. 상태 문자가 옵션 인수로 지정된 유형 문자 중 하나와 일치하는infile
블록에서 읽은 데이터 만 채웁니다.outfile
mapfile
--fill-mode
(원천)
-b
출력 장치 와 동일한 값을 사용해야 하며 --generate-mode
추가로 --force
출력 장치를 재정의해야 합니다. 이것은 명령입니다:
ddrescue -b 512 --force --fill-mode=+ /dev/zero /dev/FLASH flash.map
이번에 /dev/zero
는 단순한 더미 매개변수가 아니라 장치에 기록된 실제 데이터 소스(0)입니다.
이제 /dev/FLASH
0으로 채워집니다. 장치를 물리적으로 연결 해제하기 전에 버퍼를 플러시해야 할 수도 있습니다(유용한 링크:1,2,삼).