나는 다음과 같은 상황에 처해 있습니다.
SSH를 통해 실행 중인 CentOS 가상 머신의 디스크(sda, sdb)를 "복제"해야 합니다(다음 단계에 따라 이 작업을 수행했습니다).이 가이드) VirtualBox와 같은 곳에 배포하세요.
시도해 보았지만 불행하게도 sda 및 sdb의 원시 이미지를 가져오고 VBoxManage를 사용하여 VHD로 변환한 후 이를 새 VM에 추가하고 부팅 시 "부팅 가능한 미디어 없음" 메시지가 표시되었습니다.
의견 있으십니까?
자동 복구를 위해 CentOS 라이브 CD를 사용해 보았지만 복구 가능한 디스크를 찾지 못했습니다. 또한 정보를 얻기 위해 fdisk를 사용해 보았지만 안타깝게도 파티션을 읽을 수 없는 것 같습니다.
도와주셔서 감사합니다!
답변1
네트워크 액세스를 통해 Live CD에서 부팅할 수 있으면 다음을 수행할 수 있습니다.
VirtualBox VM에서 실행되는 Live CD에서 루트 셸 가져오기
필요에 따라 가상 디스크를 분할하고 포맷합니다. LVM 도구가 Live CD에 있으면 LVM을 사용할 수도 있습니다.
달리기
mkdir -p /target
/target에 원하는 rootfs를 마운트하고 마운트 지점(예: /target/home, /target/var 등)에 대한 디렉터리를 생성하고 적절한 파티션을 마운트합니다.
cd /target
rsync -a --exclude proc/** --exclude sys/** --exclude dev/** root@remoteVM:/ ./
(rsync 명령은 미세 조정이 필요할 수 있습니다. --dry-run
제대로 될 때까지 옵션을 사용하여 실행하세요)
for i in dev dev/pts proc sys ; do mount -o bind /$i /target/$i ; done
chroot /target
./etc/fstab
/etc/default/grub
필요에 따라 새 시스템에 맞게 편집합니다 .update-grub
exit
/target 및 그 아래의 모든 항목을 마운트 해제합니다(위의 바인드 마운트 포함).
재시작.
또는 를 rsync
사용하여 tar
원격 가상 머신의 파일 시스템을 백업하고 Live CD에서 얻을 수 있는 위치에 tar.gz 파일을 배치할 수 있습니다. 백업에서 /proc, /dev 및 /sys 디렉터리를 제외합니다.
참고: mysql, postgres 또는 db 파일이나 기타 일반 텍스트 파일에 쓰는 모든 것을 실행하는 경우 rsync
데이터베이스 백업을 실행해야 합니다. 모든 데이터베이스를 텍스트로 덤프하는 것도 좋은 생각입니다.
rsync 중에 일반 텍스트 파일(예: 로그 파일)에 쓰는 것은 rsync를 실행한 후 발생한 로그 항목을 잃어도 괜찮다면 그렇게 위험하지 않습니다. 적어도 파일이 손상될 가능성은 없습니다. .
systemd의 로그는 바이너리입니다. 따라서 systemd를 실행 중인 경우 손상을 방지하려면 로깅을 꺼야 합니다. 시스템을 종료하지 않고도 이것이 가능한지 모르겠습니다.