https://www.frytea.com/archives/546/
https://computingforgeeks.com/install-kvm-virtualization-on-ubuntu-noble-numbat/
查看当前版本
root@vm-133:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu Noble Numbat (development branch)"
root@vm-133:~#
root@vm-133:~#
root@vm-133:~# virsh version
Compiled against library: libvirt 10.0.0
Using library: libvirt 10.0.0
Using API: QEMU 10.0.0
Running hypervisor: QEMU 8.2.2
设置代理以便update
export http_proxy=http://x.x.x.x:64000
export https_proxy=http://x.x.x.x:64000
apt update
先安装blkio,blkio安装过程如下
apt-get install -qy meson rustc cargo python3-docutils
git clone https://gitlab.com/libblkio/libblkio
cd libblkio
meson setup build
meson compile -C build
meson install -C build
root@10-5-245-135:/opt/software/libblkio# cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
include /usr/local/lib/x86_64-linux-gnu/
root@10-5-245-135:/opt/software/libblkio# ldconfig -v
安装qemu
mkdir -p /opt/qemu
mkdir -p /opt/software/
cd /opt/software/
git clone https://github.com/qemu/qemu
#如需指定版本,则git checkout v8.2.3
cd /opt/software/qemu
./configure --target-list=x86_64-softmmu --enable-vhost-vdpa --enable-vhost-user --enable-vhost-user-blk-server --enable-blkio
#configure时注意观察对vhost_vdpa及blkio的支持
make -j 16
make install
系统自带版本8.2.2
root@vm-133:/opt/software/qemu# qemu-system-x86_64 --version
QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1)
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers
自己安装的版本在/usr/local/bin/
root@vm-133:/opt/software/qemu# /usr/local/bin/qemu-system-x86_64 --version
QEMU emulator version 9.0.50 (v9.0.0-145-g5da72194df)
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
升级libvirt
apt-get install meson ninja-build -y;
apt-get install -y pkg-config;
apt install make -y
apt install make-guile -y;
apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev -y
apt install git -y
apt install libspice-protocol-dev -y
apt install libspice-server-dev -y
apt-get install libusb-dev -y
apt-get install libusbredirparser-dev -y
apt install python3-full
apt install libyajl-dev
apt-get install -y libpciaccess-dev
apt install libtirpc-dev -y
apt-get install xsltproc -y
apt install libgnutls28-dev -y
apt-get install libxml2-dev -y
cp -r /usr/include/tirpc/{netconfig.h,rpc} /usr/local/include/
先查看当前版本
root@vm-133:/opt/software/libvirt# /usr/sbin/libvirtd --version
/usr/sbin/libvirtd (libvirt) 10.0.0
git clone https://github.com/libvirt/libvirt
cd libvirt
#如果需要安装在指定的目录 mkdir -p /opt/libvirt
meson build -Dsystem=true
#如果指定目录,则meson build --prefix=/opt/libvirt -Dsystem=true
ninja -C build
ninja -C build install
#如build时带-prefix=/opt/libvirt,
安装完后需cp -d /opt/libvirt/lib/x86_64-linux-gnu/libvirt-* /lib/x86_64-linux-gnu/
ldconfig -v
启动发现报错
root@vm-133:/opt/software/libvirt# /usr/sbin/libvirtd --version
/usr/sbin/libvirtd: /lib/x86_64-linux-gnu/libvirt.so.0: version `LIBVIRT_10.2.0' not found (required by /usr/sbin/libvirtd)
/usr/sbin/libvirtd: /lib/x86_64-linux-gnu/libvirt.so.0: version `LIBVIRT_10.1.0' not found (required by /usr/sbin/libvirtd)
/usr/sbin/libvirtd: /lib/x86_64-linux-gnu/libvirt.so.0: version `LIBVIRT_PRIVATE_10.3.0' not found (required by /usr/sbin/libvirtd)
拷贝新的库到/lib/x86_64-linux-gnu/下
root@vm-133:/opt/software/libvirt# cp -d /usr/local/lib/x86_64-linux-gnu/libvirt-* /lib/x86_64-linux-gnu/
root@vm-133:/opt/software/libvirt# ldconfig -v
再次执行
root@vm-133:/opt/software/libvirt# /usr/sbin/libvirtd --version
/usr/sbin/libvirtd (libvirt) 10.3.0
systemctl daemon-reload
systemctl start libvirtd
如报错,则查看
journalctl -u libvirtd.service -b
如果提示: Cannot read CA certificate '/etc/pki/CA/cacert.pem': No such file or directory
编辑/etc/libvirt/libvirtd.conf,添加以下一行
listen_tls = 0
如果新编译了qemu,则
去掉旧的qemu-system-x86_64,添加符号连接至新的位置
#mv /usr/bin/qemu-system-x86_64 /usr/bin/qemu-system-x86_64-old
#ln -s /usr/local/bin/qemu-system-x86_64 /usr/bin/qemu-system-x86_64
#virsh version
Compiled against library: libvirt 10.3.0
Using library: libvirt 10.3.0
Using API: QEMU 10.3.0
Running hypervisor: QEMU 9.0.50
执行virsh net-list,如果发现有default的网络,则删除
virsh net-destroy default
virsh net-undefine default
升级后的libvirt还是不支持generic vdpa,改用手动启动(generic vdpa需qemu在8.2.3及以上)
/opt/qemu/bin/qemu-system-x86_64 -m 8192M -cpu host,migratable=on -smp 8,sockets=8,cores=1,threads=1 -M q35,accel=kvm,memory-backend=mem \
-object memory-backend-memfd,share=on,id=mem,size="8192M" -drive file=/var/lib/libvirt/images/ubuntu20.04-61.qcow2,index=0,media=disk,format=qcow2 \
-device vhost-vdpa-device-pci,vhostdev=/dev/vhost-vdpa-0 -vnc 10.5.245.135:10
测试live migrate,发现generic vdpa目前还不支持热迁移
Error: State blocked by non-migratable device '0000:00:03.0:00.0/vhost-vdpa-device'