通過對 qemu-kvm、libvirt 的學習,總結三種創建虛擬機的方式:
(1)通過 qemu-kvm 創建
(2)通過 virt-install 創建
(3)通過 virt-manager 創建
在使用這三種創建虛擬機前提是 宿主機必須支持 cpu 的硬件虛擬化技術(Intel 是 vmx,AMD 是svm),通過下面方式進行查看是否支持:
[root@192.168.118.14 ~]#lscpu | egrep Virtualization Virtualization: VT-x Virtualization type: full
通過上面查看,宿主機支持 VT-x 虛擬化技術
創建網橋網絡:
[root@192.168.118.14 ~]#yum install libvirt -y [root@192.168.118.14 ~]#mv /etc/libvirt/qemu/networks/default.xml /tmp/ [root@192.168.118.14 ~]#systemctl stop NetworkManager ; systemctl start libvirtd # 創建網橋設備:br0 [root@192.168.118.14 ~]#virsh iface-bridge eth0 br0
1. qemu-kvm 創建虛擬機
在 qemu-kvm 創建虛擬機中,又分為:
(1) 直接啟動虛擬磁盤文件為虛擬機
(2)通過iso鏡像文件安裝虛擬機
(1)通過虛擬磁盤文件直接啟動的方式
[root@192.168.118.14 ~]#yum install qemu-kvm -y [root@192.168.118.14 ~]#ln -vs /usr/libexec/qemu-kvm /usr/bin/ [root@192.168.118.14 ~]#mkdir /images [root@192.168.118.14 ~]#cd /images/ [root@192.168.118.14 /images]#wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-i386-disk.img # 編寫橋接使用的腳本 [root@192.168.118.14 ~]#cat /etc/qemu-ifup #!/bin/bash # BRIDGE=br0 if [ -n $1 ]; then ifconfig $1 up brctl addif $BRIDGE $1 [ $? -eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified." exit 1 fi [root@192.168.118.14 /images]#qemu-kvm -cpu host -smp 1 -m 512m -drive file=/images/cirros-0.3.5-i386-disk.img,if=virtio,cache=writeback \ -net nic,model=virtio,macaddr=52:54:00:bb:d2:88 -net tap,ifname=vnet0.0,script=/etc/qemu-ifup -daemonize 說明: -name 虛擬機名稱 -cpu 執行虛擬機cpu類型,可通過 -cpu ? 查看支持的cpu類型 -smp 虛擬機cpu數,支持多核心多線程設置 -smp n[,scores=scores][,threads=threads][,sockets=sockets] -drive 指定虛擬磁盤文件屬性設置 file: 指定具體虛擬磁盤文件目錄 if: 設置虛擬磁盤文件類型,virtio 為半虛擬化類型 cache: 虛擬磁盤文件屬性,是回寫(writeback) 還是 透寫(writethrough) -nographic 設置虛擬機工作方式 不寫直接在前台執行,Ctrl + C 會終止虛擬機運行 -nographic 直接命令行顯示在控制端 -daemonize 后台執行虛擬機進程 /etc/qemu-ifup 腳本: #!/bin/bash # BRIDGE=br0 if [ -n $1 ]; then ip link set $1 up sleep 1 brctl addif $BRIDGE $1 [ $? -eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified." exit 1 fi
(2) 通過 iso 文件安裝虛擬機
# 自行准備 iso 鏡像文件 [root@192.168.118.14 ~]#ls /mnt/iso/ CentOS-7-x86_64-DVD-1511.iso # 安裝 vnc 客戶端 和 x11 需要的插件 [root@192.168.118.14 ~]#yum install tigervnc xorg-x11-xauth -y [root@192.168.118.14 ~]#qemu-img create -f qcow2 -o size=20G,preallocation=metadata /images/Centos7.qcow2 [root@192.168.118.14 ~]#qemu-kvm -name 'centos7' -cpu host -smp 1 -m 1024m -drive file=/images/Centos7.qcow2 -cdrom /mnt/iso/CentOS-7-x86_64-DVD-1511.iso -daemonize # 如果這里召喚不出界面,建議重新開啟一個終端執行 [root@192.168.118.14 ~]#vncviewer :5900
如圖:
2. virt-install 創建虛擬機
在使用 virt-install 創建虛擬機的時候,首先把一些要使用的程序包安裝:
yum install virt-viewer dejavu-sans-fonts.noarch xorg-x11-xauth -y 說明: virt-viewer 用於通過vnc直接查看虛擬機控制台 dejavu-sans-fonts.noarch xorg-x11-xauth 用於通過 xmanager直接界面訪問
在 virt-install 中創建虛擬機的方式有以下幾種:
(1)直接啟動虛擬磁盤文件為虛擬機
virt-install --name test --memory 512 --disk /images/cirros-0.3.5-i386-disk.img --import --network bridge=br0 --graphics=vnc --name 虛擬機名 --memory 內存(默認單位: MB) --disk 指定虛擬磁盤文件 --import 導入虛擬磁盤文件 --network 執行網絡,不指定網絡是無法啟動的。bridge 執行網橋設備 --graphics 通過什么方式訪問界面,這里使用 vnc ,否則無法輸入。
(2)通過 iso 文件安裝虛擬機
首先通過 qemu-img 創建虛擬磁盤文件 #qemu-img create -f qcow2 -o size=20G,preallocation=metadata CentOS7.qcow2 #virt-install --name centos --vcpus 2 --memory 2048 --disk /images/CentOS7.qcow2,format=qcow2,bus=virtio,cache=writeback \ --network bridge=br0,model=virtio --cdrom /usr/local/src/CentOS-7-x86_64-Minimal-1708.iso --graphics vnc --noautoconsole --name 虛擬機名 --memory 內存(默認單位: MB) --disk 指定虛擬磁盤文件,format指定虛擬磁盤格式,bus 指定半虛擬化(virtio) cache 指定磁盤緩存(回寫) --network 執行網絡,不指定網絡是無法啟動的。bridge 執行網橋設備 model 指定虛擬網卡為半虛擬化,優化性能 --graphics 通過什么方式訪問界面,這里使用 vnc ,否則無法輸入。 --noautoconsole 不用在界面直接彈出安裝界面,后面可以通過 virt-view centos 喚出圖形界面
3. virt-manager 創建虛擬機
virt-manager 是通過圖形界面直接鼠標選擇安裝,這個不再演示。注意以下幾個點:
(1)通過命令 virt-manager 無法喚出界面,需要安裝 xorg-x11-xauth , 然后重新開啟一個會話執行 virt-manger
(2)如果 virt-manager 出現亂碼,需要安裝 dejavu-sans-mono-fonts
(3)注意防火牆和 selinux