NAS系列 PVE基本设置
本文最后更新于 21 天前,如有失效请评论区留言。

本博客用什么VPS?创作不易,您可以支持苯苯!

前言

经过自己摸索或看司波图的教学视频,相信你已经成功安装PVE系统了。现在我们开始设置PVE吧 (ฅ´ω`ฅ)

我的NAS系列文章里,PVE设置大概的设置顺序如下:

  • 对PVE进行一些基本设置
  • 安装好OpenWrt,保证上网
  • 安装好OMV,保证存储
  • 安装LXC,完成核显直通,爽快解码看剧

本文主要完成的是第1条内容。

另外,为了避免混淆,我在这里对主机及其应用作一些简单的约定。如无特殊,Node的名字就叫PVE;PVE Node中的OpenMediaVault虚拟机简称PVE.OMV;PVE Node中的OpenWrt虚拟机简称PVE.OpenWrt;PVE Node中的LXC简称PVE.LXC;如此类推。我目前只用到这3个虚拟机。PVE Shell指的是登陆PVE的Shell,如此类推。应该不难分辨!这些约定将适用于整个NAS系列的教程

下面,我们开始设置PVE系统吧!

连接PVE

安装好PVE后,显示器显示的是PVE Shell。我们平时主要是在网页里管理PVE,它是一个图形界面:

Code_TF7ok7HpHE

这里有两个方法将你的个人电脑连接PVE系统:

  • 方法一:我们可以用网线将个人电脑和NAS上任一网口相连。这时,你需要在个人电脑后台暂时设置一个与NAS同网段的IP。以Win10系统为例,我们可以在左下角搜索“网络连接”,打开后找到正在连接的网口,右键“属性”进行设置:

FSCapture_jABjBbAQ6Z

  • 方法二:你也可以连接个人电脑-交换机-NAS。该方案的好处就是,如果你之前的上网设备还在正常工作,你可以暂时使用旧设备进行联网,这样进行更新PVE、查看视频教程等操作时会比较方便。这也是为什么之前我推荐大家在安装PVE时将IP与原上网环境处于同一网段

IP/SSH

这个IP地址是你安装PVE时自己设置好的,之前在《NAS系列 准备安装PVE系统》的“PVE安装”小节里我有提及。它的形式一般如下:

https://192.168.1.XXX:8006

如果你忘记了地址,也可以将NAS与显示器连接,直接在PVE Shell里输入以下命令查看:

cat /etc/issue

输出类似于:

------------------------------------------------------------------------------
Welcome to the Proxmox Virtual Environment. Please use your web browser to
configure this server - connect to:
https://192.168.1.XXX:8006/
------------------------------------------------------------------------------

即可获得地址。

另外,PVE默认是不支持ssh远程登陆的;但为了方便,我们也可以设置PVE支持远程root登陆。具体的方法是在~/.ssh/authorized_keys文件里添加用户信任的主机公钥,详情可见《Linux基础 基于密钥对的SSH远程登陆》。通过这个方法,可以轻易地用MobaXterm等终端访问PVE:

Code_hDarUudc9E

建议将ssh的默认连接时间延长,以防连接中的Shell频繁掉线。具体作法如下:

安装vim:

apt-update && apt install vim -y

在PVE Shell里输入:

vim /etc/ssh/sshd_config

找到下面2个参数:

#ClientAliveInterval 0
#ClientAliveCountMax 3

去掉前面的注释,并修改值为:

ClientAliveInterval 60
ClientAliveCountMax 3

重启sshd服务,使配置生效:

service sshd restart

换镜像源

换镜像源主要是为了加快资源访问速度,玩国内VPS的小伙伴应该不陌生的!我们要换PVE源Debian 11的源(以清华镜像为例)。自己看链接的内容吧,说得挺清楚的,我就不演示了。

建议在修改镜像源文件时备份旧文件,比如Debian 11的镜像源可以这样备份:

# 备份镜像源的原始文件
cp /etc/apt/sources.list /etc/apt/sources.list.backup01

有什么风吹草动就回滚:

rm -r /etc/apt/sources.list
cp /etc/apt/sources.list.backup01 /etc/apt/sources.list

至于想用其它国内源的自己Google百度之。

移除弹窗提示

新安装的PVE会有一个订阅提示,每次登陆后台都会跳出来烦人。我们可以禁用这个订阅提示

打开proxmoxlib.js文件:

vim /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

定位至No valid subscription第一次出现的地方(Vim可以使用:?No valid subscription,用大写N定位),找到res===null||res===undefined|..那一堆东西:

msedge_1lIblQwjbd

改为false

Code_tYWxhuq6JW

:wq保存退出。我不记得是不是重启生效了,如果刷新PVE界面没生效就重启一下PVE。

SATA可用性

我们可以拿一个没坏的硬盘,每个孔都试探一下。如果SATA接口工作正常,大小灯都会亮(小灯比较暗):

msedge_jYn0edcbSJ

同时,在PVE Shell里输入fdisk -l命令也可以查看。这里有个示范信息:

...
Disk /dev/sda: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: WDC WD80EFZX-68U
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 64B3C10C-5000-419C-975E-3B012E8169BE

Device     Start         End     Sectors  Size Type
/dev/sda1   2048 15628052479 15628050432  7.3T Microsoft basic data
...

这里的Disk /dev/sda: 7.28 TiB即是我插入的硬盘。当然,你也可以在PVE后台里查看硬盘的挂载情况:

msedge_kchFnrhQDM

在没有直通SATA控制器之前,这里应该可以实时看到新插入的硬盘。当然,你需要在Bios里正确地设置了Hot Plug=Enabled(详见《NAS系列 准备安装PVE系统》的“硬盘启动顺序、热插拔”),这样硬盘才支持热插拔!

应该逐一检查每个硬盘槽,直至确认所有的硬盘SATA工作正常为止。当时我发现有一个SATA口工作不正常,后来了解到是主板跳帽设置不对。如果你已经看过《NAS系列 硬件选择》,跳帽的设置应该没有太大问题。装机时SATA口接线接牢固,一般问题不大的!

网络

这一小节既是重点也是难点,大家要仔细了!(敲黑板) 我画图用的工具是自建的“苯苯白板”,欢迎使用!

网络结构

可能不是最理想的PVE网络结构,但可以正常使用。大家有更好的网络结构可以评论区留言喽!

网络拓扑图如下,适合多网线设备的接口(只要2.5G交换机的口子多一点就行):

此隐藏内容仅限VIP查看。包年VIP仅10元,建议升级。VIP可享有哪些特权

其它网络结构2

image-20230225142215296

这里我会直接将2.5G网口直通给OMV,接线方法是2.5G网口——2.5G物理交换机。这种方法的好处是个人电脑与OMV进行通讯时不依赖vmbr0和其它虚拟网口,这样对CPU并不会造成额外损耗。实际上,这是一种更加合理的方案。

但是,该网络结构有一个致命缺陷——如果你在中途停止OMV,则会导致整个网络异常;只有将2.5G网口的网线拔掉后,整体网络才会恢复正常。如果你是远程控制PVE并且不小心停止OMV虚拟机,那你的心态绝对会爆炸的。我推测这是因为OMV停止后,PVE系统会重新接管该网口,导致网络短路。我推测,如果可以将该网口在PVE中完全屏蔽(像屏蔽核显那样),该方案应该是可以实现的。不过目前暂时还没有完美的解决方案。

有什么建议大家可以评论区留言!

更新软件包

在没安装什么虚拟机时,更新软件包还是可以的。命令和Ubuntu类似:

# 更新软件列表
apt update

# 查看可更新的软件包
apt list --upgradable

# 更新全部可更新的软件包
apt upgrade -y

稳定运行的时候,最好别有事没事升级。或者,你专门挑个有空的时候再升级比较安全,以防新软件包没有向下兼容而导致系统崩溃!

硬件直通/核显直通

由于我需要将核显直通给LXC,且硬件直通涉及的grub文件修改后要重启生效,这里一并做完。在做硬件直通给Linux系统/LXC前,请确保Linux内核升级到较新版本(对G5400T而言,需要内核5.18或以上)。这里的“内核”指是是使用该核显的系统,它并不一定是PVE系统。如果你将核显直通给LXC,升级PVE的Linux内核;如果将该核显直通给某Linux虚拟机(比如OMV),则升级该虚拟机的Linux内核。如果虚拟机是Windows系统,一般都可以成功使用直通的核显,不需要特别地在意所谓的Linux内核版本。“直通给LXC”和“直通给虚拟机”二选其一即可

以下教程都是基于G5400T的Intel Corporation CoffeeLake-S GT1 [UHD Graphics 610]核显,可能并不是一种通用的方法。其它核显的方法应该是类似的思路,但代码可能不一样。如果你是AMD的CPU,就更加不适用此教程,仅供参考了。更多技巧请参考官方文档Pci passthrough – Proxmox VE

直通给LXC

我目前正在使用的方案。如果你准备使用此方案,该视频是一个质量不错的教程,也比较新,值得关注!

核显直通给LXC时,本质上是在PVE里使用该显卡。5.19版本的Linux内核不容易产生直通成功但Jellyfin无法驱动核显的bug。因此,我们先更新PVE内核至5.19版本:

apt update && apt install pve-kernel-5.19 -y

然后,我们要确定PVE系统是否可以正确识别核显。只需在PVE Shell里运行:

ls -l /dev/dri

输出类似于:

total 0
drwxr-xr-x 2 root root         80 Feb 25 11:32 by-path
crw-rw---- 1 root video  226,   0 Feb 25 11:32 card0
crw-rw---- 1 root render 226, 128 Feb 25 11:32 renderD128

出现card0renderD128(或者类似的东西)代表PVE可以成功识别该核显。如果没有出现cardrender字样的文件,说明PVE系统没有正确地识别该显卡,此时需要安装Linux版Intel显卡驱动。这里有两种方案可依次试验:

  • 方案一apt update && apt install vainfo -y。安装完成后再试试运行ls -l /dev/dri
  • 方案二:如果方案一不生效,请在/etc/apt/sources.list里添加Debian的contrib non-free源,然后试运行apt install intel-media-va-driver-non-free -y。安装完成后再试试运行ls -l /dev/dri

我记不太清自己有没有遇见PVE无法识别核显的情况了。根据文章How to Identify & Find Graphics Drivers for Linux,大多数Linux发行版都已经内置Intel显卡驱动,但一般是由发行版托管而不是Intel (ฅ´ω`ฅ) 总之,如果你遇到无法识别核显的bug,可以试验上述方案,两者都是手动安装Intel驱动的方法。有什么问题可以评论区留言!

