dd 명령을 사용하여 시스템을 새 SSD로 이동

dd 명령을 사용하여 시스템을 새 SSD로 이동

질문은 아주 간단합니다. 한동안 답변을 검색했지만 정확한 답변을 얻었는지 확실하지 않습니다. 실수로 인해 내 드라이브와 데이터가 쉽게 파괴될 수 있으므로 상황을 명확히 하고 싶습니다.

/dev/sda저는 각각 약 125GB 크기의 두 개의 파티션이 있는 250GB SSD( )에서 Ubuntu를 실행하고 있습니다 . sda1은 에 마운트 /되고 sda2는 에 마운트됩니다 /home. 이제 모든 것을 새로운 1TB SSD로 옮기고(예를 들어 /dev/sdc) 각 드라이브를 500GB로 확장하고 싶습니다. 몇 가지 연구 끝에 저는 두 가지 접근 방식을 제안했습니다.

  1. dd if=/dev/sda of=/dev/sdc전체 디스크를 복제하려면 수행하십시오 . 그런 다음 두 개의 125GB 파티션과 일부 할당되지 않은 공간이 있는 부팅 가능한 디스크를 얻어야 합니다. 오른쪽? 그런 다음 gparted와 같은 것을 사용하여 sdc1 및 sdc1의 크기를 500GB로 조정해야 합니다. 크기를 조정하는 데 시간이 오래 걸릴 수 있습니다. 그렇죠?

  2. 두 번째 접근 방식은 먼저 새 드라이브를 포맷하고 500GB 파티션 두 개를 만드는 것입니다. 두 파티션을 모두 복제 dd if=/dev/sda1 of=/dev/sdc1하고 dd if=/dev/sda2 of=/dev/sdc2복제 하십시오 . 이 시점에서 이 디스크는 부팅할 수 없어야 합니다. 그렇죠? 부팅 가능하게 만들려면 부트로더를 새 부트로더에 복사해야 합니다. 필요한 것은 처음 446바이트뿐입니다. dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1그러면 나는 할 수 있다 dd if=/tmp/mbrsda.bak of=/dev/sdc bs=446 count=1. 이렇게 하여 부팅 가능하게 만들고 500GB+500GB의 파티션 테이블도 보존했습니다. 이 접근 방식을 사용하면 디스크 크기를 조정할 필요가 없습니다.

두 가지 접근 방식 모두 파일에서 UUID를 변경해야 합니다 /etc/fstab. 복제 후 먼저 새 드라이브를 마운트한 sudo mount /dev/sdc1 /mnt/다음 파일을 편집 하면 됩니다 /mnt/etc/fstab.

이 모든 것이 맞습니까?
여기에서 내 기존 드라이브를 망칠 위험이 있나요?

답변1

dd( disk estroyer라고도 함)을 사용할 때마다 d데이터가 엉망이 될 가능성이 있습니다. dd실수로 이전 드라이브 위에 새 드라이브를 쓰는 경우에 대한 보호 장치가 없습니다. 올바른 작동을 유지하는 유일한 방법은 명령을 올바르게 입력하고 소스와 대상을 혼동하지 않도록 매우 주의하는 것입니다. if=그리고 of=단지 하나의 작은 잘못 입력된 키 입력이 서로 떨어져 있을 뿐입니다!

또 다른 문제는 dd속도가 느리고 대상 SSD에 불필요한 마모를 초래한다는 것입니다. 대부분의 파티션은 일반적으로 활용도가 100%에 가깝지 않습니다. dd사용 가능한 공간이 많은 파티션을 복사하는 데 를 사용하면 해당 파티션의 모든 바이트가 복사됩니다. 실제로 할당된 데이터가 포함되지 않은 바이트도 마찬가지입니다.

