Kvm-Virtualization
無法在 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-虛擬機.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
: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