pve虚拟化环境安装以及简单设置
本文最后更新于 734 天前,其中的信息可能已经有所发展或是发生改变。

介绍

Proxmox Virtual Environment 1 is an open source server virtualization management solution based on QEMU/KVM and LXC. You can manage virtual machines, containers, highly available clusters, storage and networks with an integrated, easy-to-use web interface or via CLI. Proxmox VE code is licensed under the GNU Affero General Public License, version 3. The project is developed and maintained by Proxmox Server Solutions GmbH.

简而言之,它是一款开源的、高效的、功能强大的虚拟机管理软件。基于Debian,提供QEMU/KVM(提供硬件级虚拟化能力) 和 LXC(大名鼎鼎的docker基于LXC)多种类型的虚拟化技术。既然是学习Linux难免需要安装各种系统和环境,Proxmox VE提供易用的模板和镜像备份功能,支持储存池。麻雀虽小五内俱全,是个功能强大的小钢炮。搭配DDNS和FRP穿透内网可以实现非常多有趣实验场景。基本能满足绝大多数环境需要。

安装

下载 PVE

你可以在这里下载 PVE 安装镜像。

注意
使用 virtio 安装 windows 时必须挂载 virtio 驱动,否则会找不到硬盘。
你可以在这里下载virtio驱动。

安装 PVE

将刚刚下载的镜像烧写到一个空U盘,然后插在要安装的设备上。

进入系统 BIOS 页面,推荐使用 UEFI 引导。

设置从U盘启动,开始 PVE 安装过程,全程按提示操作即可。

相关详细操作可以参考官方文档(英文)

常见问题参见此处

配置国内的更新源

注意
在进行任何操作前,请先备份
cp /etc/apt/sources.list /etc/apt/sources.list.bak

添加国内软件源

修改/etc/apt/sources.list的内容为:

deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib
# deb-src https://mirrors.ustc.edu.cn/debian/ bookworm main contribe
deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib
# deb-src https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib

给 PVE 更换国内源

修改/etc/apt/sources.list.d/pve-no-subscription.list的内容为:

deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription

屏蔽 PVE 的企业源和 ceph 的源

先注释掉pve的企业源:

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

将内容注释即可:

#deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise

再注释掉 ceph 的源:

vi /etc/apt/sources.list.d/ceph.list

将内容注释即可:

#deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise

更新

apt update

看一下有哪些可以更新的:

apt list --upgradable

执行更新:

apt upgrade

完成后,习惯性重启。

实用功能

直通

开启直通功能3

可以通过两种方式开启直通功能:

  • 手工操作
  • 使用 pvetools

准备工作

主板bios设置

必须先在主板 bios 中开启 cpu 的 VD-T 支持和虚拟化支持。
VD-T不支持就无法直通。intel 需要 b75 以上芯片组才支持。也就是需要从 intel 4 代酷睿处理器开始才支持。

虚拟机设置

在创建虚拟机时,芯片组必须使用q35。只有Q35芯片组才能支持 PCIE 直通,否则只能进行 PCI 直通。

手工直通

开启iommu
vi /etc/default/grub

修改 GRUB_CMDLINE_LINUX_DEFAULT,增加 intel_iommu=on 。
使用 intel_iommu=on 后,开机可能会有内核crash,这时可以尝试加一个 iommu=pt。
也就是:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable intel_iommu=on iommu=pt pcie_acs_override=downstream pci=realloc=off"
备注
安装完成后的默认值是GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"

解释:

  • pcie_acs_override=downstream
  • pci=realloc=off

修改完成之后,更新 grub:

update-grub

设置虚拟化驱动

vi /etc/modules

增加以下内容:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

备注
备注: 安装完成后的默认值是空,仅有少量注释。

升级并更新配置:

update-initramfs -u -k all

之后重启机器。

使用 pvetools

使用 pvetools 就简单了,只要在 pvetools 的菜单中选择 “配置PCI硬件直通” -》“配置开启物理机硬件直通支持”。

完成后重启机器。

检验

检验 iommu 是否开启
dmesg | grep -e DMAR -e IOMMU

正确开启时的输出会类似如下:

