dd는 어떤 종류의 유효성 검사도 수행합니까?

dd는 어떤 종류의 유효성 검사도 수행합니까?

저는 dd기존 하드 드라이브에서 새 하드 드라이브로 데이터를 복사하는 데 사용합니다. 데이터의 무결성이 안전한지 확인하고 싶습니다.

이와 관련하여답변, 자일스가 말했다

[dd]가 성공적으로 종료되면 하드웨어 오류가 아닌 이상 백업이 올바른 것입니다.

이것이 정확히 무엇을 의미하나요? dd일종의 내장 유효성 검사가 있나요 ?

rsync를 사용하려면 --checksum두 번째 패스를 실행하여 확인해야 합니다. 이 편집증은 정당합니까?

답변1

dd또는 다른 응용 프로그램에는 생각하는 것처럼 "어떤 종류의 내장 유효성 검사"가 없습니다. 기록된 내용과 비교하기 위해 저장 매체에서 데이터를 다시 읽지 않습니다. 그것이 운영체제의 역할이다.

애플리케이션에서 하드웨어에 대한 읽기 확인을 수행하는 것은 사실상 불가능합니다. 어떤 경우에는 효과가 있지만 대부분의 경우 효과가 없습니다. 애플리케이션은 방금 작성된 내용을 다시 읽을 수 있습니다.저장매체에 직접 쓰는 경우, 그러나 이는 일반적으로 메모리 캐시에서 다시 읽혀지므로 유용한 보장을 제공하지 않습니다. 존재하다당신이 인용한 예dd파이프에 쓰고 있으며, 이 경우 다음 데이터에 어떤 일이 발생하는지 제어할 수 없습니다. rsync 예제에서 두 번째 패스 rsync --checksum는 의미가 없습니다. 이론적으로는 오류를 포착하지만 실제로는 오류가 발생하면 두 번째 패스에서 오류를 보고하지 않을 수 있으므로 실제로 노력을 낭비하는 것입니다. 유용한 보장이 제공되지 않습니다.

그러나 신청은하다데이터에 무슨 일이 일어났는지 확인합니다. 즉, 운영 체제가 데이터에 대한 책임을 수락했는지 확인합니다. 모든 시스템 호출은 오류 상태를 반환합니다. 시스템 호출이 오류 상태를 반환하는 경우 응용 프로그램은 일반적으로 오류 메시지를 표시하고 0이 아닌 종료 상태를 반환하여 사용자에게 오류를 전파해야 합니다.

이는 dd예외입니다. 명령줄 인수에 따라dd일부 오류는 무시될 수 있습니다.. 이는 매우 특이한 경우입니다. dd이 속성을 사용하는 유일한 공통 명령입니다. 손상 위험이 없도록 cat대신 사용하세요 .dd그게 더 빠를지도 몰라.

데이터 복제 체인에서는 두 가지 유형의 오류가 발생할 수 있습니다.

  • 손상: 전송 중에 비트가 뒤집혔습니다. 이런 일이 발생하면 프로그래밍 오류나 하드웨어 버그로 인해 다시 읽을 때 동일한 손상이 발생할 가능성이 높기 때문에 애플리케이션 수준에서 이를 확인할 방법이 없습니다. 그러한 손상이 발생하지 않았는지 확인하는 유일한 유용한 방법은 미디어를 물리적으로 연결 해제하고 다시 시도하는 것입니다. RAM에 문제가 있는 경우 가급적 다른 컴퓨터에서 시도하는 것이 좋습니다.
  • 잘림: 복사된 데이터는 모두 올바르게 복사되지만 일부 데이터는 전혀 복사되지 않습니다. 이것명령의 복잡성에 따라 확인해 볼 가치가 있는 경우도 있습니다. 이를 위해 데이터를 읽을 필요는 없습니다. 크기만 확인하면 됩니다.

답변2

아니요, dd명시적인 검증은 수행되지 않습니다. 법의학적으로 검증된 디스크 복사본 또는 그 일부가 필요하거나 필요한 경우 dcfldd미국 국방부 컴퓨터 법의학 연구소에서 개발한 향상된 버전을 사용하십시오.dd

답변3

"확실"할 수 있는 유일한 방법은 추가 읽기 및 비교 프로세스를 수행하는 것입니다(캐시 삭제 후).

그 외에는 dd읽기 및 쓰기 오류가 다른 모든 프로그램과 동일한 방식으로 감지됩니다. 드라이브(및 관련된 기타 구성 요소)가 실제로 드라이브에 데이터를 쓰지 않고 자동으로 데이터를 받아들이는 오류를 보고하면 작동합니다. 당신은 운이 좋지 않습니다.

이 편집증은 정당합니까?

하드웨어의 신뢰성을 신뢰할 수 없으면 상황이 복잡해집니다.

답변4

에서 man dd:

완료되면 dd는 전체 및 부분 입력 및 출력 블록, 잘린 입력 레코드 및 홀수 길이 바이트 스왑 블록의 수를 표준 오류에 표시합니다.

부분 입력 청크는 입력 청크 크기보다 작은 입력 청크를 읽는 것입니다. 부분 출력 블록은 출력 블록 크기보다 작은 출력 블록에 기록됩니다. 테이프 장치의 부분 출력 블록은 치명적인 오류로 처리됩니다. 그렇지 않으면 블록의 나머지 부분이 기록됩니다. 문자 장치의 일부 출력 블록은 경고 메시지를 생성합니다.

dd블록이 복사될 때마다 입력/출력 블록 크기가 일치하는지 확인됩니다. 그렇지 않은 경우 noerror경고 또는 치명적인 오류와 함께 오류( override 사용)를 처리합니다. 그렇기 때문에 dd거의 항상 작동합니다.

그러나 디스크 무결성의 수동 확인을 대체하지는 않습니다. 이 정보가 귀하에게 가치가 있다면 그렇습니다.당신의 편집증은 정당합니다dd.완료되면 수동 확인을 실행합니다.

관련 정보