我正在尝试在 CentOS 7 主机上的本地环境中创建运行 Amazon Linux 2 的 KVM 来宾实例。我正在通过 SSH 进行此操作(例如,我的本地机器 -> SSH 到 CentOS 主机)。
我知道我的管理程序设置有效,因为使用以下命令,我可以创建一个具有 SSH 访问权限的 CentOS 7 来宾完全没有问题:
OS_IMG=CentOS-7-x86_64-GenericCloud.qcow2
DIR=/home/libvirt
SCRIPTS=$DIR/scripts
BOOT=$DIR/boot
IMG=$DIR/images
VM=centos-vm-test
# +++ Downloading image OS image
cd $BOOT
wget http://cloud.centos.org/centos/7/images/$OS_IMG
# +++ Creating meta/user data
cd $IMG/$VM
echo -e "instance-id: $VM\nlocal-hostname: $VM" > meta-data
cp $SCRIPTS/user-data user-data
cp $BOOT/$OS_IMG $VM.qcow2
# +++ Creating disk
export LIBGUESTFS_BACKEND=direct
qemu-img create -f qcow2 -o preallocation=metadata $VM.new.image 40G
virt-resize --quiet --expand /dev/sda1 $VM.qcow2 $VM.new.image
mv $VM.new.image $VM.qcow2
# +++ Creating CD-ROM containing cloud init data
mkisofs -o $VM-cidata.iso -V cidata -J -r user-data meta-data
# +++ Creating VM"
virt-install --import --name $VM \
--memory 4096 --vcpus 2 --cpu host \
--disk $VM.qcow2,format=qcow2,bus=virtio \
--disk $VM-cidata.iso,device=cdrom \
--network bridge=virbr0,model=virtio \
--os-type=linux \
--os-variant=centos7.0 \
--noautoconsole
在几秒钟内,我可以运行virsh net-dhcp-leases
并查看可以通过 SSH 访问的 IP 地址。
我尝试使用 Amazon Linux 2 复制此过程,使用此处找到的图像:https ://cdn.amazonlinux.com/os-images/2.0.20200304.0/kvm/
对于user-data
,我已经尝试了我的 CentOS 文件(很长,包括很多runcmd
行)和推荐的基本内容在这里找到:https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-2-虚拟机.html。使用 2 个不同的文件时,我没有看到任何区别。
然而,这似乎不起作用,我不知道如何进一步进行。
- 我无法运行
virsh console myvmname
,因为它只是卡住了Escape character is ^]
(回车键什么都不做)。在 CentOS 客户机上,我可以运行virsh console myvmname
,只需按一下返回键,就可以按预期连接 - 如果我运行
virsh net-dhcp-leases default
,则没有租约 - 所以我没有可以尝试 SSH 连接的 IP 地址 - 登录
/var/log/libvirt/qemu
显示没有错;失败的 AL2 日志看起来与工作中的 CentOS 来宾日志相同。
我还尝试完全按照之前亚马逊链接上的建议复制该过程,包括使用genisoimage
文件seed.iso
等,但这似乎没有任何区别。
我如何才能访问此 VM,或者至少尝试找出问题所在?引导日志将是理想的。
我在这里偶然发现了修复:https ://github.com/giovtorres/kvm-install-vm/blob/master/kvm-install-vm#L630
基本上,我需要使用
qemu-img resize
而不是qemu-img create
: