Proxmox VE(PVE) 学习笔记(一)

一,基础设置及开启硬件直通

偷懒的方法使用pvetools工具

执行命令

进入Proxmox VE系统的SSH,或直接进入PVE管理网页Shell,以下命令操作都是通过Shell执行

rm /etc/apt/sources.list.d/pve-enterprise.list

export LC_ALL=en_US.UTF-8

wget https://gitee.com/ivanhao1984/pvetools/raw/master/pvetools.sh

chmod +x ./pvetools.sh

./pvetools.sh

pvetools工具下载地址

手动方式

Intel CPU

修改grub 

编辑文件/etc/default/grub 

修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet” 

使其为“GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on” 

使用update-grub更新

 验证其有效性,从命令行运行“dmesg | grep -e DMAR -e IOMMU”。如果没有输出,则出现问题。极有可能是bios设置的问题,需要启动cpu的vt-x支持。


vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU


AMD CPU

修改grub

编辑文件/etc/default/grub

修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”

使其为“GRUB_CMDLINE_LINUX_DEFAULT=“quiet amd_iommu=on”

使用update-grub更新

验证其有效性,从命令行运行“dmesg | grep -e DMAR -e IOMMU”。如果没有输出,则出现问题。极有可能是bios设置的问题,需要启动cpu的vt-x支持。

新增所需模块

修改文件/etc/modules,加入如下的行

vi /etc/modules

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

执行命令来更新initramfs

update-initramfs -u -k all.

命令模式添加网卡

查询网卡信息

lspci | grep -i ethernet

使用命令找到网卡PCI的地址,地址应采用以下形式:01:00.0

打开文件进行手工添加

集群:/etc/pve/nodes/你的集群名称/qemu-server/虚拟机id.conf

PCI:/etc/pve/qemu-server/vmid.conf

PCIE: /etc/pve/qemu-server/.conf


查找网卡ID

lspci | grep net

或者

lspci

添加PCI

vi /etc/pve/qemu-server/vmid.conf

添加一个pci地址: 

hostpci0: 01:00.0

添加多个pci地址方式1: 

hostpci0: 01:00.0;01:00.1

添加多个pci地址方式2: 

hostpci0: 01:00.0

hostpci1: 01:00.1

添加统称所有pci地址,自动传递所有功能: 

hostpci0: 01:00

添加PCIE

vi /etc/pve/qemu-server/111.conf

machine: q35

hostpci0: 01:00.0,pcie=1


web页面模式添加 

硬件->添加,选择PCI设备->选择,完成 

如需更改为PCIE,可设置机器为q35 

 如果添加了PCI设备开启虚拟机正常使用那后面的就不需要看了

 如果添加了PCI设备无法开启虚拟机的话需要允许不安全的中断 

 先验证IOMMU是否有效 

再查看IOMMU是否可以中断重映射 

后启用中断重映射,允许不安全的中断

验证IOMMU有效

要让pci passthrough正常工作,您需要为您的pci设备提供专用的iommu组

find / sys / kernel / iommu_groups / -type l

输入命令后有相关东西输出,则表示正常

如果没有则需要进行IOMMU中断重映射,只有每个IOMMU都支持中断重映射,才会启用中断重映射。

IOMMU中断重映射

没有中断重映射就不可能使用PCI passthrough。

对于KVM用户,设备分配将失败,出现’Failed to assign device "[device name]"的错误,即“无法分配设备”[设备名称]“:操作不允许”错误,并且’未找到中断重映射硬件,将设备传递到非特权域是不安全的。

不支持中断重映射的系统:

所有使用AMD处理器和芯片组的系统都支持AMD I / O虚拟化(AMD-Vi)。这种硬件具有中断重映射支持; 但是,上游尚未提供软件支持。

所有使用英特尔处理器和芯片组的系统都支持英特尔定向I / O虚拟化技术(VT-d),但不支持中断重映射。新的处理器和芯片组提供了中断重映射支持。要确定您的系统是否支持中断重映射:

查看中断重映射

运行“dmesg | grep ecap”命令。

在IOMMU行上,“ecap”之后的十六进制值表示是否支持中断重映射。如果该值的最后一个字符是8,9,a,b,c,d,e或f,则支持中断重映射。例如,“ecap 1000”表示没有中断重映射支持。“ecap 10207f”表示中断重映射支持,因为最后一个字符是“f”。

启用中断重映射

官方文档是这个

If your system doesn’t support interrupt remapping,

you can allow unsafe interrupts with:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

或者添加驱动黑名单

vi /etc/modprobe.d/pve-blacklist.conf

文件里面添加一行

options vfio_iommu_type1 allow_unsafe_interrupts=1

来启用不安全的中断

之后就可以通过图形化界面执行PCIE设备的直通操作了

Proxmox VE 直通硬盘有两种方式