确定核显被PVE正确识别后,我们打开grub文件:

vim /etc/default/grub

修改参数:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=2"

如图所示:

NVIDIA_Share_HsYPo9hoi3

quiet选项用于阻止Linux提供引导过程的Shell输出,intel_iommu=on指的是用intel_iommu驱动来驱动IOMMU硬件单元。这两个选项一开启,其实PVE就可以进行硬件直通了(比如直通网卡、SATA控制器等)。i915.enable_guc=2是确保核显开启HuC固件,它与核显的硬件解码功能有关。这些选项其实是定义Linux Kernel的行为。按我的理解是这样,不正之处请评论区留言哈!

添加完成后,更新grub生效:

update-grub

重启PVE。之后,在PVE Shell里查看显卡工作是否正常:

journalctl -b -o short-monotonic -k | egrep -i "i915|dmr|dmc|guc|huc"

输出类似:

NVIDIA_Share_5pTwkbbq2I

这里的HuC authenticated表明HuC固件是正常工作的,但GuC SLPC disabled表明GuC未成功启动。根据此文章的部分内容:

DMC 为显示微控制器,主要提供额外的图像处理器低功耗空闲状态。它具有从 OS 内核中跨低功耗状态保存和恢复显示寄存器的能力,保证系统在降低功耗的同时可以高性能工作。
GuC 主要负责多图像处理引擎的任务负载调度。在调度模型中,主机软件通过256个图像doorbell中的一个来提交任务,从而激活对应图像引擎上的调度操作。调度操作负责决定下一步运行哪个x负载、向命令streamer 提交负载、抢占运行在一个引擎上的负载、监视任务进度以及提醒主机软件任务何时结束等。

