저는 Linux 시스템을 KVM 호스트로 실행하고 있으며 이전 PC의 물리적 디스크를 실행하는 가상 머신을 생성했습니다(--import 사용). 디스크에는 여러 운영 체제를 이중 부팅하기 위한 여러 파티션, 스크래치 파티션 및 일부 비디오 데이터가 있습니다. 제가 정말로 가상화하고 싶은 것은 이 디스크의 Linux 시스템입니다. 전체 디스크를 이미지화하는 방법을 이해하고 있다고 생각하지만 실제로 필요한 것은 MBR, 스크래치 영역, / 및 /boot를 저장할 파티션뿐입니다. 가상화를 위해 특정 파티션만 이미지로 "추출"하는 방법이 있습니까? 관심 있는 파티션을 임시로 빈 디스크에 복사하고 grub을 설치한 후 가상화할 생각입니다. 하지만 내가 원하는 것을 달성하는 더 쉬운 방법이 있을까요?
감사합니다,
볼프강
답변1
기존 PC 시스템이 포함된 디스크가 KVM 호스트에 물리적으로 연결되어 있다고 가정하면 다음을 수행할 수 있습니다.
적절한 크기의 디스크 이미지 파일과 좋은 복구 CD가 포함된 ISO를 사용하여 가상 머신을 사용
virsh
하거나 생성합니다(저는virt-manager
크론질라또는갈라진이런 일을 위해. 어떤 좋은 "실시간" 시스템이라도 가능합니다. 최고아니요배포판의 설치 프로그램 ISO를 사용하세요.하다아니요물리적 하드 디스크가 VM에 연결되지 않았습니다.
ISO 이미지를 사용하여 시스템을 부팅합니다. 필요에 따라 가상 디스크(가상 머신 내부)를
/dev/vda
분할하고 포맷합니다 ./target
(및 다른 파티션이 있는 경우 아래에/target
) 로 마운트합니다 .KVM 호스트에서 명령을 사용하여 기존 시스템이 포함된 물리적 디스크를 VM에 연결합니다
virsh attach-disk
. 질문에 대략적인 명령줄을 제공하기에는 세부 정보가 충분하지 않지만virsh help attach-disk
옵션 요약을 얻으려면 실행하세요. 결국 다음과 같이 보일 것입니다.virsh attach-disk vmname /dev/sdX /dev/vdb --targetbus sata
/dev/sdX
물리적 디스크는 어디에 있고,/dev/vdb
가상 머신에 표시되는 장치는 어디에 있으며, 대상 버스는 sata, scsi 또는 심지어 virtio가 될 것입니다.가상 머신으로 돌아가서 가상화하려는 운영 체제 파티션
/source
과 해당 파티션 아래의 다른 파티션을 마운트합니다.mount -o ro /dev/vdbN /target/XXXXX
오타/오류를 방지 하려면 모두 읽기 전용으로 설치하세요 .rsync -a /source/ /target
(테일게이팅이 중요/
합니다/source/
)umount
아래의 모든 것/source
. 더 이상 필요하지 않습니다.for i in proc dev sys dev/pts ; do mount -o bind /$i /target/$i done
이렇게 하면 모든 시스템 의사 파일 시스템 뿐만 아니라 또는
grub-install
와 같은 다른 도구 에 필요한 모든 시스템 의사 파일 시스템 도 보장됩니다 .lsblk
blkid
chroot
chroot /target
/etc/fstab
새 블록 장치 이름(또는 레이블 또는 UUID)을 사용하도록 마운트 항목을 조정하려면 편집하세요 .여기에서 네트워크 구성과 같은 다른 사항을 변경하거나 나중에 기본 시스템이 실행될 때까지 이러한 사항을 남겨 둘 수도 있습니다. 처음에 일이 제대로 진행되지 않아 다시 시도해야 하는 경우를 대비해 주요 변경 사항의 사본을 보관하는 것이 좋습니다. 또는 변경한 내용을 적어 다시 시작해야 할 경우 수행해야 할 작업을 알 수 있습니다.
grub-install /dev/vda
exit
# chroot를 종료하고 복구 CD 이미지의 쉘로 돌아갑니다.for i in proc dev/pts dev proc sys; do umount /target/$i ; done
umount
아래의 모든 것/target
KVM 호스트에서는 분리된 추가 디스크를 사용합니다
virsh detach-disk
.
이제 가상 머신을 다시 시작할 수 있습니다. ISO 이미지 가상 "CD-ROM" 대신 하드 디스크에서 부팅하도록 지시해야 할 수도 있습니다.