方法一:通过命令映射直通单块硬盘;

方法二:添加 PCI设备,直通 SATA Controller(SATA 控制器)。

方法一:通过命令映射直通单块硬盘

查看磁盘ID

ls -l /dev/disk/by-id/

注:ata、mmc等…表示接口方式,通常有ATA、SATA、SCS、NVME、eMMC和SASI等类型。IDE和SATA接口一般为“ata”,SCSI及SAS接口一般为”scsi“

导入虚拟机 

 qm set <vm_id> –<disk_type>[n] /dev/disk/by-id/<type>-$brand-$model_$serial_number 

 <vm_id> : 为创建虚拟机时指定的VM ID。 

 <disk_type>[n]: 导入后的磁盘的总线类型及其编号,总线类型可以选择IDE、SATA、VirtIO Block和SCSI类型,编号从0开始,最大值根据总线接口类型有所不同,IDE为3,SATA为5,VirTIO Block为15,SCSI为13。 /dev/disk/by-id/-brand-brand−model_$serial_number : 为磁盘ID的具体路径和名称。

 按照我硬盘的参数举例: 如上方的硬盘数据 ata-ST4000VX000-2AG166_ZGY163KG 为例,将此硬盘直通给VM ID编号为102的虚拟机下,总线类型接口为sata2(请根据PVE虚拟机下的总线编号设置)

 qm set 102 -sata2 /dev/disk/by-id/ata-ST4000VX000-2AG166_ZGY163KG

显示返回信息 

 update VM 102: -sata2 /dev/disk/by-id/ata-ST4000VX000-2AG166_ZGY163KG 

 为直通成功

方法二:添加 PCI设备,直通 SATA Controller(SATA 控制器)

PVE系统直通SATA Controller(SATA 控制器),会把整个sata总线全部直通过去,就是直接将南桥或者直接把北桥连接的sata总线直通,那么有些主板sata接口就会全部被直通。

注意:如果您的PVE系统是安装在SATA的硬盘中,会导致PVE系统无法启动,所以在直通 SATA Controller(SATA 控制器),之前请先确认自己的PVE系统安装位置,或者直接将系统安装在 NVMe 硬盘中。

在开始之前请先开启IOMMU硬件直通功能后,执行下一步添加 SATA Controller(SATA 控制器)操作。

1.确认自己的主板CPU是否支持Vt-d功能

不支持就搞不了直通。intel要b75以上芯片组才支持。也就是说intel4代酷睿处理器以上,都支持。amd不明。VT-D是io虚拟化。不是VT-X。

有很多新手,以为主板开启虚拟化功能,就能直通,非也。要开启vt-d才能io虚拟化。AMD平台是iommu,某些OEM主板上叫SRIOV。请注意。

2.开启iommu

#编辑grub,请不要盲目改。根据自己的环境,选择设置

vi /etc/default/grub

#在里面找到:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

#如果是intel cpu修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

#如果是amd cpu请改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

#如果是需要显卡直通,建议在cmdline再加一句video=vesafb:off video=efifb:off video=simplefb:off,加了之后,pve重启进内核后停留在一个画面,这是正常情况

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=vesafb:off video=efifb:off video=simplefb:off"

修改完成之后,直接更新grub

update-grub

注意,如果此方法还不能开启iommu,请修改

/etc/kernel/cmdline文件

并且使用proxmox-boot-tool refresh 更新启动项

3.加载相应的内核模块

echo vfio >> /etc/modules

echo vfio_iommu_type1 >> /etc/modules

echo vfio_pci >> /etc/modules

echo vfio_virqfd >> /etc/modules

#更新内核参数

update-initramfs -k all -u

#重启主机

reboot

4.验证是否开启iommu

重启之后,在终端输入

dmesg | grep iommu

出现如下例子。则代表成功

[ 1.341100] pci 0000:00:00.0: Adding to iommu group 0

[ 1.341116] pci 0000:00:01.0: Adding to iommu group 1

[ 1.341126] pci 0000:00:02.0: Adding to iommu group 2

[ 1.341137] pci 0000:00:14.0: Adding to iommu group 3

[ 1.341146] pci 0000:00:17.0: Adding to iommu group 4

此时输入:

find /sys/kernel/iommu_groups/ -type l

#出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启

选择需要设置的PVE系统,点击 硬件 > 添加 > PCI设备 > 选择 SATA Controller(SATA 控制器),最后点击“添加”把 SATA Controller(SATA 控制器)添加给相应的系统后,完成重启,PVE硬件直通的设置就生效了。

二,用通用脚本换源 GNU/Linux 一键更换系统软件源脚本

执行命令

bash <(curl -sSL https://linuxmirrors.cn/main.sh)

LinuxMirrors: GNU/Linux 一键更换系统软件源脚本 (gitee.com)

Docker 一键安装(额外脚本)

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容