我测试了很久,发现HD610似乎并不支持开启GuC,只支持开启DMC和HuC。从Jellyfin硬解设置中,我发现要启用低电压模式的硬件编码器只需要Linux内核开启HuC固件。所以只要HuC能成功开启应该问题不大。事实上我在LXC中使用HD610是可以成功解码H265的。

这样,核显就满足成功直通给LXC的条件了。之后的操作很简单,这里按下不表。

直通给虚拟机

测试时未将OMV的Linux内核升级到5.19,故未成功测试。但思路应该是对的。仅供参考!

值得一提的是,如果你要将核显直通给虚拟机(比如OMV),那么还需要一些额外的操作——为了让PVE不使用该核显

以OMV为例,查看已安装的内核:

find /boot/vmli*

输出类似于:

/boot/vmlinuz-5.18.0-0.deb11.4-amd64
/boot/vmlinuz-5.19.17-2-pve
/boot/vmlinuz-6.0.0-0.deb11.6-amd64

查看正在使用的内核:

uname -a
# Linux pveomv 5.19.17-2-pve #1 SMP PREEMPT_DYNAMIC PVE 5.19.17-2 (Sat, 28 Jan 2023 16:40:25  x86_64 GNU/Linux

提示为5.19.17-2-pve。实际上,OMV的内核由omv-extras插件openmediavault-kernel管理:

