绿联 NAS (N100) 系统调优

极限性能与稳定性的平衡艺术

警告

风险提示 下文涉及内核与系统服务的底层修改。不懂的指令不要输,不确认的选项不要选。 绝对禁止执行 apt upgrade kernel 或修改 /boot 分区,这会导致系统无法引导!

alt text


1. 为什么需要调优呢?(Why & When)

开工之前,不仅要“知其然”,更要“知其所以然”。绿联这台 N100 NAS 虽然性价比极高,但出厂的系统配置为了照顾“开箱即用”的稳定性,在性能释放上非常保守。

我们可以通过以下四个维度来判断你的设备是否需要“手术”:

内存瓶颈 (Memory Pressure)

  • 现象:N100 标配 8G 内存,对于单纯的文件存储确实够用。但一旦你开始运行 Docker(Jellyfin、Immich、ElasticSearch),内存会迅速捉襟见肘。
  • 后果:当物理内存耗尽,Linux 会被迫使用硬盘上的 Swap 分区。硬盘读写速度(几十 MB/s)远低于内存(几十 GB/s),导致系统由于频繁 I/O 等待而假死卡顿
  • 自检命令
    1
    2
    3
    4
    5
    
    # 查看内存使用情况。如果 Swap 的 used 不为 0 且数值很大,说明内存严重不足。
    free -h
    
    # 实时监控 Swap 交换频率。si/so (swap in/out) 列如果不为 0,说明系统正在疯狂读写硬盘换页。
    vmstat 1 5

截图不作参考了,服务器已经扩充Swap

alt text

网络协议栈 (Network Stack)

  • 现象:在局域网内跑满 2.5G 没问题,但通过公网(异地组网、FRP、IPv6)访问时,速度远低于带宽上限,且容易断连。
  • 原因:Linux 默认的 TCP 拥塞控制算法(Cubic)对丢包非常敏感。在公网这种长链路、易丢包的环境下,一旦检测到丢包就剧烈降速。而 Google 的 BBR 算法则是通过探测带宽来动态调整,抗丢包能力极强。
  • 自检命令
    1
    2
    
    # 查看当前拥塞控制算法。如果输出不是 bbr,说明你在公网环境下还有很大提速空间。
    sudo sysctl net.ipv4.tcp_congestion_control

alt text

并发限制 (Concurrency Limits)

  • 现象:部署了数十个 Docker 容器后,某些容器突然日志报错 Too many open files,或者 qBittorrent 无法连接更多 Peer。
  • 原因:Linux 默认为了防止单个进程耗尽资源,将单进程允许打开的文件句柄数限制为 1024。对于文件密集型的 NAS 应用(数据库、下载器)来说,这个阈值太低了。
  • 自检命令
    1
    2
    
    # 查看当前用户的软限制。如果是 1024,建议调大。
    ulimit -n

系统冗余 (System Bloat)

  • 现象:什么都没干,CPU 占用率却居高不下,硬盘一直在“炒豆子”。
  • 原因:原厂系统为了提供“智能”功能,后台常驻了大量索引、AI 识别、转码服务。如果你习惯使用 Docker 替代方案(如 PhotoPrism 替代相册),这些原厂服务就是纯粹的吸血鬼
  • 自检命令
    1
    2
    
    # 按 M 键按内存排序,查看是否存在 ug- 开头的非必要高占用进程
    top

如果以上任何一条击中了你的现状,那么请继续往下阅读。


2. 内存优化:zRAM (压缩内存)

官方文档

zRAM 是 Linux 内核的一项技术,它在物理内存中划分出一块区域,将准备写入磁盘 Swap 的数据压缩后存入这块区域。

  • 原理:用 CPU 算力(压缩/解压)换取 I/O 速度和空间。
  • 收益:N100 的算力换取 2GB+ 的额外可用内存,且速度是纳秒级(内存)而非毫秒级(硬盘)。

压缩算法选择

  • lzo/lzo-rle:速度快,压缩率低(适合 CPU 较弱的设备)。
  • zstd:压缩率高,速度较快(推荐现代 CPU 使用)。
  • deflate:平衡型,资源占用适中。

实施步骤

由于绿联内核可能阉割了 zstd 算法,我们需采用兼容策略。