[    0.000000] Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA
[    0.033632] ACPI: DMAR 0x00000000BC4B0870 0000B8 (v01 INTEL  HSW      00000001 INTL 00000001)
[    0.033687] ACPI: Reserving DMAR table memory at [mem 0xbc4b0870-0xbc4b0927]
[    0.066765] DMAR: IOMMU enabled
[    0.186968] DMAR: Host address width 39
[    0.186972] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.186988] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[    0.186996] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.187006] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008020660462 ecap f010da
[    0.187012] DMAR: RMRR base: 0x000000bc1d8000 end: 0x000000bc1e4fff
[    0.187017] DMAR: RMRR base: 0x000000bf000000 end: 0x000000cf1fffff
[    0.187024] DMAR-IR: IOAPIC id 8 under DRHD base  0xfed91000 IOMMU 1
[    0.187030] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.187034] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.188070] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.634998] DMAR: No ATSR found
[    0.635001] DMAR: No SATC found
[    0.635004] DMAR: IOMMU feature pgsel_inv inconsistent
[    0.635008] DMAR: IOMMU feature sc_support inconsistent
[    0.635011] DMAR: IOMMU feature pass_through inconsistent
[    0.635014] DMAR: dmar0: Using Queued invalidation
[    0.635026] DMAR: dmar1: Using Queued invalidation
[    0.720415] DMAR: Intel(R) Virtualization Technology for Directed I/O
[   14.512740] i915 0000:00:02.0: [drm] DMAR active, disabling use of stolen memory

可以看到 “DMAR: IOMMU enabled” / “DMAR: Intel(R) Virtualization Technology for Directed I/O” 的字样,说明 IOMMU 开启成功。

执行命令:

dmesg | grep 'remapping'

如果看到类似如下 “Enabled IRQ remapping in x2apic mode” 内容,也说明 IOMMU 开启成功:

[    0.187034] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.188070] DMAR-IR: Enabled IRQ remapping in x2apic mode

或者执行

dmesg | grep iommu

如果能看到类似内容,也说明 IOMMU 开启成功:

[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.2.16-3-pve root=/dev/mapper/pve-root ro quiet intel_pstate=disable intel_iommu=on iommu=pt pcie_acs_override=downstream pci=realloc=off
[    0.066508] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.2.16-3-pve root=/dev/mapper/pve-root ro quiet intel_pstate=disable intel_iommu=on iommu=pt pcie_acs_override=downstream pci=realloc=off
[    0.558404] iommu: Default domain type: Passthrough (set via kernel command line)
[    0.719593] pci 0000:00:02.0: Adding to iommu group 0
[    0.719693] pci 0000:00:00.0: Adding to iommu group 1
[    0.719725] pci 0000:00:01.0: Adding to iommu group 2
[    0.719755] pci 0000:00:01.1: Adding to iommu group 3
......
[    0.720223] pci 0000:05:00.0: Adding to iommu group 17
[    0.720252] pci 0000:06:00.0: Adding to iommu group 18
[    0.720278] pci 0000:08:00.0: Adding to iommu group 19

还可以执行命令

find /sys/kernel/iommu_groups/ -type l 

如果能看到很多直通组,说明开启成功:

/sys/kernel/iommu_groups/17/devices/0000:05:00.0
/sys/kernel/iommu_groups/7/devices/0000:00:1c.0
/sys/kernel/iommu_groups/15/devices/0000:02:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:16.0
......
/sys/kernel/iommu_groups/19/devices/0000:08:00.0
/sys/kernel/iommu_groups/9/devices/0000:00:1c.3

直通网卡4

设置pve下的网卡直通并检查是否生效

创建虚拟机

注意
特别注意,创建虚拟机时芯片组要选择 q35

在虚拟机的 hardware 设置中,添加 pci device:

注意勾选 All functions 以直通网卡上的所有网口,另外对于 pcie 设置,要勾选 “PCI-Express”。

提示
如果按照此方法设置无效,请再次检查是否成功开启直通功能。

提示
虚拟机进行直通操作时,取消勾选开机自启动的选项。这样哪怕直通错误,只需重启物理机就可以了,因为虚拟机没有自启就不会自动直通,不会发生冲突导致无法开机。

如果出现PVE下的虚拟主机直通硬件时,不小心把PVE系统主机使用的网卡、硬盘或者是其他硬件直通了,又勾选了开机自启动的选项,导致无法进入PVE系统网页控制界面,重启后也是没用任何反应,多次重启后还是无法解决,请往下看。

您需要通过编辑内核命令行来启用IOMMU,首先打开 grub 的bootloader内核命令行配置文件:

编辑内核命令行

您可以在以下位置修改内核命令行,具体取决于所使用的引导程序

Grub

内核命令行需要在文件/etc/default/grub中放置

GRUB_CMDLINE_LINUX_DEFAULT变量

然后 运行 update-grub将其内容附加到/boot/grub/grub.cfg中的所有linux条目中

Systemd-boot

内核命令行需要在/etc/kernel/cmdline中放置

要应用更改,请运行 pve-efiboot-tool refresh

将其设置为 loader/entries/proxmox-*.conf中的配置文件

首先打开grub的bootloader内核命令行配置文件:

GRUB(传统引导)

nano /etc/default/grub

或者 systemd-boot(UEFI)

nano /etc/kernel/cmdline

GRUB: 找到带有“ GRUB_CMDLINE_LINUX_DEFAULTGRUB_CMDLINE_LINUX_DEFAULT”的行

systemd-boot(UEFI)创建用于systemd-boot的文件(格式为带有选项的单行)

注:这段看着很恶心吧,我当时也是这么想的,因为这是从文档里直接粘过来的
如果看不懂在说什么就回去检查做过的每个步骤是否有遗漏和出错
(比如iommu打成iomuu之类的typo)

直通硬盘5

使用

ls /dev/disk/by-id

来查看设备 id

输出形如

scsi-36234567890abcde02ae710ec11e39fee
scsi-0123456789abcdef0123456789abcdef0
...
ata-WDC_XXXX_XXXX_XXXX
...

等等
其中形如scsi-36234567890abcde02ae710ec11e39fee,ata-WDC_XXXX_XXXX_XXXX的即为硬盘id

使用

qm set <yourVMid> -sata1 /dev/disk/by-id/<your-disk-id>

提示
-sata1表示给虚拟机设置编号为1的sata硬盘,即前缀为ata的硬盘设备
如果想要直通 SAS(SCSI) 硬盘,则需要把-sata1更换为-scsi1

例如,我想要给 VMid 为100的虚拟机直通 id 为scsi-36234567890abcde02ae710ec11e39fee的硬盘

则使用

qm set 100 -scsi1 /dev/disk/by-id/scsi-36234567890abcde02ae710ec11e39fee

如果返回以下信息,说明已成功映射:

update VM 100: -scsi1 /dev/disk/by-id/scsi-36234567890abcde02ae710ec11e39fee

进入 PVE 对应虚拟机的硬件页面,查看是否硬盘是否已经在虚拟机里,出现目标设备即为成功。

常见问题排除

更新 CPU 微码6

提示
只有在看到屏幕上有提示要求更新 microcode 时,再进行本节操作。

警告
在进行任何系统级更改前,请先备份

有时在 pve 启动时,会看到屏幕上有提示要求更新 microcode。

添加仓库7

需要添加 unstable repo:

echo "deb http://deb.debian.org/debian/ unstable non-free-firmware" > /etc/apt/sources.list.d/debian-unstable.list

执行更新:

apt update && apt list --upgradable

安装微码,intel 选择:

apt -y install intel-microcode

amd 选择:

apt -y install amd64-microcode

更新完之后重启,发现之前报告要求更新 microcode 的信息消失了,搞定。

记得把 unstable 仓库删除,避免不小心更新到这个仓库中的其他软件。

rm /etc/apt/sources.list.d/debian-unstable.list

修改locale设置8

提示
遇到乱码、locale报错等问题时可以尝试进行本节操作。

默认安装后,有时会遇到 locale 报错:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_IDENTIFICATION = "zh_CN.UTF-8",
    LC_NUMERIC = "zh_CN.UTF-8",
    LC_TIME = "zh_CN.UTF-8",
    LC_PAPER = "zh_CN.UTF-8",
    LC_MONETARY = "zh_CN.UTF-8",
    LC_TELEPHONE = "zh_CN.UTF-8",
    LC_MEASUREMENT = "zh_CN.UTF-8",
    LC_NAME = "zh_CN.UTF-8",
    LC_ADDRESS = "zh_CN.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").

最简单的修改方案:9

vi /etc/default/locale

将内容修改为:10

LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"

清理内核

警告
如果你不知道你在做什么,不要做

注意
在进行任何更改前,请先备份

清理不再使用的内核。

使用脚本操作

参见:https://tteck.github.io/Proxmox/

找到 Proxmox VE Kernel Clean 这个脚本,执行:

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/kernel-clean.sh)"

也可以手工把这个脚本下载到本地,方便以后执行本地运行:

mkdir -p ~/work/soft/pve
cd ~/work/soft/pve
wget https://github.com/tteck/Proxmox/raw/main/misc/kernel-clean.sh
chmod +x kernel-clean.sh

以后运行时,就只要执行

~/work/soft/pve/kernel-clean.sh

手工操作

参见:https://asokolsky.github.io/proxmox/kernels.html

其他

我还没有写完,一些详细配置敬请参见:
https://skyao.io/learning-pve/docs/

评论

  1. 月牙鹰树
    Windows Chrome 86.0.4240.198
    已编辑
    2 年前
    2024-9-07 12:17:39

    膜拜大佬我是煞笔,看不懂一点

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