PVE部署OMV-LXC及安装Jellyfin
前言
上篇文章我在PVE上部署了OMV,一切都准备就绪,但发现传输速度其实也并没有非常快,大概也就比黑群晖快了一倍左右,并没有跑满带宽。于是我又翻阅了大量的资料和文章。(这里吐槽一下国内的环境,百度出来的内容都是千篇一律,有价值的东西真的很少)
LXC技术
为了解决性能问题,就需要更好的方式来部署,那么PVE除了可以创建虚拟机以外,还可以创建LXC容器,LXC技术是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,这类似于我们熟悉的docker。LXC容器有以下优势:
- 与宿主机使用同一个内核,性能损耗小
- 不需要指令级模拟
- 不需要即时(Just-in-time)编译
- 容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制
- 避免了准虚拟化和系统调用替换中的复杂性
- 轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享
那么LXC容器的性能肯定是优于普通虚拟机的。于是,我就想OMV可以使用LXC进行部署吗?其实这是可行的,因为OMV的底层系统就是在debian系统,我们只需要部署一个debian的LXC容器,然后在该容器上安装OMV即可。
PVE Helper Scripts
说起来简单,但其实部署需要花很多的时间,在我决定要开始手动部署的时候,竟然发现了一个PVE宝藏脚本,Proxmox VE Helper Scripts。这是一个用来自动化创建PVE虚拟机的脚本集合,只需要界面化交互即可。这让使用PVE更加简单了。
Github地址:https://github.com/tteck/Proxmox
脚本下载地址:https://tteck.github.io/Proxmox/
大家可以去这个项目的网站看一下,会有很多新的发现和理解,它是一个非常好的开源项目,强烈推荐使用PVE的人使用它。那么在其官网,是有OMV-LXC部署脚本的,这个脚本使用起来真是相当简单。
这个网站有非常多的实用脚本可以使用,我们就以OMV-LXC脚本开始吧。
创建OMV-LXC
相比我们手动部署OMV虚拟机,使用PVE-Helper-Scripts简直不要太简单。
首先我们在官网找到
OMV-LXC的脚本。然后打开
PVE的shell命令终端,执行该脚本即可。执行脚本命令后,会出现图形化界面,只需根据提示设置即可,非常简单。在这个过程中,会问你是否默认设置安装,可以选择
Advanced高级,根据提示去设置,主要是设置CPU,内存,硬盘等信息,硬盘我只给了20GB,用于安装系统和docker,之后会挂载新的硬盘。安装过程中,需要根据提示,选择
debian 11,设置容器为特权容器(这个很重要),打开ssh等,然后等待安装完成即可,安装完成后,PVE管理页面左侧就会出现该虚拟机,这就安装完成了。注意点:在
PVE中,LXC被称为CT。
设置OMV-LXC
虽然安装是比较简单的,但是当我们进入OMV-Web管理页面时,会发现没有磁盘可用,OMV无法发现磁盘。这才是整个部署过程中最难最花费时间的部分。
挂载硬盘
首先因为我只给了omv 20GB的磁盘,只为了装系统和简单使用docker而已。所以我需要挂载新的硬盘上去,但因为LXC容器是没有直通的,直接使用宿主机的资源。所以我们需要先将其他的硬盘作为lvm或目录挂载到PVE上。
在跟节点,选择磁盘,然后创建Volume Group,当然你也可以创建目录的形式,这些都是可以挂载到LXC容器的。在创建Volume Group时选择一个新的硬盘,如果没有新的硬盘,就无需创建,直接使用系统盘挂载到omv即可。
创建完成后,点开我们刚刚安装好的`omv-lxc`虚拟机,选择资源,点击左上角添加,添加挂载点即可。这里存储选择系统盘或者刚刚创建的即可。路径是挂载到`omv-lxc`中的路径。输入要挂载的磁盘大小即可。
设置硬盘
虽然我们挂载了磁盘,但是在omv中,我们还是无法使用,omv找不到这些挂载点。我们需要进行一些设置,让omv可以识别到。
查看挂载点Block Device
我们打开PVE,在PVE的shell执行以下代码,用来查询挂载点的Block Device:
1 | lvdisplay |
记住这个参数253:10,我们需要设置LXC容器的执行权限,并告诉OMV有这个磁盘。不管你挂载了多少磁盘,都是通过上面的命令来获取Block Device参数的。
创建挂载脚本
为了让OMV识别该挂载点,我们需要编写一个挂载脚本,我这里LXC容器ID是102,需要换成你LXC容器的ID,然后在脚本中填入需要识别的block device。
1 | 使用vim创建挂载脚本,也可以使用nano或vi |
这里需要说明的是,
/dev/sda是LXC容器内的设备,这个需要挂载后去 容器中查看 的。在容器中使用lsblk命令进行查看。例如,我这里是sda,所以是/dev/sda。这一步的对应,主要是为了在omv中存储器/磁盘中可以看到该磁盘。
设置LXC容器权限
上面设置好挂载点后,我们还需要将磁盘的权限给LXC容器开通,并将挂载脚本告诉LXC容器。这里我们只需要设置/etc/pve/lxc/[LXC_ID].conf文件即可,[LXC_ID]就是你的LXC容器ID。
1 | 编辑conf文件,102换成你LXC容器的ID |
设置文件系统
修改完配置文件后,重启
LXC容器,然后登录omv网页即可看到磁盘了。进入
omv存储器菜单 -> 点击文件系统 -> 挂载现有文件系统 即可。剩下的设置SMB/NFS与上篇文章一样。
更新OMV
只需要执行以下命令进行更新即可。
1 | omv-upgrade |
安装docker及部署jellyfin
在omv中可以使用omv-extras安装docker,web页面有portainer进行管理。但新版已经将portainer移除,使用compose进行管理,易用性确实没有portainer强了。
我的想法是将jellyfin安装在LXC容器中,这样方便使用。不过在LXC容器中的omv安装compose插件时却出错了,根本无法安装,又因为已经没有了portainer进行管理,不如自己手动安装docker好了,顺便再安装portainer进行管理即可。
安装docker
- 更新apt及安装依赖
1 | sudo apt-get update |
- 添加官方
Docker GPG Key
1 | sudo install -m 0755 -d /etc/apt/keyrings |
- 设置仓库
1 | echo \ |
- 安装
1 | sudo apt-get update |
- 完成
1 | 查看版本 |
安装docker-compose(可选)
docker-compose可以不装,但是我比较喜欢使用docker-compose去写yaml脚本,然后再去运行容器,不需要输入一大堆命令。
1 | 下载docker-compose |
部署portainer
- 创建docker-compose.yml
1 | version: '3.2' |
- 启动portainer
1 | docker-compose up -d |
部署jellyfin
我们可以通过portainer或者docker-compose进行部署。
Portainer部署jellyfin
创建容器,镜像为
nyanmisaka/jellyfin,端口为8096设置挂载
设置设备挂载
部署容器
docker-compose部署jellyfin
- 编写
docker-compose.yml文件
1 | version: '3.2' |
- 运行容器
1 | docker-compose up -d |
总结
在LXC容器中的omv性能确实非常不错,上传直接跑满带宽,下载速度要稍微慢一些,但也很不错了。总的来说很不错,不枉费这段时间的折腾。
部分参考
- https://tteck.github.io/Proxmox/
- https://github.com/tteck/Proxmox
- https://github.com/tteck/Proxmox/discussions/1075
- https://github.com/tteck/Proxmox/discussions/418
- https://forum.proxmox.com/threads/openmediavault-installation-in-lxc-with-attached-hw-block-device.29918/
- https://hub.docker.com/r/nyanmisaka/jellyfin












