无法访问 Amazon Linux 2 KVM 映像上的控制台或 SSH

无法访问 Amazon Linux 2 KVM 映像上的控制台或 SSH

我正在尝试在本地环境中的 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-virtual-machine.html。使用这两个不同的文件时我没有发现任何区别。

但这似乎不起作用,我不知道该如何继续。

  • 我无法运行virsh console myvmname,因为它卡在了Escape character is ^](回车键没有任何作用)。在 CentOS 客户机上,我可以运行virsh console myvmname,只需按一下回车键,就可以按预期连接
  • 如果我运行virsh net-dhcp-leases default,则没有租约 - 因此我没有可以尝试 SSH 连接的 IP 地址
  • 日志/var/log/libvirt/qemu显示没有任何错误;失败的 AL2 日志看起来与正在运行的 CentOS 客户机日志完全相同。

我也尝试过复制这个过程确切地按照之前的亚马逊链接所建议的,包括genisoimageseed.iso文件一起使用等,但这似乎没有什么区别。

我如何才能访问该虚拟机,或者至少尝试找出问题所在?启动日志是理想的选择。

答案1

我偶然发现了这里的修复方法:https://github.com/giovtorres/kvm-install-vm/blob/master/kvm-install-vm#L630

基本上,我需要使用qemu-img resize而不是qemu-img create

if [[ $al2 == "Y" ]]; then
    qemu-img resize $VM.qcow2 40G &>> ${VM}.log

    echo "+++ Creating CD-ROM containing cloud init data"
    genisoimage -output $VM-cidata.iso \
                -volid cidata \
                -joliet -r user-data meta-data &>> ${VM}.log
else
    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

    echo "+++ Creating CD-ROM containing cloud init data"
    mkisofs -o $VM-cidata.iso -V cidata -J -r user-data meta-data
fi

相关内容