내 시스템이라면 다음과 같이 할 것입니다.

  1. 나중에 새 SSD의 파티션 테이블을 설정할 때 참조할 수 있도록 기존 SSD의 파티션 테이블의 스크린샷을 찍어두세요.
  2. 새 SSD를 컴퓨터에 연결하고 기존 SSD를 분리합니다. 기존 SSD를 연결 해제된 상태로 유지하면 잠재적으로 파괴적인 작업을 수행하는 동안 귀중한 데이터를 파괴할 수 없습니다.
  3. Linux 라이브 모드에서 Ubuntu 설치 USB 썸 드라이브로 부팅합니다. 이전 시스템이 MBR을 사용하는 것처럼 들리므로 BIOS가 항상 UEFI 모드 대신 레거시/MBR 모드에서 썸드라이브를 부팅하는지 확인하세요. 내 가정이 유효하지 않은 경우 대신 BIOS가 UEFI 모드에서 썸드라이브를 부팅하는지 확인하세요. 여러 가지를 섞으면 나중에 grub을 제대로 설치하기가 훨씬 더 어려워집니다.
  4. gparted원하는 파티션 테이블로 새 SSD를 설정하고 파일 시스템을 포맷하는 데 사용됩니다 . 모든 것을 이전 SSD의 파티션 테이블과 동일하게 유지하십시오(파티션 크기 및 UUID 제외). 기존 SSD와 마찬가지로 루트 파일 시스템을 / /로 표시하는 것을 잊지 마세요 .activebootable
  5. 이제 위험한 파티션 편집 작업이 모두 완료되었으므로 컴퓨터를 안전하게 종료하고 컴퓨터에 연결된 기존 SSD를 추가할 수 있습니다.
  6. 이번에는 두 드라이브를 모두 연결하여 Linux 라이브 USB 썸 드라이브를 다시 부팅합니다. 기존 SSD에서 부팅하지 마세요. 깨끗한 복사본을 만들려면 해당 시스템을 비활성 상태로 유지해야 합니다.
  7. 부팅되면 터미널을 열고 다음 명령을 통해 작업을 시작하여 기존 SSD의 데이터를 새 SSD로 복사하세요. 를 사용하는 것과 달리 이전 파일 시스템 위에 빈 파일 시스템을 복사하여 아무것도 파괴할 수 없기 때문에 dd이 명령은 훨씬 더 오류 방지가 가능합니다. 이 경우에는 복사된 것이 없습니다! cp또한 기존 SSD를 "읽기 전용" 모드로 마운트하여 기존 SSD를 수정할 가능성을 방지할 수 있습니다.

    mkdir oldroot newroot oldhome newhome
    sudo mount -o ro /dev/sda1 oldroot
    sudo mount -o ro /dev/sda2 oldhome
    ls oldroot
    ls oldhome
    

    이전 데이터를 볼 수 있는지 확인하세요. 보이는 것이 빈 파일 시스템뿐이라면 아마도 잘못된 "/dev/sdXX" 장치를 가지고 있는 것일 수 있습니다.

    sudo mount -o noatime /dev/sdc1 newroot
    sudo mount -o noatime /dev/sdc2 newhome
    ls newroot
    ls newhome
    

    대상으로 빈 파일 시스템만 표시되는지 확인하십시오. 모든 것이 양호하다면 다음 명령을 실행하여 모든 권한/소유권/SELinux 컨텍스트 설정을 유지하면서 모든 파일을 복사하십시오.

    sudo cp -Rfax oldroot/* newroot/
    sudo cp -Rfax oldhome/* newhome/
    

    완료되면 모든 것을 마운트 해제하고 캐시된 쓰기를 영구 저장소에 동기화합니다.

    sudo umount oldroot
    sudo umount oldhome
    sudo umount newroot
    sudo umount newhome
    sync
    
  8. 이제 기존 SSD를 안전하게 종료하고 연결을 끊을 수 있으므로 새 SSD를 부팅 가능하게 만드는 동안 SSD에 있는 어떤 것도 파괴할 수 없습니다.

  9. 새 SSD만 연결된 상태에서 Linux 라이브 모드에서 USB 썸 드라이브를 사용하여 컴퓨터를 부팅합니다. 터미널을 열고 다음 명령을 통해 작업을 시작하세요.

    mkdir newroot
    sudo mount -o noatime /dev/sda1 newroot
    sudo chroot newroot /bin/bash
    mount -t devtmpfs udev /dev
    mount -t proc proc /proc
    mount -t sysfs sysfs /sys
    nano -w /etc/fstab
    

    fstab이제 UUID 번호가 새 SSD에 있는 것과 일치하도록 파일을 수정해야 합니다 . gparted파티션 테이블을 열어서 새로운 UUID가 무엇인지 알아낼 수 있습니다. 완료되면 CTRL-X를 누르고 fstab 변경 사항을 디스크에 저장합니다.

    update-grub
    grub-install /dev/sda
    

    모든 것이 제대로 작동한다면 grub을 구성하고 새 SSD의 MBR에 설치해야 합니다. grub을 설치한 후 종료하기 전에 chroot 환경 내에서 이전에 마운트한 모든 항목을 마운트 해제해야 합니다. 그렇지 않으면 Ubuntu를 종료할 때 Linux 파티션을 깔끔하게 마운트 해제하는 데 어려움을 겪게 됩니다.

    umount /sys
    umount /proc
    umount /dev
    exit
    sudo umount newroot
    sync
    

그리고 거기에 있습니다! 새 SSD가 부팅 가능하고 이제 모든 것이 좋아지기를 바랍니다.

답변2

방금 사용했어요갈라진우분투 18.04를 하나의 SATA에서 다른 SATA로 마이그레이션합니다. Gparted는 복사 및 붙여넣기 옵션이 포함된 사용하기 쉬운 GUI를 제공하며 UUID도 동일하므로 /etc/fstab새 디스크에 grub을 업데이트하거나 설치할 필요가 없습니다 . 아주 매끄러워서 밑에는 아직 확인하지 못했는데 복사-붙여넣기 과정에서e2이미지(8)실제로 호출되었습니다. 다시 한번 말씀드리지만 이 내용은 모두 제 경험을 바탕으로 한 것입니다. 정정해 주시고, 감사드립니다.

답변3

내 경험을 공유하기 위해 여기에 게시하고 게시된 질문에 답변하기 위해 이 글을 게시합니다. 그러나 내 목표는 OP에서 명시된 목표와 동일했습니다.


저는 512GB SSD에서 이중 부팅 시스템으로 시작했습니다. 여기에는 Microsoft가 예약한 EFI 파티션, Windows 시스템 파티션, Linux 시스템 파티션, Linux 홈 파티션 및 복구 파티션 등 두 개의 파티션이 포함되어 있습니다.

내 목표는 모든 것을 2TB SSD로 마이그레이션하는 것이었습니다.


Ubuntu Live-USB에서 컴퓨터를 부팅하고 dd. USB를 통해 연결할 수 있는 NVMe SSD용 소형 인클로저를 구입했습니다.

새 SSD는 포맷이나 파티션, 아무것도 없이 완전히 그대로 사용되었습니다.

복제 후 ddSSD를 교체했습니다. 즉, 컴퓨터에서 소형 SSD를 제거하고 새 SSD를 설치했습니다.

Linux는 문제 없이 부팅되었지만 Windows에서는 일부 진단/복구를 실행했지만 아무 결과도 나오지 않았습니다.

다음으로 Ubuntu Live-USB에서 시스템을 다시 부팅하고 gparted.

gparted복구를 제안한 GPT 테이블에 일부 오류가 보고되었습니다. 복구 옵션을 선택하고 기존 파티션의 크기를 조정하고 이동하는 작업을 진행했습니다. 이 모든 작업이 완료된 후 놀랍게도 Windows도 오류 없이 부팅되었습니다.


나는 이 전체 복제 작업이 그렇게 순조롭게 진행되었다는 사실에 기분 좋게 놀랐습니다.


이번 주에 다시 이중 부팅 시스템을 사용하여 다시 수행했습니다.

  • Live-USB를 사용하여 소형 SSD가 내부에 있는 컴퓨터를 시작합니다.
  • 새 SSD를 인클로저에 장착하고 연결합니다.
  • 다음을 사용하여 디스크를 복사합니다.dd
  • dd완료 되면 gpartedGPT 테이블 복구를 시작하고 파티션 크기 조정 및 이동
  • 컴퓨터를 종료하고 SSD를 교체합니다.
  • 두 OS 모두 정상적으로 부팅되었습니다.

몇 가지 참고사항:

  • 기존 SSD에 Windows 파티션이 포함된 경우 BitLocker가 제대로 비활성화되어 있는지 확인하세요.
  • dd진행 상황을 표시하는 옵션을 사용하여 실행하는 것을 잊은 경우 다음을 참조하세요.이 답변. 신호를 보내 dd작업을 방해하지 않고 진행 정보를 표시할 수 있습니다.

답변4

나는 사용할 것이다부분 이미지한 번에 하나씩 파티션을 복사합니다. 첫 번째 파티션을 복사한 후 크기를 늘리십시오. 인접한 파티션을 이동할 필요가 없기 때문에 크기 조정이 매우 빠릅니다. 그런 다음 두 번째 파티션을 복사하고 나머지 공간에 맞게 크기를 조정합니다.

이를 수행하는 가장 쉬운 방법은 다음에서 부팅하는 것입니다.시스템복구CD그 환경에서 모든 일을 하게 됩니다. 실제 CD가 필요하지 않도록 부팅 가능한 USB 드라이브를 만들 수 있습니다.

관련 정보