처음에는 제안 된 "도전"이 어려워 보일 수도 있지만, 일부 사람들이 언급 한 것처럼 실현 가능하거나 건전하지는 않지만 어려울 수도 있습니다. 더 큰 디스크에서 더 작은 디스크로 마이그레이션하기 위해 dd를 사용하는 기본 개념은 완벽하게 훌륭하며 데이터 마이그레이션에 이점이 있습니다. 물론 점유 된 데이터가 대상 디스크에 맞도록 충분한 여유 공간이 있어야합니다.
아이디어는 처음에 제안 된대로 한 번에 전체 디스크가 아닌 각 파티션을 개별적으로 편집하는 것입니다. 더 많은 작업을 수행 할 수 있습니다. 잘린 파티션을 파일 시스템 크기 조정 도구를 사용하여 안전하게 마이그레이션 할 수도 있습니다. 실제로 이러한 종류의 마이그레이션은 장치 계층을 차단하지 않고 파일 시스템 계층에서 작동하는 cp, rsync, pax 등과 같은 도구로는 쉽게 복사 할 수없는 파일 시스템 matadata 및 확장 파일 속성을 보존하기 위해 흥미 롭습니다. dd를 사용하면 SELinux 관련 문제를 피하기 위해 OS를 다시 설치하거나 FS 레이블을 다시 지정해야합니다.
다음은 비슷한 작업을 수행하기 위해 일반적으로 수행하는 작업입니다.
1) 먼저 영향을받는 파티션 내에서 잘릴 파일 시스템을 줄입니다. 이를 위해 resize2fs 도구를 사용하십시오 (ext2 / ext3 / ext4 fs에 대해 이야기하고 있다고 가정하면 다른 최신 FS에도 동일한 목적으로 크기 조정 도구가 있습니다). 명백한 이유로 파일 시스템이 파일 시스템 내에있는 파티션보다 클 수는 없지만 안전하게 작을 수 있습니다. 여기서 안전 요령은 "필요 이상"을 줄이는 것입니다. 예를 들어, 500 기가 드라이브로 마이그레이션하려는 파일 시스템이 1TB라고 가정하십시오. 이 경우 fs를 450Gig로 줄이는 것이 좋습니다 (물론 충분한 여유 공간이 있어야합니다. 즉,이 파일 시스템에서 현재 사용중인 공간이 450Gig를 초과 할 수 없음). 데이터 마이그레이션 후 50Gig의 공간 낭비가 수정됩니다.
2) 공간 제약을 고려하여 대상 디스크를 적절한 형상으로 분할하십시오.
3) 디스크 장치가 아닌 파티션 장치를 사용하여 데이터를 기록하십시오 (즉, dd if=/dev/sda# of=/dev/sdb#
대신에 각 파티션에 사용 if=/dev/sda of=/dev/sdb
). 참고 : 여기에서 sda 및 sdb는 예제 일뿐입니다. 중요 참고 : 더 큰 파티션 장치에서 더 작은 파티션 장치로 dd'd 할 때, dd는 블록 장치의 끝에 포스트 쓰기 시도에 대해 불평 할 것입니다. 파일 시스템 데이터가 해당 지점에 도달하기 전에 완전히 복사되었으므로 문제가되지 않습니다. 이러한 오류 메시지를 피하기 위해 축소 된 파일 시스템 크기와 일치하도록 사본 사용 bs=
및 count=
매개 변수 의 크기를 지정할 수 있지만, 일부 간단한 계산이 필요하지만 잘못 수행하면 데이터가 위험 할 수 있습니다.
4) 데이터를 기록한 후 resize2fs를 사용하여 대상 파티션 내의 각 파일 시스템 크기를 다시 조정하십시오. 이번에는 새 파일 시스템 크기를 지정하지 않습니다. 크기 지정없이 실행하면 resize2fs는 파일 시스템을 확장하여 허용되는 최대 크기를 차지하므로이 경우 450Gig 파일 시스템이 다시 500GB 파티션 전체를 차지하도록 다시 커지고 바이트가 낭비되지 않습니다. "필요 이상으로 줄이면"실수로 크기를 잘못 지정하여 데이터를 위험에 빠뜨리는 것을 방지 할 수 있습니다. GB 대 GiB 단위는 까다로울 수 있습니다.
보다 복잡한 작업에 대한 참고 사항 : 복사하려는 부팅 관리자가있는 경우 파티션 장치 대신 디스크 장치를 사용하여 디스크의 처음 몇 KB를 dd로 만들 수 있습니다 (예 : dd if=/dev/sda of=/dev/sdb bs=4096 count=5
)를 선택한 다음 / dev / sdb에서 지오메트리를 재구성합니다 (새 드라이브에는 유효하지 않은 지오메트리가 있지만 부트 관리자는 유효하지 않습니다). 마지막으로 한 번에 파티션을 작성하기 위해 위에서 설명한 파티션 장치를 사용하여 진행하십시오. 이런 작업을 여러 번했습니다. 최근에는 MacOSX 및 Linux 설치가 혼합 된 HDD에서 MacMini6,2의 더 작은 SDD로 업그레이드 할 때 복잡한 마이그레이션을 성공적으로 수행했습니다. 이 경우 외부 드라이브에서 Linux를 부팅하고 bootmanager를 실행하고 gdisk를 실행하여 새 디스크에서 GPT를 수정 한 다음 마지막으로 축소 된 파일 시스템을 포함하는 각 파티션을 dd했습니다. GPT 파티션 구성표는 파티션 테이블의 사본 두 개 (하나는 디스크의 시작 부분과 다른 하나는 디스크의 끝 부분)를 유지합니다. gdisk는 PT의 두 번째 사본을 찾을 수없고 파티션이 디스크 크기를 초과하기 때문에 많은 불만을 제기하지만 디스크 구조를 재정의 한 후 PT 복사 문제를 올바르게 수정합니다). 이것은 훨씬 복잡한 경우이지만, 이런 종류의 작업도 완벽하게 실현 가능하다는 것을 보여 주므로 언급 할 가치가 있습니다.
행운을 빕니다! ... 가장 중요한 것은 그러한 종류의 작업 전에 모든 중요한 데이터를 백업하는 것입니다. 실수로 복구 할 수 없을 정도로 데이터가 손상 될 수 있습니다.
그리고 내가 충분히 강조하지 않은 경우 : 마이그레이션 전에 데이터를 백업하십시오! :)
dd
최적의 블록 크기 계산을 사용 하는 것이 유용한 경우