虚拟机
Linux开源虚拟机KVM
安装
# 首先安装KVM虚拟机
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
# 设置服务开机启动
sudo systemctl enable libvirtd --now配置
网桥配置
如果网络管理使用的是netplan,将原来的配置修改为:
# 主要区别在于:1)物理网口不设置ip;2)物理网口包在网桥br0中,物理网桥配置IP。
network:
version: 2
ethernets:
eno1:
dhcp4: no
bridges:
br0:
dhcp4: false
interfaces: [eno1]
addresses:
- 192.168.111.222/24
routes:
- to: default
via: 192.168.111.1
nameservers:
addresses: [192.168.111.1, 8.8.8.8, 119.29.29.29]操作
# 创建虚拟机
# 图形界面搜索virtual machine manager
# 随后图形界面操作创建虚拟机EXSI
参考信息:
基础配置
配置PCI设备直通
- 进入ESXi Host Client中
- 在左侧菜单选择
主机-管理 - 右侧选择
硬件-PCI设备 - 在右上角
搜索中输入NVIDIA - 在表格中选中所有名字中带有
NVIDIA的设备 - 点击
切换直通按钮。 完成后,表格中的直通将变为活动。
配置虚拟机
关闭虚拟机后,进入虚拟机设置,进行如下操作:
- 进入
虚拟硬件选项卡 内存-预留中选择预留所有客户机内存 (全部锁定)- 点击
添加其他设备按钮,选择PCI设备 - 在
新PCI设备中选择需要使用的显卡 - 如果有多个PCI设备请重复第3、4步
- 进入
虚拟机选项选项卡 - 关闭
引导选项-启动UEFI安全引导中的是否为此虚拟机启用 UEFI 安全引导完成后,可以开机并进入虚拟机。
修改内核配置
nouveau是第三方开发的开源显卡驱动,安装NVIDIA官方的显卡驱动之前,需要先禁用它。执行命令:
# /etc/modprobe.d/blacklist.conf文件写入以下内容
# 用于禁用nouveau
blacklist nouveau
options nouveau modeset=0
# /etc/modprobe.d/nvidia.conf文件写入
# 用于为不支持的NVIDIA GPU启用实验性支持。
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
# 更新初始化内存文件系统(initramfs),initramfs通常位于/boot目录。
sudo update-initramfs -u
# 重启后,可以通过以下命令验证:
lsmod | grep nouveau
# 如果没有输出就是nouveau禁用成功。安装NVIDIA显卡驱动
安装显卡驱动的方法很多,比如ubuntu-drivers autoinstall、apt install等。 无论使用哪种方法,请注意需要安装开源Linux内核(Open Linux Kernel)版本。
我使用的是run文件安装法,最新版的下载链接可以在官方网站找到,以530.30.02为例。执行命令:
# 下载run文件
wget http://download.nvidia.com/XFree86/Linux-x86_64/530.30.02/NVIDIA-Linux-x86_64-530.30.02.run
# 删除原有驱动
# 视安装方法不同,卸载方法也不同,以下3个命令可以都试试
sudo nvidia-uninstall
sudo apt remove --purge '^nvidia-.*'
sudo sh ./NVIDIA-Linux-x86_64-530.30.02.run --uninstall
# 安装过程的必要依赖
sudo apt install gcc make
# 运行run文件
sudo sh ./NVIDIA-Linux-x86_64-530.30.02.run磁盘扩容
首先在操作面板增加虚拟磁盘的容量 随后进入到系统中执行:
# 实用parted工具
sudo parted /dev/sdb
# 进入交互式之后执行
resizepart 1
# 然后输入100%,然后quit
quit
# 在外部执行e2fsck 进行磁盘分区检测
sudo e2fsck -f /dev/sdb1
# 然后resize文件系统,就可以了.
sudo resize2fs /dev/sdb1总结
想要正常在ESXi 8中的Linux虚拟机中使用显卡直通,以下缺一不可:
- bios中关闭fast boot。
- bios中开启VT-D(支持PCIE直通),开启CPU虚拟化支持。
- 虚拟机关闭UEFI安全引导。
- 内核禁用
nouveau - 使用开源Linux内核版本驱动
-m=kernel-open。 - 设置
NVreg_OpenRmEnableUnsupportedGpus为1
命令行操作
开启命令行
迁移vmdk
网页端总会出现各种情况导致页面刷新,从而迁移过程可能会遇到问题,这里还是用命令行更安全
# nohup: 让命令忽略挂起信号,配合&可以让命令在后台运行。
# > <文件路径>:写入日志
# 2>&1: 表示把错误信息也一并写入
nohup vmkfstools -i "/vmfs/volumes/hdd/backup/常用服务/常用服务_2.vmdk" "/vmfs/volumes/ssd-system/常用服务/常用服务_2.vmdk" -d thin > /vmfs/volumes/ssd-data/常用服务/copy_log.txt 2>&1 &常见问题
nvlink导致显卡风扇和功率ERR!
找不到具体问题,只能进行尝试,目前稍微稳定点的办法是修改显卡功率,长期维持出现问题的显卡有一定量的显存占用,就可以了,测试下来稳定运行几个月了。
nvidia-smi -pm 1 # enable persistance mode
nvidia-smi -pl 220 # set power limit to 220w配置开启自动配置
[Unit]
Description=nvidia-smi power limit
After=systemd-modules-load.service
Requires=nvidia-driver.service
[Service]
# sleep主要是nvidia-smi执行命令直接 &&的话会导致同时执行两条命令,会报错
ExecStart=/bin/sh -c "nvidia-smi -pm 1 > /var/log/nvidia-power-limit.log 2>&1 && sleep 2 && nvidia-smi -pl 220 >> /var/log/nvidia-power-limit.log 2>&1 || exit 1"
Type=simple
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.targetPCI-E直通全部灰色
要想支持PCI-E直通,需要再bios开启VT-D支持
遇到nvidia-smi no devices
以下步骤检查是否做好:
- 记得重启宿主机,来刷新显卡内部寄存器状态,不然更新驱动会导致显卡状态异常出现
nvidia-smi no devices - 查看异常信息:
sudo dmesg | grep -i nv - bios中关闭fast boot。
- 开启VT-D和CPU虚拟化。
- 虚拟机或者物理机关闭secret boot。
- 虚拟机设置预留内存。
- 禁用
nouveous,并且添加未支持的GPU:# 修改/etc/modprobe.d/blacklist.conf,写入 # 用于禁用nouveau blacklist nouveau options nouveau modeset=0 # 修改文件/etc/modprobe.d/nvidia.conf,写入 # 用于为不支持的NVIDIA GPU启用实验性支持。 options nvidia NVreg_OpenRmEnableUnsupportedGpus=1 # 更新初始化内存文件系统(initramfs),initramfs通常位于/boot目录。 sudo update-initramfs -u - 安装驱动:
./NVIDIA_xxxxx.run。
