V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ahdw
V2EX  ›  Mac mini

分享一下 Mac mini 和 NAS 搭配使用的折腾记录

  •  
  •   ahdw · 13 小时 14 分钟前 · 153 次点击

    背景

    NAS 是双盘位的低功耗 ARM 芯片千兆网机型,1.4 GHz ,只有 1 GB RAM 。Mac mini 就是丐版的 M4 Mac mini ,16 GB RAM ,千兆网口,256 GB SSD 。家里是千兆局域网环境,iperf3 测速能跑到 800-900 Mbps 。

    问题描述

    之前在 NAS 上用 Docker 跑 Transmission ,下载 2-3 个种子 UI 就会卡死,而且下载速度远远达不到家里宽带的上限( 500 Mbps )。

    折腾方案

    现在的做法是,所有的文件依然保留在 NAS ,但是把 Transmission 跑在 Mac mini 上。写了个小脚本,用 transmissionrpc 把种子重新添加到新的 Transmission ,并指定文件路径、校验本地数据,继续做种。

    有一块闲置的 500 GB NVMe M.2 SSD ,搞了个 USB 3.1 Gen 2 的硬盘盒,插在 Mac mini 上。Transmission 直接下载到这块 SSD 上,5 个热门种子同时下载,跑满了家宽下行( 69 MB/s ),UI 不卡,也不影响用 Mac mini 干别的事(废话!)。

    在 transmission 的 settings.json 里面启用 script-torrent-done-enabled  并且在 script-torrent-done-filename 指定了用 python 写的一个脚本:

    1. 用 Bark 推送消息到 iPhone ,包含种子名字、大小、平均下载速度
    2. 识别当前种子路径,如果是 SSD Cache 目录,就往 RabbitMQ 发送一个 rsync 任务
    3. 等待 rsync 完成,发送通知,包含文件大小、等待时间、同步时间
    4. 更新种子路径到 NAS ,并校验本地数据,确保继续做种
    5. 根据类别和文件名(只考虑视频文件)在对应目录创建硬链接,并发送通知
    

    之所以用 RabbitMQ ,是为了确保多个种子先后完成的时候,往 NAS 同步是串行写入,避免并行写入降速。毕竟 NAS 的 CPU 和 HDD I/O 都是瓶颈。

    刮削还是 TinyMediaPlayer 好用,但是需要手工操作。为了能远程使用,是在 Mac mini 上用 Docker 跑的。刮削涉及小文件读写,所以 NAS 不用 SMB ,而是用 NFS 挂载在 Mac mini 上的。这样做也方便统一 Transmission 和 TMM 的 PUID 以及 PGID ,防止权限混乱。

    Jellyfin 是跑在 Mac mini 上的,刮削完几乎立即就能识别到媒体库,而且在不同设备上播放的时候,在 Mac mini 上能实时转码太爽了。

    最后

    Mac mini 搭配 NAS 使用,前者能为后者提供超强算力(硬件解码等等),后者能为前者提供超大容量存储。折腾一番,心满意足。

    分享给大家。

    2 条回复    2025-09-16 15:11:13 +08:00
    stinkytofux
        1
    stinkytofux  
       13 小时 7 分钟前
    闲的蛋疼, 你这方案既复杂又不方便. 又没有发挥 NAS 的作用, 直接用 NAS 开一个 SMB 或者 NFS 共享, 文件直接下载到 nas 上不就行了. 下载和做种工具建议用 docker 装 qBittorrent.

    如果你的 NAS CPU 连 SMB 这种协议都跑不满的话, 还不如直接扔掉算了.
    ahdw
        2
    ahdw  
    OP
       13 小时 4 分钟前
    @stinkytofux 不管是 SMB 还是 NFS ,NAS 上都有协议开销+局域网传输+HDD I/O 太慢,试过直接下载到 NAS ,速度上不去。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:15 · PVG 04:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.