QEMU提供一系列的硬件模擬設備(CPU,網卡,磁盤等),客戶機指令都須要QEMU翻譯,於是性能較差。KVM是linux內核提供的虛擬化,能夠用來進行vCPU的建立與運行,虛擬內存的地址空間分配,指令執行效率較高,但缺乏IO設備的虛擬化。QEMU-KVM就是KVM與QEMU的結合,KVM負責CPU虛擬化+內存虛擬化,QEMU模擬其它IO設備。前端
安裝qemu-kvm軟件
faramita2016@linux-l9e6:~> zypper install qemu-kvm // Ubuntu系統使用apt-get install qemu-kvm
建立qcow2格式虛擬機磁盤文件
faramita2016@linux-l9e6:~> qemu-img create -f qcow2 vdisk.img 5G // 磁盤大小5G
使用debian鏡像安裝虛擬機,order=dc優先使用CD-ROW(d),後使用硬盤(c),內存默認128m,使用-m 512指定
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -cdrom debian-9.4.0.iso -hda vdisk.img -boot order=dc linux
宿主機中執行,qemu-bridge-helper增長當前用戶可執行權限,用來自動添加網絡後端tap設備
faramita2016@linux-l9e6:~> sudo chmod o+x /usr/lib/qemu-bridge-helper
宿主機中執行,-net nic爲虛擬機建立nic網卡(網絡前端),-net bridge指定宿主機中使用網橋(網絡後端)
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 // 指定網橋br0
虛擬機中執行,編輯/etc/network/interfaces,設置靜態IPshell
root@debian:~# vi /etc/network/interfaces # The primary network interface allow-hotplug ens3 #iface ens3 inet dhcp iface ens3 inet static address 10.0.0.8 netmask 255.0.0.0 gateway 10.0.0.1 hwaddress ether 52:54:00:12:34:56 // 設置mac地址,前3組不變 root@debian:~# ifup ens3 // 打開ens3網絡接口,ifdown關閉網絡接口 root@debian:~# /etc/init.d/networking restart // 重啓網絡服務
虛擬機中執行,編輯/etc/resolv.conf,設置DNS後端
root@debian:~# vi /etc/resolv.conf nameserver 8.8.8.8 // Google DNS
虛擬機中執行,編輯/etc/default/grub文件,添加console=ttyS0啓動參數網絡
root@debian:~# vi /etc/default/grub GRUB_DEFAULT=0 // 默認啓動項 GRUB_TIMEOUT=0 // 默認菜單項停留時間 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet" // 默認內核啓動參數 GRUB_CMDLINE_LINUX="console=ttyS0" // 手動添加內核啓動參數,添加console=ttyS0
虛擬機中執行,更新grub配置,並重啓性能
root@debian:~# update-grub
root@debian:~# shutdown -h now
a.宿主機中執行,添加-nographic參數建立虛擬機,當前shell前臺建立虛擬機
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -nographic
b.宿主機中執行,添加-display none -daemonize參數建立虛擬機,當前shell後臺建立虛擬機
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -display none -daemonize ui
a.建立一個快照
用qemu-img命令建立一個原始鏡像的快照
faramita2016@linux-l9e6:~> qemu-img create -f qcow2 -b vdisk.img snapshot.img
使用快照文件啓動虛擬機
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda snapshot.img -net nic -net bridge,br=br0 -nographic spa
b.使用臨時快照,添加-snapshot參數
原理:建立一個臨時快照,虛擬機啓動以後,自動刪除快照文件
faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -snapshot -nographic 翻譯