在TrueNAS系统中安装PVE内核
在TrueNAS系统中安装PVE内核
迷失的小K前言
在NAS存储系统中,TrueNAS Scale 的可玩性非常的高,包括 K3s,Docker 等容器服务及虚拟化服务等也一应俱全。但在虚拟化系统中,仍然有一个更强的存在,那就是 PVE(Proxmox VE) 。当然,我们可以选择PVE套虚拟化 TrueNAS Scale , 或者 TrueNAS Scale 套虚拟化 PVE, 但都会有一定的损耗。但是我发现无论是 PVE 还是 TrueNAS Scale, 都是基于 Debian 系统的,那么有没有可能同时在物理机上跑起来 PVE 和 TrueNAS Scale 呢?经过我 一小时 的简单摸索,给出了如下方案。
注意:本文仅为实验性测试,不保证安装后TrueNAS Scale稳定性
解决方案
基于 Debian 12 AMD64
1. 更改 TrueNAS 设置
打开 TrueNAS SSH
- 进入你的 TrueNAS 管理面板
- 系统设置 -> 服务 -> SSH, 运行中与自启打勾
- 用户凭证 -> root -> 编辑 -> 禁用密码取消打勾,并在下方设置密码
- SSH 登录 TrueNAS
给予 root 用户权限
chmod +x /usr/bin/*
chmod +x /usr/sbin/*
2. 更改 Hosts
一般情况下主机名通过 /etc/hosts
解析。
默认的Hosts文件可能如下:
127.0.0.1 truenas.local truenas |
我们需要把第一行主机名解析成网口上的IP(上游DHCP所分配的IP,一般默认为静态)
并且要把第一行放到第二行下,如下:
127.0.0.1 localhost |
若您不知道自己的IP地址也可以使用如下指令:
hostname --ip-address |
为了防止 TrueNAS 开机自动替换 Hosts 文件,还需要做以下操作:
复制正常的hosts文件,然后配置开机脚本,进行替换。
cp /etc/hosts /opt
添加一个启动脚本。
echo '#!/bin/bash' >>/etc/rc.local
echo 'cp /opt/hosts /etc/hosts && systemctl start pvestatd' >>/etc/rc.local给脚本执行权限。
chmod +x /etc/rc.local
3. 添加 PVE 源并更新
在终端执行如下指令之一,若国内访问建议使用 国内源
官方源:
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg国内源:
echo "deb [arch=amd64] http://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
更新系统软件包:
apt -y update && apt -y full-upgrade
您的系统可能会有如下警告,是由于TrueNAS系统的软件包Public Key放到了默认的文件中,但Debian官方不建议这么做,可以忽视:
W: http://apt.tn.ixsystems.com/apt-direct/cobia/23.10.0/pcm/dists/bookworm/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
同时还会有一条PVE软件包的错误,是由于没有企业认证,不影响公开软件包,可以忽视:
E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/bookworm/InRelease 401 Unauthorized [IP: 103.76.41.50 443]
4. 更改 initramfs zfs 挂钩脚本
执行以下脚本,将
MODULES=most
添加至/usr/share/initramfs-tools/conf-hooks.d/zfs
文件:echo "MODULES=most" >> /usr/share/initramfs-tools/conf-hooks.d/zfs
安装过程中可能会找不到
modules
文件,不影响安装,也可以自己 touch 一个:touch /etc/initramfs-tools/modules
5. 安装 PVE 内核
不多说,直接 Bash 命令安装:
apt install pve-kernel-6.2 |
6. 安装 PVE 包
若上一部正常安装完成,没有任何 Error ,我们就可以正式安装 PVE 环境了!
卸载不兼容的包
apt autoremove -y qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86 qemu-utils
安装 PVE
apt update && apt --no-install-recommends --no-install-suggests install proxmox-ve openssl open-iscsi chrony
# PVE 官方安装了 postfix 邮件收发服务器,但是与 TrueNAS 的 exim4 不兼容,故未安装您可以删除为安装添加的无订阅存储库。
rm /etc/apt/sources.list.d/pve-install-repo.list
建议:删除 os-prober
os-prober 软件包扫描主机的所有分区以创建双引导 GRUB 条目。但扫描的分区还可以包括分配给虚拟机的分区,而虚拟机不希望将其添加为启动项。
在您未配置双系统或多系统的前提下,可安全执行删除命令
apt remove os-prober
7. 配置 PVE 网络
登录 PVE
ip:8006
数据中心下方 truenas -> 系统 -> 网络 -> 创建 -> Linux Bridge
其中,IPv4填写你的主机IP地址(大多为您面板的访问IP),网关填写您上级路由网关,桥接端口填写分配地址的网口名称。
若为多网口设备,请参考司波图 PVE AIO 教程:https://gitee.com/spoto/PVE_Generic_AIO
8. PVE 挂载 TrueNAS zfspool
- 数据中心 -> 存储 -> 添加 zfs , ID随便写一个方便记忆的, zfs池选择想要挂载的zfs池。
- 完成(我也不知道为啥我要分两条)。
Troubleshooting
PVE 内核启动失败
如果内核启动失败,错误日志为
error: bad shim signature.
。确保 BIOS 中
Secure Boot(安全启动)
为关闭状态。ipcc_send_rec[1] failed
如果你看到类似的日志:
ipcc_send_rec[1] failed: Connection refused
请确保你的
/etc/hosts
文件配置正确。由于 NTPsec Hook 导致网络启动失败
安装 chrony 代替原本的NTP服务
apt install chrony
RRD错误
表现在PVE的监控不正确,如时间异常。
解决方法:创建一个rrd文件夹
mkdir -p /var/lib/rrdcached/db/
systemctl restart pvedaemon
参考资料
- Install Proxmox VE on Debian 12 Bookworm:https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_12_Bookworm
- TrueNAS scale 集成PVE:https://foxi.buduanwang.vip/virtualization/pve/2901.html/
- 司波图 / 通用PVE AIO安装教程:https://gitee.com/spoto/PVE_Generic_AIO