2014-10-13 2 views
1

나는과 같이 새 하드 디스크를 제로화하고 있습니다 :티가 파일에 들어 가지 않은 데이터를 전달하지 않습니까?

pv /dev/zero | tee /dev/sdb | sha1sum - 

아이디어는 내가 디스크를 제로 동시에 그러나 많은 0을 작성있어의 체크섬을 계산하는 것입니다. 그런 다음 블록 장치를 sha1sum하고 원래 내가 작성한 데이터와 일치하는지 확인합니다.

"티"가 장치의 공간을 다 쓰고 종료 될 때 어떤 일이 발생합니까? 블록 장치가 정확하게 1 백만 바이트라고 가정하십시오. 티는 분명히 100 만 바이트로 채울 것이지만 정확히 1 바이트를 sha1sum으로 전달할 것인가? 그것은 가치가 무엇인지에 대한

답변

0

, 나는 간접적으로 조금이라도 같은 일을하는 다른 방법을 생각 : ("로그"에 캡처)

pv /dev/zero | dd bs=100M of=/dev/sdb 2> log 

DD의 보고서에 기록 된 바이트의 정확한 수를 포함해야합니다, 이것을 사용하여 sha1sum을 계산할 수 있습니다 (또는 블록 장치를 생성하여 정확히 0이 많이 생성 된 스트림과 비교할 수 있습니다).

(학사 = DD의 기본 블록 크기 내 사용의 경우 성능이 좋은 것으로하지 판명 512 바이트이기 때문에 100M입니다) 원래의 질문에

2

답변 :

아니, tee은 멈추지 않을 것입니다 인수에 지정된 파일에 대한 쓰기가 실패하는 지점에서 정확하게 stdout에 기록합니다.

그러나 나는별로 중요하지 않다. 목표는 디스크가 얼마나 큰지 걱정하지 않고 전체 디스크가 0으로 겹쳐 쓰여지도록하는 것입니다. 따라서 디스크를 읽고 모든 블록을 0 블록으로 비교하는 것으로 충분할 것입니다. cmp /dev/sdb /dev/zero을 사용하면됩니다. "EOF on/dev/sdb"라고하면 모든 바이트는 0입니다.

관련 문제