说明:当前测试环境为PVE7.0版本

官网: Proxmox - Powerful open-source server solutions

目录

背景

安装系统

PCI直通配置(开启iommu)

 允许kvm嵌套虚拟化

取消thin块设备,扩容root根目录(可选)

登录管理页面

进行创建集群,加入集群操作

创建虚拟机-- iso (CPU选择host模式)

创建虚拟机--(img VMDK,QCOW2已有系统的文件)

添加PCI直通设备

 快照、克隆

其他

背景

 因为工作需要,需进行小组内部服务器虚拟机工作并维护(大约6台左右),因为公司使用ESXi需要付费,所以准备选择KVM。需要支持快速方便创建虚拟机,支持虚拟机嵌套虚拟化,支持虚拟机PCI直通(比如物理服务器的网卡需要独享于虚拟机内部),支持快照克隆等保护虚拟机的措施。于是调研分析后,决定使用PromoxVE系统。

pve Gpu虚拟化 pve虚拟化 集群_虚拟化

安装系统

  • 启动项设定(略)

        根据服务器型号设定启动项,进入u盘或者光盘启动项进行安装工作

  • 进行安装proxmox ve系统

 

pve Gpu虚拟化 pve虚拟化 集群_创建虚拟机_02

pve Gpu虚拟化 pve虚拟化 集群_linux_03

        选择正确的磁盘,进行安装系统

        此处安装时,可以对系统盘进行设定,比如设定各个目录使用的空间大小,格式等。(默认有个百分比,大部分空间用于thin块设备创建虚拟机用,这部分设备是无法进行存放文件内容的)

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_04

        选择时区(选择上海时区)

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_05

pve Gpu虚拟化 pve虚拟化 集群_虚拟化_06

注意!这里的hostname需要正确填写,如果是部署多台pve集群,这个名字一定不要一样。否正无法加入集群。(需要修改主机名以及其他操作)

可以设置比如 node1.host.com , node2.host.com ...

pve Gpu虚拟化 pve虚拟化 集群_虚拟化_07

pve Gpu虚拟化 pve虚拟化 集群_虚拟化_08

安装完成可登录系统,WEB UI界面登录 https:x.x.x.x:8006 , 可以使用linux系统账户和密码进行登录

pve Gpu虚拟化 pve虚拟化 集群_虚拟化_09

pve Gpu虚拟化 pve虚拟化 集群_嵌套_10

PCI直通配置(开启iommu)

  • 在/etc/default/grub文件里修改

GRUB_CMDLINE_LINUX_DEFAULT行添加以下内容(intel cpu)

GRUB_CMDLINE_LINUX_DEFAULT=" intel_iommu=on pcie_acs_override=downstream"

如果是AMD CPU,那么添加一下内容:

GRUB_CMDLINE_LINUX_DEFAULT=" amd_iommu=on pcie_acs_override=downstream"

 

pve Gpu虚拟化 pve虚拟化 集群_创建虚拟机_11

  • 更新grub

root@pve:~# update-grub

 

pve Gpu虚拟化 pve虚拟化 集群_嵌套_12

  • 在/etc/modules文件里添加如下内容:

使用nano打开/etc/modules,添加一下内容:

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

pve Gpu虚拟化 pve虚拟化 集群_嵌套_13

  •  更新并重启

root@pve:~# update-initramfs -u -k all

  1. 在/etc/modprobe.d/的任意一个.conf下增加这些内容(中断):

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" >> /etc/modprobe.d/pve-vfio.conf

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_14

  • root@pve:~# reboot

检查IOMMO功能是否开启

root@pve:~# dmesg | grep -e DMAR -e IOMMU

 输出相关IOMMU内容

 允许kvm嵌套虚拟化

  • 1. 验证您的 KVM 宿主机是否启用了嵌套虚拟化

基于 Intel 的处理器运行以下命令:

[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested

N

基于 AMD 的处理器运行以下命令:

[root@kvm-hypervisor ~]# cat /sys/module/kvm_amd/parameters/nested

N

上述命令输出 N 表示嵌套虚拟化是禁用的。如果我们得到的输出是 Y 则表示在您的宿主机已启用嵌套虚拟化。

2.启用嵌套虚拟化

使用以下内容创建一个文件名为 /etc/modprobe.d/kvm-nested.conf 的文件:

[root@kvm-hypervisor ~]# vi /etc/modprobe.d/kvm-nested.conf

options kvm-intel nested=1

3.重新加载kvm模块

modprobe -r kvm_intel ; modprobe kvm_intel

4.验证嵌套虚拟化功能

[root@kvm-hypervisor ~]# cat /sys/module/kvm_intel/parameters/nested

Y

5.(检查)启动虚拟机并设置CPU为host模式,进入检查是否支持虚拟化

egrep --color 'vmx|svm' /proc/cpuinfo

取消thin块设备,扩容root根目录(可选)

原因:因为安装时默认大部分空间为thin块设备目录,local等路径空间较小。网络上一般建议删除pve/data 块,使用root目录(方便存取文件,查看内容)

 此操作可以扩容根目录大小,但是经过测试分析,虚拟机放在root目录磁盘,虚机读写性能是有损耗的。(所以建议,虚拟机数据存放在thin设备中,其他文件,iso等可以放置在共享文件系统中比如NFS)

#进入PVE系统

lvremove pve/data          #适用于新装系统无虚拟机数据

lvextend -l +100%FREE pve/root

#df -Th查看文件系统

#(ext4) resize2fs /dev/mapper/pve-root

#(xfs) xfs_growfs /dev/VolGroup00/LVroot

登录管理页面

https://ip:8006 

进行创建集群,加入集群操作

在PVE上,点击【数据中心】——【集群】——【创建集群】(link选择你的ip)

创建完成点击【加入信息】,复制加入信息内容

登录其他PVE系统平台,点击加入集群,粘贴 加入信息,输入密码,选择网卡ip.


pve Gpu虚拟化 pve虚拟化 集群_虚拟化_15

创建集群

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_16

完成后,如下图所示:(已经安装了虚拟机,并给虚拟机资源进行规划分类,方便查找及维护)

pve Gpu虚拟化 pve虚拟化 集群_linux_17

创建虚拟机-- iso (CPU选择host模式)

因为需要支持嵌套虚拟化,所以创建的虚拟机cpu需要host模式

  1. 右上角“创建虚拟机”,选择节点,输入名称

pve Gpu虚拟化 pve虚拟化 集群_创建虚拟机_18

 

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_19

 存储默认可以创建在thin里,块设备读写性能较好

pve Gpu虚拟化 pve虚拟化 集群_创建虚拟机_20

 注意CPU选择host (使得嵌套虚拟化可用)

pve Gpu虚拟化 pve虚拟化 集群_嵌套_21

完成创建,确认信息

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_22

创建虚拟机--(img VMDK,QCOW2已有系统的文件)

  用已经安装好系统的镜像文件,来创建虚拟机

  • 先创建一个虚拟机,不选择iso光驱,硬盘大小默认即可,其他参数按需配置

查看虚拟机id

  • 上传安装好镜像的系统文件(比如vmware-centos-disk1.vmdk),执行导入:

# qm importdisk <vmid> <source> <storage> [OPTIONS]

qm importdisk 虚拟机id vmware-centos-disk1.vmdk  ops16-thin -O qcow2

  • 虚拟机找到新导入的硬盘(通常为vm-id-disk-0-1之类),并设置开机启动项为此硬盘。启动虚拟机即可完成

 

pve Gpu虚拟化 pve虚拟化 集群_创建虚拟机_23

pve Gpu虚拟化 pve虚拟化 集群_pve Gpu虚拟化_24

  • 启动虚拟机,即可直接使用

添加PCI直通设备

  1. 选择虚拟机-->硬件,添加PCI设备,选择设备(!注意:请一定根据需要,正确选择)

 PS: 界面上启动(如果是运行状态则先点击关机再启动才会生效)

pve Gpu虚拟化 pve虚拟化 集群_创建虚拟机_25

 快照、克隆

 如果安装时虚拟机存在放dir目录里(local,nfs)。则只支持qcow2格式的虚拟机支持快照。

 thin存储默认支持快照

pve Gpu虚拟化 pve虚拟化 集群_linux_26

 模板,虚拟机

pve Gpu虚拟化 pve虚拟化 集群_虚拟化_27

其他

 任务历史查看操作以及虚拟机相关错误信息

pve Gpu虚拟化 pve虚拟化 集群_linux_28