실행 중인 가상 머신의 디스크를 복제하고 VirtualBox에서 실행합니다.

실행 중인 가상 머신의 디스크를 복제하고 VirtualBox에서 실행합니다.

나는 다음과 같은 상황에 처해 있습니다.

SSH를 통해 실행 중인 CentOS 가상 머신의 디스크(sda, sdb)를 "복제"해야 합니다(다음 단계에 따라 이 작업을 수행했습니다).이 가이드) VirtualBox와 같은 곳에 배포하세요.

시도해 보았지만 불행하게도 sda 및 sdb의 원시 이미지를 가져오고 VBoxManage를 사용하여 VHD로 변환한 후 이를 새 VM에 추가하고 부팅 시 "부팅 가능한 미디어 없음" 메시지가 표시되었습니다.

의견 있으십니까?

자동 복구를 위해 CentOS 라이브 CD를 사용해 보았지만 복구 가능한 디스크를 찾지 못했습니다. 또한 정보를 얻기 위해 fdisk를 사용해 보았지만 안타깝게도 파티션을 읽을 수 없는 것 같습니다.

도와주셔서 감사합니다!

답변1

네트워크 액세스를 통해 Live CD에서 부팅할 수 있으면 다음을 수행할 수 있습니다.

  1. VirtualBox VM에서 실행되는 Live CD에서 루트 셸 가져오기

  2. 필요에 따라 가상 디스크를 분할하고 포맷합니다. LVM 도구가 Live CD에 있으면 LVM을 사용할 수도 있습니다.

  3. 달리기mkdir -p /target

  4. /target에 원하는 rootfs를 마운트하고 마운트 지점(예: /target/home, /target/var 등)에 대한 디렉터리를 생성하고 적절한 파티션을 마운트합니다.

  5. cd /target

  6. rsync -a --exclude proc/** --exclude sys/** --exclude dev/** root@remoteVM:/ ./

(rsync 명령은 미세 조정이 필요할 수 있습니다. --dry-run제대로 될 때까지 옵션을 사용하여 실행하세요)

  1. for i in dev dev/pts proc sys ; do mount -o bind /$i /target/$i ; done

  2. chroot /target.

  3. /etc/fstab/etc/default/grub필요에 따라 새 시스템에 맞게 편집합니다 .

  4. update-grub

  5. exit

  6. /target 및 그 아래의 모든 항목을 마운트 해제합니다(위의 바인드 마운트 포함).

  7. 재시작.

또는 를 rsync사용하여 tar원격 가상 머신의 파일 시스템을 백업하고 Live CD에서 얻을 수 있는 위치에 tar.gz 파일을 배치할 수 있습니다. 백업에서 /proc, /dev 및 /sys 디렉터리를 제외합니다.

참고: mysql, postgres 또는 db 파일이나 기타 일반 텍스트 파일에 쓰는 모든 것을 실행하는 경우 rsync데이터베이스 백업을 실행해야 합니다. 모든 데이터베이스를 텍스트로 덤프하는 것도 좋은 생각입니다.

rsync 중에 일반 텍스트 파일(예: 로그 파일)에 쓰는 것은 rsync를 실행한 후 발생한 로그 항목을 잃어도 괜찮다면 그렇게 위험하지 않습니다. 적어도 파일이 손상될 가능성은 없습니다. .

systemd의 로그는 바이너리입니다. 따라서 systemd를 실행 중인 경우 손상을 방지하려면 로깅을 꺼야 합니다. 시스템을 종료하지 않고도 이것이 가능한지 모르겠습니다.

관련 정보