第一步:临时验证 (立即生效)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. 检查支持的算法 (查看中括号选中的项)
modprobe zram
cat /sys/block/zram0/comp_algorithm
# 预期输出包含:[lzo] lzo-rle ...

# 2. 重置并初始化 zRAM (2GB, 优先 lzo-rle)
sudo swapoff /dev/zram0 2>/dev/null
sudo zramctl --reset /dev/zram0 2>/dev/null
sudo zramctl --find --size 2G --algorithm lzo-rle

# 3. 激活挂载
sudo mkswap /dev/zram0
sudo swapon /dev/zram0 --priority 100

# 4. 验证状态
free -h

zram success result

第二步:配置开机自启 (持久化)

创建自动脚本以确保重启后配置不丢失。

  1. 编写启动脚本sudo vi /usr/local/bin/init-zram.sh

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    #!/bin/bash
    
    # 自动检测最佳算法: zstd > lzo-rle > lzo
    modprobe zram
    ALGO="lzo"
    if grep -q "zstd" /sys/block/zram0/comp_algorithm; then
        ALGO="zstd"
    elif grep -q "lzo-rle" /sys/block/zram0/comp_algorithm; then
        ALGO="lzo-rle"
    fi
    
    # 初始化设备
    zramctl --reset /dev/zram0
    zramctl --find --size 2G --algorithm $ALGO
    
    # 挂载
    mkswap /dev/zram0
    swapon /dev/zram0 --priority 100
    
    # 调整 Swappiness (倾向使用 RAM)
    sysctl vm.swappiness=10

    赋予权限:sudo chmod +x /usr/local/bin/init-zram.sh

  2. 创建 Systemd 服务sudo vi /etc/systemd/system/zram-config.service

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    [Unit]
    Description=Configure zRAM swap device
    After=local-fs.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/init-zram.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
  3. 启用服务

    1
    2
    3
    
    sudo systemctl daemon-reload
    sudo systemctl enable zram-config.service
    sudo systemctl start zram-config.service

3. 网络与内核参数:TCP BBR & Limits

📖 官方介绍: TCP BBR Congestion Control 📖 Linux Limits: Limits.conf manual

  • BBR (Bottleneck Bandwidth and Round-trip propagation time):Google 开发的 TCP 拥塞控制算法。传统算法(Cubic)检测到丢包就降速,而 BBR 通过探测带宽和延迟来决定发送速度,在长距离、有丢包的网络环境(如公网访问 NAS)下效果奇佳。
  • File Descriptors (nofile):Linux 视一切皆文件(网络连接也是文件)。默认 1024 的限制在 NAS 跑满 BT 下载或大量容器时极易耗尽。

实施步骤 (使用脚本)

推荐使用开源工具 linux-optimizer 进行安全调整。

1
2
3
wget -qO- https://raw.githubusercontent.com/hawshemi/linux-optimizer/main/linux-optimizer.sh > linux-optimizer.sh
chmod +x linux-optimizer.sh
sudo linux-optimizer.sh

alt text

⚠️ 严格选择以下选项:

  1. 选项 10 (Optimize Network):开启 BBR,优化 TCP 窗口。
  2. 选项 11 (Optimize SSH):防止终端并在连接超时。
  3. 选项 12 (Optimize System Limits):将 nofile 提升至 65535。

小心

绝对不要选 1-6 项! 任何涉及 System Update 或 Kernel Upgrade 的选项都会破坏绿联的定制引导,导致设备变砖。


4. 进程管理:精简官方服务

官方文档

UGOS Pro 系统自带大量服务(索引、AI 识别、转码)。如果你打算使用 Docker 部署JellyfinImmich等替代方案,这些官方服务就是纯粹的资源浪费(内存泄漏大户)。

实施步骤

1. 侦察敌情

查看谁在吃资源:

1
2
3
4
# 检索绿联相关服务
systemctl list-units --type=service --all | grep -i "ugreen"
# 查看具体的常驻进程
ps aux | grep -iE "ugreen|ug-" | grep -v "grep"

Active Processes Systemd Services

2. 精确打击

停用非核心业务服务(请根据自身需求选择,保留 sambadocekr 等基础服务)。

1
2
3
4
5
# 停止 索引、搜索、日志、任务管理、AI 服务
sudo systemctl stop index_serv search_serv log_serv taskmgr_serv ai_serv

# (可选) 禁用开机自启
# sudo systemctl disable index_serv search_serv ...


相关内容