앞으로 몇 달 안에 많은 디스크를 제로화해야 할 것입니다. 각 드라이브를 지운 후 드라이브가 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, 심지어 플로피 디스크도 마찬가지입니다. 회전하는 미디어의 경우 데이터가 헤드(또는 광학 드라이브용 레이저 어셈블리) 아래에서 이동하는 속도에 따라 결정됩니다. 읽기와 쓰기가 동일한 속도로 진행되지 않으면 읽기에서 쓰기로, 다시 읽기로 변경하려면 미디어를 회전시키거나 줄여야 합니다.
쓰기보다 읽기가 훨씬 빠른 것은 플래시 메모리입니다.