容易被忽略的 PVE 细节
2023-7-5
| 2023-7-5
0  |  0 分钟
type
status
date
Jul 5, 2023 09:58 AM
slug
summary
tags
PVE
category
技术折腾
icon
password

容易被忽略的 PVE 细节—PVE 的 tips

2022-02-15 17:01:57 120 点赞 659 收藏 63 评论
PVE 的教程一搜一大把,站内也有很好的 PVE 入门教程,大家跟着一步一步走基本上都不会出问题。但是前几天发了一篇 x86 小主机评测后发现,PVE 有一些细节部分很多教程没有说清楚,我尽可能的将在这篇文章中说清楚。
注:为了保证专业性,我会尽力找到官方的一些解释,附在各个部分下面。
一、虚拟机和 CT 模板

ct 和虚拟机
notion image
ct 和虚拟机
vm 是完全虚拟出来一整个主机,而 ct 是进程隔离。简单来说就是宾馆和青年旅社的关系,vm 虚拟化隔离更彻底,但是资源占用也较大,ct 进程隔离,所以不能任意模拟出任何系统,但是资源利用率最高。如果你使用 linux,ct 一般能满足你的需求。

二、CPU 分配

很多时候,家用小主机是 4 核、双核,但是我们往往创建了不止一个虚拟机,可能有小伙伴有疑问:是不是要按照物理核心数分配给各个虚拟机?CPU 模式选哪个更好?
那我们就来说说 PVE 中 cpu 分配页的各个选项。
cpu
notion image
cpu

插槽数:

虽然家用主板大部分都是 1 板 1cpu,但是存在一个主板可以搭载多颗 cpu 的情况。这里的插槽数就是你想给你创建的这个虚拟机分配的 cpu 数量。家用一般选 1 就可以了。

核心数:

关于 cpu 核心数的分配,更像是 docker 中的 limit。我们给虚拟机 A 分配了 2 核,那么他最多只能使用 2 核,但不代表这两颗核心完全保留给了虚拟机 A。如果你有过 esxi 的使用经验,esxi 中内存有一个 “完全预留”,这里的 cpu 分配就和完全预留是截然不同的概念。所以不需要有负担,放开手每个核心设置满核心都可以。有人要问那分配的意义在哪里?我下面说到权重的时候详细说。
It is perfectly safe if the overall number of cores of all your VMs is greater than the number of cores on the server (e.g., 4 VMs with each 4 cores on a machine with only 8 cores).

类别:

这是绝大多数教程都没说的东西。默认可以看到是 kvm64,我们拉到最底下还可以看到 host。两个的区别用一句概括就是:kvm64 具有最好的迁移性,host 具有最好的性能。所谓迁移性,就是你将一个虚拟机从宿主机 A 迁移到宿主机 B,如果你没有这样的需求,选 host 就好了。引用官方的话说就是:
If you don’t care about live migration or have a homogeneous cluster where all nodes have the same CPU, set the CPU type to host, as in theory this will give your guests maximum performance.

权重:

就像上面说的,如果我们给每个虚拟机都分配了相同的核心数,那该如何调度呢?均衡分配。那如果我的虚拟机 A 很重要,一般需要更多的资源,不想被均衡分配抢资源怎么办呢?将权重调高。比如 A 是 2048,B 是 1024,那么在调度上 A 就是 B 的两倍优先。

NUMA:

一种将内存分散到每个 cpu 的本地储存池的技术。就像过去是市中心大商场,你每次买东西都要去大商场,路途远耗时长,现在各个地方开了便利店,你就可以更快的拿到资源。但是这一切的前提是你有多个 cpu。如过你只有一个,开和不开区别不大

三、内存

内存
notion image
内存
内存只需要说一个,ballooning。它是一种动态调节宿主机和虚拟机之间内存的技术,但是前提是你的虚拟机能够使用 ballooning。例如一些人在 pve 下安装 ikuai 总是莫名重启,可以试试关掉 ballooning,情况会有改善(我不是说开了就一定重启)
四、网络

如果你需要在 pve 下虚拟路由(例如 openwrt),建议进行直通网卡。直通网卡教程一搜一大把,我就不赘述。如果一不小心直通了管理口,无论如何进不去 pve 管理页面了,可以将 hdmi 显示输出连接到一个显示器上,在显示出的 pve 管理命令行下输入
qm stop “你的虚拟机 id(例如 101)”
之后正常进入管理页面删除直通设备就可以了。
有人会说半虚拟化已经很好了为什么要直通。诚然,对于性能比较好的主机,半年虚拟化也可以跑满带宽,但是如果有直通的条件,为什么不直通将更多的资源留给其他项目呢?如果网口不够另说。
虚拟化网卡
notion image
虚拟化网卡
另外选项中的 e1000 是历史比较悠久的虚拟化技术了,后来有 e1000e(esxi),对于 pve 来说,选半虚拟化最稳妥。
五、概要中的温度显示

有很多人需要随时看到温度情况,但是通过 sensor 命令不够直观,而且每次要进命令行。可以用一个小插件来实现温度、去掉订阅提示、换源等操作。
https://github.com/ivanhao/pvetools
使用方法 README 介绍的很详细,我就指个路就行了。效果如图
温度显示
notion image
温度显示
六、PVE 下虚拟机无法关闭问题

有时候要重启 pve,但是发现其中一个虚拟机无论如何都关不掉,不停显示停止错误。这时候可以如下操作

1. 进入 pve 命令行使用如下命令

qm stop “你的虚拟机 id”
如果显示无法停止,由于无法 unlockxxxx,进行第二步

2. 删除 conf

输入如下命令后再次执行第一步
rm /var/lock/qemu-server/lock-103.conf

七、pve 挂载 nas 存储问题

我看很多人都是通过 linux 的方式进行挂载,但是对于 nas 用户来说,有现成的 ftp、nfs 等服务时,就无须再用繁琐的挂载到 mnt 下等等操作。下面以 nfs 为例
开启你 nas 的 nfs 服务,例如威联通在共享文件夹下对你想要挂载的文件夹进行 nfs 赋权,之后进入 pve
按照如图路径进入 nfs 挂载设置
nfs 挂载
notion image
nfs 挂载
之后填入你 nfs 服务器地址即可,名称什么的看你喜好。
如图我的设置
挂载
notion image
挂载

总结

本文是写给 pve 初入门的朋友,解决一些教程不常写的细节疑惑,对于熟悉 pve 的朋友,也欢迎随时补充。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
notion image
> 本文由简悦 SimpRead 转码
目录