KVM 安装
什么是kvm
基于内核的虚拟机(Kernel-based Virtual Machine, 简写 KVM)
具体见: https://zh.wikipedia.org/wiki/基于内核的虚拟机
什么是libvirt
它是一系列提供出来的库函数,用以其他技术调用,来管理机器上的虚拟机
部署KVM (ubuntu-16.04)
硬件检查
检查主版设置中是否开启了 VT (virtualization technology), cpu必须支持vt, 主板支持VT-d
egrep “(svm|vmx)” /proc/cpuinfo
#返回文本中有vmx
安装 libvirt & kvm
sudo apt-get install qemu-kvm qemu-system libvirt-bin bridge-utils
libvirt-bin provides libvirtd which you need to administer qemu and kvm instances using libvirt
qemu-kvm 是虚拟机 (qemu is the backend)
bridge-utils 用于网络桥接 (provides a bridge from your network to the virtual machines)
执行 kvm-ok 检查安装是否成功
开启IOMMU支持
首先查看当前是否支持:
cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.0-31-generic.efi.signed root=UUID=9b9c8d98-f9bf-4445-b018-f777185909bb ro intel_iommu=on
如果没有,则需要在grub引导中加入选项
edit:
vi /etc/default/grub
change
GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
to
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on”
then
update-grub
添加需要开启的内核模块
edit:
vi /etc/modules
add :
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
参考: http://pve.proxmox.com/wiki/Pci_passthrough
reboot生效
sudo reboot now
部署虚拟机管理工具webvirtmgr
docker部署参考: https://hub.docker.com/r/unws/webvirtmgr
默认账号密码: admin/1234
项目地址: https://github.com/retspen/webvirtmgr
docker pull unws/webvirtmgr
启动服务命令:docker run -d --name webvirtmgr -p 8080:8080 -p 6080:6080 -v /home/webvirtmgr:/data/vm unws/webvirtmgr
安装虚拟机镜像
存储池配置
添加iso镜像卷,并将相应的安装镜像放置到对应的位置上
添加目录类型卷,用来存储虚拟机磁盘文件
网络池配置
添加名为default的新网络,启动dhcp,类型NAT
新建虚拟机实例
选定自己需要的配置即可
ps:
启动中如果发现cpu配置不正确导致启动失败,
可以修改相应虚拟机的xml配置(设置→xml)中的cpu类型配置
GPU显卡配置
ps: 如果宿主机没有安装显卡驱动则不需要如下操作
-
禁用 nouveau
lsmod |grep nouveau
查看内核是是否加载了nouveau模块
echo “blacklist nouveau” | sudo tee >/etc/modprobe.d/blacklist-nouveau.conf
echo “options nouveau modeset=0” | sudo tee >>/etc/modprobe.d/blacklist-nouveau.conf
echo “alias nouveau off” | sudo tee >>/etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
sudo reboot now -
禁用 nvidia-driver
lsmod |grep nvidia
查看内核是是否加载了nvidia 驱动
关闭所有使用要挂载显卡的进程
nvidia-smi: 查看并关闭所有相关的进程
停止 nvidia-docker 服务
选择要使用的透传设备
lspci | grep NVIDIA
记录下 开头的pci bus id 如: 04:00.0
获取vendor and device codes
lspci -Dn -s “04:00.0” | awk ‘{print $3}’ | sed “s/😕 /”
将设备从宿主机上解除绑定
echo “10de 1bb3” > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:00:1b.0 > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind
echo 0000:00:1b.0 > /sys/bus/pci/drivers/pci-stub/bind
挂载gpu设备到虚拟机
关闭虚拟机
编辑虚拟机配置
在虚拟机配置的节点下添加(修改其中的相应字段与上面获取设备pci bus id对应,如)
开启tcp监听
/etc/default/libvirt-bin
libvirtd_opts="-l"
vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
添加管理账号
cd /etc/libvirt/
saslpasswd2 -a libvirt qnai
添加网卡
brctl add br0
auto br0
iface br0 inet static
address 100.100.142.12
netmask 255.255.255.0
gateway 100.100.142.1
dns-nameserver 10.1.100.1
bridge_ports eno1
bridge_stp off
bridge_fd 0
bridge_maxwait 0