plex vps
媒体服务器和转码
媒体库是一个存储问题,偶尔会有计算峰值。两台机器比一台更好:VAULT 在 ZFS 上存放库,FUSION 实例在需要下午转码整个目录时提供 NVENC。通过私有 VLAN 连接它们,它们之间的流量是免费且不限量的。
为什么这个配置
VAULT 以每 TB 的价格存放库,并且它的 ZFS 快照可以防止错误的重命名。仅在需要时添加 GPU,并在任务完成后销毁它。
我们会部署什么
规模确定
分开这两种资源。库大小是 VAULT 的问题:池大小加上 20% 的余量,以及用于元数据的 ARC。转码是 FUSION 的问题。一块 RTX 4000 Ada 可以处理大约十几个并发 1080p H.264 转码,但只有三到四个 4K HEVC 流,因为色调映射在 CUDA 核心上运行,而不是编码器块。选择 L40S 以在规模上实现 AV1 输出。每个 GPU 保留 4 个 CPU 核心用于解复用、字幕和混合。
NVENC 会话以及仍然在 CPU 上运行的内容
消费级显卡历来在驱动中限制并发 NVENC 会话;专业显卡(包括 RTX 4000 Ada 和 L40S)没有此类限制,因此并发性受编码器吞吐量限制。这比 NVENC 不做什么更重要。解码使用 NVDEC,这是一个单独的块。将 HDR 色调映射到 SDR 在 CUDA 核心上运行。字幕渲染、音频转码和容器混合都在 CPU 上运行。因此,将 4K HEVC HDR 流降频到 1080p SDR 会涉及所有四条路径,这就是为什么每卡的数量从十几个流下降到少数几个。
两台机器,一个私有 VLAN
存储和 GPU 需要不同的硬件,所以它们应该作为不同的服务器运行。VAULT 在 ZFS 上持有库,并带有 NVMe 缓存;FUSION 持有卡,其余部分保持小型。加入一个私有 VLAN,并通过 NFS 以较大的 rsize 和 wsize 导出库。转码器以单个 10G 链路轻松吸收的顺序读取速率读取数据,并且这些流量都不会触及公共接口或清理路径。它还允许双方各自扩展:在不触 GPU 主机的情况下增加池容量,在不移动 20 TB 媒体的情况下增加第二张卡。
常见问题
- 认为 GPU 正在被使用。没有 NVIDIA 运行时的容器会静默地回退到 libx264,唯一的症状是 CPU 高占用和播放卡顿。在转码期间检查 nvidia-smi,而不是日志。
- 意外烧录字幕。PGS 和基于图像的字幕会强制对本来可以直接播放的流进行完整转码。尽可能转换为 SRT,并相应地设置客户端偏好。
- 将转码临时目录写入 ZFS 池。段文件是小型同步写入,而池是为大型顺序媒体调优的。将临时目录指向本地 NVMe,池就不会抖动。
调整配置
- 存储和加密 — ZFS with hourly snapshots · €7
- 地址和传输 — Private VLAN between your servers · €6
- 地址和传输 — Uplink upgrade to 10 Gbps · €19