드라이브가 완전히 제로화되었는지 확인하는 더 빠른 방법이 있습니까?

드라이브가 완전히 제로화되었는지 확인하는 더 빠른 방법이 있습니까?

앞으로 몇 달 안에 많은 디스크를 제로화해야 할 것입니다. 각 드라이브를 지운 후 드라이브가 0으로 완전히 채워졌는지 확인하는 빠른 방법이 필요합니다.

16진수 편집기에서 각 항목을 열 수 있지만 이를 통해 특정 부분이 0으로 지정되었음을 확인할 수 있습니다. 이는 드라이브가 커질수록 더 이상 무의미해집니다. 문자가 없습니다.

저는 제가 접한 몇 가지 도구를 테스트하기 위해 몇 가지 벤치마크를 실행하기로 결정했습니다. 동일한 1TB 디스크의 삭제를 확인하기 위해 3번의 개별 실행으로 각 도구의 시간을 측정했습니다. 각 실행은 동일한 시스템 로드에서 밤새 실행되었습니다. 캐싱을 처리하기 위해 각 실행마다 최소 500초의 휴면 시간을 두고 무작위 위치에서 도구를 실행했습니다.

다음은 3가지 테스트에 대한 각 도구의 평균 실행을 가장 느린 것부터 가장 빠른 것 순으로 정렬한 것입니다.

나 자신으로부터:

time hexdump /dev/sda

0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
e8e0db6000

real    284m35.474s
user    223m4.261s
sys     2m49.729s

에서고든 데이비슨:

time od /dev/sda

0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
16434066660000

real    148m34.707s
user    77m10.749s
sys     2m54.611s

에서:

time cmp /dev/zero /dev/sda 

cmp: EOF on /dev/sda

real    137m55.505s
user    8m9.031s
sys     3m53.127s

에서비어디:

time badblocks -sv -t 0x00 /dev/sda

Checking blocks 0 to 976762583
Checking for bad blocks in read-only mode
Testing with pattern 0x00: done
Pass completed, 0 bad blocks found. (0/0/0 errors)

real    137m50.213s
user    5m19.287s
sys     4m49.803s

에서헤네스:

time dd if=/dev/sda status=progress bs=4M | tr --squeeze-repeats "\000" "D"

1000156954624 bytes (1.0 TB, 931 GiB) copied, 8269.01 s, 121 MB/s
238467+1 records in
238467+1 records out
1000204886016 bytes (1.0 TB, 932 GiB) copied, 8269.65 s, 121 MB/s
D
real    137m49.868s
user    27m5.841s
sys     28m3.609s

에서단발1 :

time iszero < /dev/sda

1000204886016 bytes processed
0 nonzero characters encountered.

real    137m49.400s
user    15m9.189s
sys     3m28.042s

테스트된 도구 중 가장 빠른 도구라도 137분(2시간 16분)에 도달하는 것으로 보이는 반면, 디스크 전체 지우기는 평균 2시간 30분에 불과합니다.

이것이 제가 이 질문을 하게 된 이유입니다. 그러한 도구가 다음과 같은 것이 가능할 것 같습니다.적어도 절반디스크는 읽기만 하고 쓰기는 필요하지 않다는 점을 고려하여 드라이브를 지우는 데 걸리는 속도입니다.

위에 대한 대안적이고 더 빠른 솔루션이 존재합니까?

이상적인 세계에서 내가 찾고 있는 솔루션은 Bob의 C++ 프로그램처럼 전체 디스크를 읽고 발견된 0이 아닌 문자를 인쇄하는 것입니다. 이렇게 하면 전체 디스크가 아닌 0이 아닌 바이트를 선택적으로 지울 수 있습니다. 그러나 도구가 디스크를 읽는 속도가 매우 빠르면 이는 엄격한 요구 사항이 아닙니다.


1. 이것은 Bob이 작성한 C++ 프로그램으로, 버퍼 크기는 4194304(4MiB)로 증가하고 다음으로 컴파일됩니다.

g++ -Wl,--stack,16777216 -O3 -march=native -o iszero iszero.cpp

답변1

자기 하드 디스크의 읽기 및 쓰기 속도는 거의 동일합니다. 테이프 드라이브, RAM, CD-/DVD-/BD-R, 심지어 플로피 디스크도 마찬가지입니다. 회전하는 미디어의 경우 데이터가 헤드(또는 광학 드라이브용 레이저 어셈블리) 아래에서 이동하는 속도에 따라 결정됩니다. 읽기와 쓰기가 동일한 속도로 진행되지 않으면 읽기에서 쓰기로, 다시 읽기로 변경하려면 미디어를 회전시키거나 줄여야 합니다.

쓰기보다 읽기가 훨씬 빠른 것은 플래시 메모리입니다.

관련 정보