系统要求
➜ ~ sudo egrep -c '(vmx|svm)' /proc/cpuinfo
32
➜ ~ modprobe kvm_intel nested=1
➜ ~ echo "options kvm_intel nested=1"|sudo tee -a /etc/modprobe.d/kvm.conf
➜ ~ lsmod | grep kvm
kvm_intel 487424 0
kvm 1404928 1 kvm_intel
irqbypass 12288 1 kvm
➜ ~ sudo apt install cpu-checker
➜ ~ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
安装KVM
➜ ~ sudo apt -y install qemu-kvm libvirt-daemon-system libvirt-daemon virtinst bridge-utils libosinfo-bin
➜ ~ sudo adduser dengyouf libvirt
➜ ~ sudo adduser dengyouf kvm
➜ ~ sudo virsh list --all
Id Name State
------------------------------
➜ ~ sudo systemctl enable --now libvirtd
➜ ~ sudo cat /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
# disable existing configuration for ethernet
#addresses: [192.168.1.30/24]
#routes:
# - to: default
# via: 192.168.1.1
# metric: 100
#nameservers:
# addresses: [192.168.1.10]
# search: [linux.io]
dhcp6: false
# add configuration for bridge interface
# [macaddress] ⇒ specify HW address of enp1s0
bridges:
br0:
interfaces: [enp1s0]
dhcp4: false
addresses: [192.168.1.228/24]
routes:
- to: default
via: 192.168.1.1
metric: 100
nameservers:
addresses: [192.168.1.1, 8.8.8.8, 223.5.5.5]
search: [linux.io]
parameters:
stp: false
dhcp6: true
➜ ~ sudo netplan apply
➜ ~ ip add show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 00:e0:4c:68:03:d2 brd ff:ff:ff:ff:ff:ff
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 00:e0:4c:68:03:d3 brd ff:ff:ff:ff:ff:ff
4: wlp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 04:11:19:c7:d2:ba brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether d2:75:ab:8a:d1:8f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.228/24 brd 192.168.1.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 2408:8207:78d0:690:d075:abff:fe8a:d18f/64 scope global dynamic noprefixroute
valid_lft 85169sec preferred_lft 2369sec
inet6 fe80::d075:abff:fe8a:d18f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
6: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:bf:da:b9 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
创建虚拟机
➜ ~ sudo virt-install \
--name ubuntu2204 \
--ram 4096 \
--disk path=/var/lib/libvirt/images/ubuntu2204.img,size=80 \
--vcpus 2 \
--os-variant ubuntu22.04 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location /home/dengyouf/ubuntu-22.04.5-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \
--extra-args 'console=ttyS0,115200n8'
...
================================================================================
Serial [ Help ]
================================================================================
As the installer is running on a serial console, it has started in basic
mode, using only the ASCII character set and black and white colours.
If you are connecting from a terminal emulator such as gnome-terminal that
supports unicode and rich colours you can switch to "rich mode" which uses
unicode, colours and supports many languages.
You can also connect to the installer over the network via SSH, which will
allow use of rich mode.
[ Continue in rich mode > ]
[ Continue in basic mode > ]
[ View SSH instructions ]
# 选择 [Continue in basic mode] 即开始安装,安装完成后,重启机器,开始登陆
...
Ubuntu 22.04.5 LTS mylab ttyS0
mylab login: dengyouf
Password:
~$ ip add l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:15:25:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.102/24 metric 100 brd 192.168.1.255 scope global dynamic enp1s0
valid_lft 7026sec preferred_lft 7026sec
inet6 2408:8207:78d0:690:5054:ff:fe15:25e4/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 85066sec preferred_lft 2266sec
inet6 fe80::5054:ff:fe15:25e4/64 scope link
valid_lft forever preferred_lft forever
dengyouf@mylab:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 38.8M 1 loop /snap/snapd/21759
loop1 7:1 0 87M 1 loop /snap/lxd/29351
loop2 7:2 0 63.9M 1 loop /snap/core20/2318
sr0 11:0 1 1024M 0 rom
vda 252:0 0 80G 0 disk
├─vda1 252:1 0 1M 0 part
├─vda2 252:2 0 2G 0 part /boot
├─vda3 252:3 0 4G 0 part [SWAP]
└─vda4 252:4 0 74G 0 part /
dengyouf@mylab:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 392M 1.1M 391M 1% /run
/dev/vda4 73G 3.0G 66G 5% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda2 2.0G 125M 1.7G 7% /boot
tmpfs 392M 4.0K 392M 1% /run/user/1000
dengyouf@mylab:~$
# 切换终端 Ctrl +]
➜ ~ sudo virsh console ubuntu2404 # 连接虚拟机
Connected to domain 'ubuntu2404'
Escape character is ^] (Ctrl + ])
dengyouf@mylab:~$
克隆虚拟机
➜ ~ sudo virsh list --all
Id Name State
------------------------------
- ubuntu22.04 shut off
➜ virt-clone --auto-clone -o ubuntu20.04 -n kubeadm-master01
➜ sudo virt-sysprep --operations defaults,machine-id,-ssh-userdir,-lvm-uuids --hostname kubeadm-master01 --run-command "sed -i 's@192.168.1.254@192.168.1.81@g' /etc/netplan/00-installer-config.yaml && dpkg-reconfigure openssh-server" -d kubeadm-master01
虚拟机管理命令
➜ ~ sudo virsh start ubuntu2404
➜ ~ sudo virsh shutdown ubuntu2404
➜ ~ sudo virsh destroy ubuntu22.04
➜ ~ sudo virsh start ubuntu2404 --console
虚拟化嵌套
➜ ~ cat /sys/module/kvm_intel/parameters/nested
Y
➜ ~ sudo virsh edit ubuntu2404
...
<cpu mode='host-passthrough' check='none' migratable='on'/>