1Tb HDD를 1Tb SSD로 복제하는 지침을 따르려고 노력해 왔습니다.여기.
dd(매우 느림)와 cat(훨씬 빠름)을 사용하여 몇 번 복제를 시도했지만 체크섬을 보면 전혀 일치하지 않습니다.
나는 다음 코드를 사용했다여기 sudo sha1sum /dev/sdX
드라이브는 암호화되지 않은 부팅 파티션으로 설정되고 dmcrypt/luks를 사용하여 암호화된 3개의 추가 파티션으로 설정됩니다.
모든 작업은 두 개의 드라이브를 마운트하지 않은 상태에서 LiveCD에서 수행됩니다.
테스트(체크섬 불일치를 발견한 후)에서 중복 드라이브가 제대로 실행되는 것처럼 보였지만 뭔가 누락되었거나 손상된 것 같습니다.
그래서 내 질문은 다음과 같습니다
동일한 크기의 드라이브에서 체크섬 불일치의 원인은 무엇입니까?
둘째, 암호화가 영향을 미칠까요? 부분적으로 암호화된 장치에서 체크섬을 수행하는 방법은 무엇입니까?
답변1
디스크 이미지 해시 실행의 문제점은 1비트 측정항목이므로 복사본이 바이트 단위로 완벽한지 여부만 알려준다는 것입니다. 특히 파일 시스템이 포함된 디스크 이미지의 경우 바이트 단위로 표시할 이유가 거의 없습니다. 직접 미러링 후에도 사소한 실수라도 파티션 작업, 파일 시스템 마운트 또는 기타 이유로 인한 변경을 포함하여 디스크에 대한 모든 변경 사항이 손상될 수 있으므로 오류가 발생할 수 있습니다.
더 유용한 것은 관련된 파일 시스템을 마운트한 다음 다음과 같은 작업을 수행하는 것입니다 cd /mnt/mountpoint; find . -type f -exec sha256sum {} \+ >~/checksums
. 그런 다음 두 번째 디스크를 마운트하고 sha256sum -c ~/checksums
. 그러면 어떤 파일(있는 경우)이 변경되었는지 알려줍니다. (대부분 파일이 변경되지 않았고 디스크의 변경 사항이 FS 메타데이터나 파티션 경계 또는 실제로 중요하지 않은 다른 항목에 있었을 가능성이 높습니다.)
답변2
두 입력이 동일한 경우에만 동일한 암호화 체크섬을 갖습니다. 정의에 따르면 동일한 입력은 길이가 동일해야 합니다. 가지다에 대한같은 길이로는 충분하지 않으며 정확히 같은 길이여야 합니다.
실제로 "1TB" HDD의 용량은 1000 4 = 1,000,000,000,000바이트에 매우 가깝습니다. "1TB" SSD는 일반적으로 2 = 1024 4 = 1,099,511,627,776바이트에 가깝습니다. 따라서 SSD가 HDD보다 약간 크므로 사본은 SSD의 내용 대부분을 포함하지만 마지막에는 사용되지 않은 공간이 일부 남습니다. SSD의 체크섬을 계산할 때는 사용되지 않은 공간을 포함한 전체 콘텐츠를 포함합니다.
하드 드라이브의 크기를 확인하여 SSD에 있는 데이터의 체크섬을 계산할 수 있으며, 이를 통해 fdisk /dev/sdh
알 수 있습니다( /dev/sdh
HDD라고 가정). 크기도 있지만 /proc/partitions
kB 단위이며 크기가 1kB의 배수가 아닌지 여부는 표시되지 않습니다. 해당 크기의 모든 하드 드라이브는 4kB의 배수이므로 괜찮을 것입니다. 그런 다음 실행하여 </dev/sdd head -c 1000196757504 | sha1sum
( /dev/sdd
SSD의 크기가 1000196757504라고 가정) 복사본의 체크섬을 계산할 수 있습니다.
그러나 이러한 체크섬을 계산하는 것은 그다지 유용하지 않습니다. 복사 과정에서 오류가 발생하면 cat
알려드립니다. 디스크를 비교하는 것은 복사하려는 내용을 복사했는지 확인하는 데 유용하지만 파티션을 마운트하는 것도 동일한 목적으로 사용됩니다.
파티션이 마운트되면 마운트가 마지막 마운트 날짜와 같은 일부 메타데이터를 파일 시스템에 기록하므로 내용이 달라집니다. 읽기 전용 마운트라도 실제로 장치를 수정할 수 있으며, 특히 저널링 파일 시스템에서 로그를 재생하는 경우 더욱 그렇습니다.