NVIDIA_Share_RkOHzvdJtS

它设置内核的方式也比较简单:

NVIDIA_Share_S6cs8LeKZM

使用OMV的小伙伴建议使用5.19-pve内核,这既和ZFS协议兼容的Linux内核版本,也是对核显直通的兼容性比较好的版本。下面我们正式开始核显的直通工作!

第一步,屏蔽显卡驱动。我们在PVE Shell里输入:

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

添加以下内容:

blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

更新屏蔽:

update-initramfs -u 

第二步,我们修改启动项,让核显开机时不随PVE自启动。我们打开grub文件:

vim /etc/default/grub

修改参数:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"

关于efifb的具体设置可见此文video=efifb:off意味在boot阶段不通过UEFI启用显卡(因为我们不需要在PVE里使用显卡,而是在LXC中;那是PVE系统成功启动之后)。

修改完成后,更新grub生效:

update-grub

第三步,屏蔽核显的PCI通道。我们先找到核显的PCIE通道,在PVE Shell里输入:

lspci -nn | grep VGA

输出为:

00:02.0 VGA compatible controller [0300]: Intel Corporation CoffeeLake-S GT1 [UHD Graphics 610] [8086:3e90]

即可确定id为8086:3e90。我们修改/新增一个文件/etc/modprobe.d/vfio.conf,添加屏蔽记录:

options vfio-pci ids=8086:3e90

然后再更新屏蔽:

update-initramfs -u 

第四步,重启PVE。在PVE Shell中输入:

reboot

这样,核显就满足成功直通给虚拟机的条件了。之后的操作很简单,这里按下不表。

重启/断电测试

所有东西设置完后,进行重启、断电测试。如果PVE都可以正常启动,再折腾虚拟机/LXC;否则就排故障,直至问题解决为止。

这里要特别注意的是:断电再通电,NAS是否自启动?如果NAS是关机状态,断电再通电,NAS是仍然保持关机还是会自启动?

小结

PVE的基本设置就是这些。主要是网络结构那里比较复杂,小白得仔细想想。至于其它部分,对于熟悉Linux和Vim编辑器的人来说只是小case;如果你对Linux不太了解,还是建议先了解《学习地图 》的“Linux基础”系列文章。

写本教程距离我装机也有些时日了,有些细节记不太清,以后再慢慢补充吧。

如果你在设置过程中有什么问题,也可以直接在评论区下留言!

扩展阅读

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |
暂无评论

发送评论 编辑评论


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