在Proxmox VE中直通设备给LXC容器

2025-11-26 08:52:24 1点赞 3收藏 0评论

PVE下利用LXC容器安装了Jellyfin服务,同时把PVE下的硬盘LXC资源下以raw文件形式挂载,也就是Jellyfin媒体库实际上是挂载在Proxmox VE虚拟机的虚拟磁盘上,媒体库挂载点原本是一个loop设备。

虚拟磁盘+loop设备的双重抽象确实会对视频流媒体性能产生影响。那么如何将PVE下的硬盘直通给jellyfin做媒体库?在LXC下挂载直通盘是无法实现的?

由于我们正在将PVE下的设备/dev/sda1直通给LXC容器(jellyfin),我们需要在Proxmox VE宿主机上操作,并将该设备添加到LXC容器的配置中。

注意:LXC容器使用设备直通需要特定的配置步骤。

步骤1:在Proxmox VE宿主机上,检查设备/dev/sda1的详细信息,特别是主要和次要设备号。

在PVE宿主机上执行:

# 查看磁盘设备信息 lsblk fdisk -l /dev/sda # 检查文件系统类型 blkid /dev/sda1 # 查看设备主要和次要编号 ls -la /dev/sda1

输出示例:
brw-rw---- 1 root disk 8, 1 May 25 10:00 /dev/sda1
这里8是主设备号,1是次设备号。

在Proxmox VE中直通设备给LXC容器

步骤2:编辑LXC容器的配置文件
编辑配件文件前需要先停止LXC容器

在PVE宿主机上:pct stop 101

在PVE宿主机上,LXC容器的配置文件通常位于 /etc/pve/lxc/<容器ID>.conf

假设容器ID为101,则配置文件为 /etc/pve/lxc/101.conf

在文件中添加以下行:
lxc.cgroup2.devices.allow: b 8:1 rwm
lxc.mount.entry: /dev/sda1 dev/sda1 none bind,optional,create=file

解释:
第一行:允许容器访问特定设备(主设备号8,次设备号1,块设备,读写权限)
第二行:将宿主机的/dev/sda1挂载到容器内的/dev/sda1

步骤3:重启LXC容器
在PVE宿主机上执行:pct restart 101

步骤4:在容器内检查设备
进入容器:pct enter 101
或者
lxc-attach -n 101

在容器内执行:
ls -l /dev/sda1

如果设备存在,则直通成功。

注意:如果容器内需要使用该设备,可能需要容器内也有相应的驱动。对于磁盘设备,通常容器内会自动识别。

另外,如果希望容器启动时自动挂载该设备上的文件系统,需要在容器内编辑/etc/fstab并添加挂载项,但请注意,直通设备后,在容器内看到的设备是/dev/sda1,你可以在容器内将其挂载到某个目录,例如/mnt/yingshi。

在容器内挂载:
mkdir -p /mnt/yingshi
mount /dev/sda1 /mnt/yingshi

如果希望开机自动挂载,在容器内的/etc/fstab中添加:
/dev/sda1 /mnt/yingshi ext4 defaults 0 0

请根据实际文件系统类型替换ext4。

重要:在直通设备并挂载后,确保Jellyfin容器内的用户jellyfin有权限访问/mnt/yingshi下的文件。

如果之前媒体文件就在这个设备上,那么现在Jellyfin应该可以访问了。

如果之前媒体文件不在这个设备上,那么你可能需要将媒体文件复制到这个设备上,然后调整Jellyfin的媒体库设置。

注意:直通整个磁盘设备给LXC容器意味着容器可以直接访问该磁盘,请确保容器是可信的,因为直通设备可能会带来安全风险。

如果遇到权限问题,可以在容器内使用chmod和chown调整权限,或者确保Jellyfin运行的用户有权限访问该挂载点。

完成以上步骤后,你的Jellyfin LXC容器就可以使用直通的磁盘设备了,性能会比之前的loop设备方案好很多。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
3
扫一下,分享更方便,购买更轻松