安裝 QEMU
sudo apt-get install qemu-kvm \
qemu \
virt-manager \
virt-viewer \
libvirt-daemon-system \
libvirt-clients \
libvirt-daemon-driver-lxc
基本操作
建立虛擬磁碟
qemu-img create -f qcow2 hw1-ubuntu.qcow2 20G
掛載開機碟、開機
掛載與開機
qemu-system-x86_64 -smp 4,sockets=1,cores=4,threads=1 \
-cpu host \
-m 2G \
-boot d \
-cdrom ./ubuntu-16.04.6-desktop-amd64.iso \
-hda my_ubuntu.qcow2 \
-machine ubuntu,accel=kvm \
-vga virtio
- 其實可以使用
-smp 4
就好,只是不夠精確因此不建議。 - 使用
-cpu host
比較不容易因為指令集支援問題而出現警告 -boot d
在第一次開機時優先使用 CD-ROM,重開機後依照預設順序- 加速選項:
- 可以只使用
-accel
來指定:tcg
預設使用kvm
、xen
Linux 使用,可搭 virt-managerhvf
macOS 10.10+ 使用,可搭 homebrew-virt-managerhax
Windows 7+ 使用
- 可以只使用
單純開機
qemu-system-x86_64 -smp 4 \
-cpu host \
-m 2G \
-hda my_ubuntu.qcow2 \
-machine ubuntu,accel=kvm \
-vga virtio
設定
網路配置
基本觀念
QEMU 在設定網路時有三種常見參數:
-net
選項可以定義前端和後端-netdev
選項只能定義後端-nic
可以一條命令定義前端和後端(最新最推薦)
設定 NAT 模式
-nic user,model=virtio
設定橋接
-nic tap,model=virtio
-
需要先確認是否有橋接裝置,沒有的話會出現
W: /etc/qemu-ifup: no bridge for guest interface found
-
設定橋接步驟(使用 ip,當然也可用 brctl)
# 新增橋接裝置 sudo ip link add br0 type bridge # 將 enp2s0 橋接到 br0 上 sudo ip link set enp2s0 master br0 sudo ip link set br0 up # 讓 br0 連網,這樣 enp2s0 才會通 sudo dhclient br0 # 顯示目前橋接狀況 brctl show // 將 enp2s0 移除 bridge sudo ip link set enp2s0 nomaster
-
若需自訂橋接器可參考這篇
NUMA
最簡單方式(自動配置)
-smp 8,sockets=4,maxcpus=8 \
-numa node \
-numa node \
進階設定
-smp 8,sockets=4,maxcpus=8 \
-numa node,nodeid=0 \
-numa node,nodeid=1 \
-numa dist,src=0,dst=1,val=50 \
查看 NUMA 節點狀態
numactl --hardware
lstopo
、lstopo topo.pdf
詳細參數請參考官方文件
QEMU 小技巧
不知道有哪些參數?
在參數後面加上 ? 可以查詢可用的值,例如:
$ qemu-system-x86_64 -accel ? # 這參數為加速器,預設使用 tcg
Possible accelerators: kvm, xen, hax, tcg
$ qemu-system-x86_64 -machine ? # 這參數為要模擬的機器
Supported machines are:
pc-i440fx-zesty Ubuntu 17.04 PC (i440FX + PIIX, 1996)
pc-i440fx-yakkety Ubuntu 16.10 PC (i440FX + PIIX, 1996)
pc-i440fx-xenial Ubuntu 16.04 PC (i440FX + PIIX, 1996)
pc-i440fx-wily Ubuntu 15.04 PC (i440FX + PIIX, 1996)
pc-i440fx-trusty Ubuntu 14.04 PC (i440FX + PIIX, 1996)
ubuntu Ubuntu 19.10 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-eoan)
pc-i440fx-eoan Ubuntu 19.10 PC (i440FX + PIIX, 1996) (default)
pc-i440fx-eoan-hpb Ubuntu 19.10 PC (i440FX + PIIX +host-phys-bits=true, 1996)
pc-i440fx-disco Ubuntu 19.04 PC (i440FX + PIIX, 1996)
...
將固定大小磁碟配置改成動態配置
$ qemu-img convert disk1.img -O qcow2 disk1-sparse.img
The “-O” option lets you specify the output format – in your case, both the input and output would be qcow2, but qemu-img is smart enough to, by default, apply sparse technology to the output file.
減少虛擬硬碟大小(reclaim)
-
在不同系統中有不同的前置作業
- 在 Linux 中:
dd if=/dev/zero of=/mytempfile rm -f /mytempfile
- 在 Windows 中:
- 下載 SDelete
- 執行
c:\sdelete.exe -z c:
-
將客體機(guest)關機
-
最後,在 host 機器上執行
mv original_image.qcow2 original_image.qcow2_backup qemu-img convert -O qcow2 original_image.qcow2_backup original_image.qcow2
其他功能
Live migration
sudo qemu-system-x86_64 -smp 4,sockets=1,cores=4,threads=1 \
-hda my_ubuntu.qcow2 \
-m 2g \
-accel kvm \
-vga virtio \
-monitor stdio \
-incoming tcp:0:4444
甘苦談
- 在 macOS 中,使用 VirtualBox 之類的軟體裝完 Linux,再到裡面用 KVM 裝虛擬機,效果比用
hvf
好
參考
comments powered by Disqus