本地KVM(Kernel-based Virtual Machine)云能夠為企業提供快速創建虛擬機的安全環境,非常類似于傳統云,但是成本卻大幅度降低。
私有云通常被認為是快速、高效交付大規模虛擬機的最佳實踐,但并非是唯一選擇。對于那些想要部署小規模虛擬機的企業來說,本地KVM云也許會是更好的選擇。這篇文章中會進一步分析如何在不依賴于公有云或者昂貴云軟件的情況下運行類似云環境。
如果企業正在尋找一種部署虛擬機的簡單方式,首先應該考慮如何為將要使用的磁盤鏡像創建模板。可以使用KVM或者任何其他虛擬化軟件,也可以使用類似于virt-manager的工具。
在下面的實例當中,假設管理員已經創建了這樣的鏡像文件,也會使用一些由VMware Fusion創建的虛擬機,這樣能夠更好地理解轉換過程中面臨的挑戰。
創建兼容虛擬機文件
當在VMware中創建虛擬機文件時,必須首先確保這些文件能夠和其他基礎架構相互兼容。如果只使用VMware的hypervisor,這并不存在問題,但是很多企業還會使用KVM。確保虛擬機兼容性的方式之一就是將虛擬機導出為OVF(Open Virtualization Format)格式。這種格式類似于zip壓縮文件,其優勢在于能夠兼容任何現有的虛擬化軟件或者hypervisor。
在虛擬機當中通常能夠找到一個用于描述虛擬機硬件的OVF文件,以及至少一個虛擬機磁盤文件(VMDK),也就是虛擬磁盤自身。在開始使用KVM云之前必須導入VMDK文件。可以在Linux Sehll當中使用下面的命令完成導入操作:
qemu-img convert -O qcow2 vmdisk.vmdk vmdisk.qcow2
創建虛擬機
在運行上面的命令之后,將會 產生和KVM兼容的磁盤文件。下一步是基于磁盤文件創建新的虛擬機。這里可以使用virt-install命令,后面的參數信息指定用戶希望分配的硬件配置。最終命令應該如下所示:
virt-install -n server1 --disk=/var/lib/libvirt/images/server1.qcow2 --ram 1024 vcpus 1 --connect qemu:///system --import --noautoconsole
這條命令將會基于存儲在目錄"/var/lib/libvirt/images"當中的qcow2文件創建一臺新的虛擬機。這時,你就可以開始使用虛擬機了。
為虛擬機分配新的硬件
導入虛擬機之后,可能還需要為其添加新的硬件。為了完成這項任務,可以使用virsh命令和virsh管理層(和libvird進行通信)直接進行交互,假如需要為虛擬機添加一個名稱為server1的網卡,那么應該使用下面的命令:
virsh attach-interface --domain server1 --type network --source default --model virtio --mac 52:54:00:00:11:11 --config --live
這條命令可以提供一塊使用virtio驅動的新網卡,智能訪問網絡硬件。Virtio還能夠更改配置文件,將新的接口加入運行配置當中,這意味著無需重啟就能夠使用新添加的硬件了。
還可以使用類似方式為虛擬機添加新的磁盤設備。在這樣做之前,需要首先創建存儲設備。為了定義磁盤文件,可以使用dd命令首先創建一個稀疏文件(sparse file)。
使用如下命令創建一個1GB的稀疏文件:
dd if=/dev/zero of=/var/lib/libvirt/images/1Gfile.img bs=1M seek=1024 count=0
之后使用如下命令將設備連接到虛擬機:
virsh attach-diks myvm /var/lib/libvirt/images/1Gfile.img vdb --config --live
這條命令會將虛擬磁盤——名稱為“/dev/vdb”——添加到虛擬機當中。
在一臺常見Linux KVM主機當中管理虛擬化環境可以參考上述操作,用戶還可以使用Linux命令部署自己的私有KVM云,并且基于模板文件輕松部署和更改虛擬機。