修改完整版 worker.conf
shitou@shitou:~$ cat /usr/local/tunasync/conf/worker.conf
[global]
name = "local-worker"
mirror_dir = "/opt/mirror/mirrors"
# 强制只允许1个同步任务运行,杜绝多rsync争抢磁盘IO
concurrent = 1
# 机械硬盘优先1MB/s限速,小文件写入压力更低,wa过高可下调至512
rsync_speed_limit = 1024
# rsync正常非报错退出码
dangerous_global_rsync_success_exit_codes = [23,24]
log_dir = "/opt/mirror/logs/{{.Name}}"
[manager]
api_base = "http://127.0.0.1:14242"
token = "Sync@2026Tuna"
ca_cert = ""
# Ubuntu软件源,开启延迟写入优化小文件随机IO
[[mirrors]]
name = "ubuntu"
provider = "rsync"
upstream = "rsync://mirrors.bfsu.edu.cn/ubuntu/"
interval = 21600
use_ipv6 = false
# 数组格式开启延迟更新,禁止全局配置rsync_options(0.8.0版本会崩溃)
rsync_options = ["--delay-updates","--no-compress"]
# Ubuntu‑cdimage光盘镜像,同样开启IO优化
[[mirrors]]
name = "ubuntu-cdimage"
provider = "rsync"
upstream = "rsync://mirrors.bfsu.edu.cn/ubuntu-cdimage/"
interval = 604800
use_ipv6 = false
rsync_options = ["--delay-updates","--no-compress"]
shitou@shitou:~$
环境基础
tunasync 版本:0.8.0(硬性限制:全局
[global]区块不支持rsync_options,参数仅能在独立镜像内使用数组格式)存储介质:机械硬盘,短板为大量小文件的随机读写,极易出现 IO‑wait (wa) 过高、系统卡顿
同步源:北外镜像站 ubuntu 软件源、ubuntu‑cdimage 光盘镜像
全程遇到的所有报错 & 故障原因
服务反复崩溃、日志报错
expected a digit but got '-'错误:在全局
global段写入rsync_options;0.8.0 全局配置不识别该字段,解析读到横杠-直接失败。镜像内直接填写字符串
rsync_options = --delay-updates语法错误,该版本附加参数必须使用数组
["参数"]。磁盘 IO 等待 wa 飙升至 42%,同时存在两条 rsync 进程
cdimage 镜像没有开启
--delay‑updates延迟写入优化旧 rsync 残留进程未关闭,多进程争抢机械硬盘随机 IO
初始下载速度 2MB/s 过快,大批量小文件涌入超出机械盘写入上限
终止所有残留、卡死的 rsync 进程
bash
pkill rsync
修改 worker‑conf,下调同步限速至 512KB/s,减轻硬盘瞬时写入压力
ini
rsync_speed_limit = 512
确认两个镜像均配置完整 IO 优化参数
ini
rsync_options = ["--delay-updates","--no-compress"]
重载配置、重启服务
bash
sudo systemctl daemon-reload
sudo systemctl restart tunasync-worker要是后续磁盘负载太高、wa 长期居高不下,直接执行
pkill rsync,清理掉冲突的进程再重启服务即可;现在限速 512KB/s 已经很低,可以减轻硬盘负担;两个镜像也都配置好了延迟写入优化;
cd‑image 每周才触发一次定时任务,平时大多只有 ubuntu 源在同步,日常压力不会太大
在 tunasync‑worker 同步机械硬盘、容易双 rsync 进程、IO‑wait 很高的现状,我把所有可以改动的配置项、作用、调整方案完整拆分清楚,你按需修改即可:
[global] 全局区块可调整项
ini
[global]
name = "local-worker"
mirror_dir = "/opt/mirror/mirrors"
concurrent = 1
rsync_speed_limit = 512
dangerous_global_rsync_success_exit_codes = [23,24]
log_dir = "/opt/mirror/logs/{{.Name}}"
concurrent
只允许同时运行 1 个同步任务;只能管控新启动任务,无法处理卡死残留 rsync。
不要改成 2 及以上,机械硬盘扛不住多进程读写。
rsync_speed_limit(最核心可调参数,单位 KB/s)
2048:2MB/s,速度快、硬盘极易堵死、进程卡死
1024:1MB/s,中等压力
512:低速,当前推荐
256:超低速,wa 依旧很高的时候使用
log_dir
存放同步日志;磁盘空间紧张可以修改路径,或者定时清理旧日志。
[manager] 管理端
一般不需要改动,负责和控制面板通讯。
ini
[manager]
api_base = "http://127.0.0.1:14242"
token = "Sync@2026Tuna"
ca_cert = ""
mirrors 镜像段(两个镜像独立修改)
1.interval 定时周期(单位秒)
ubuntu:
21600= 6 小时同步一次ubuntu‑cdimage:
604800= 7 天同步一次
你可以错开二者的触发时间,避免刚好同时启动任务。
2.rsync_options rsync 运行参数(数组格式,0.8.0 硬性语法)
当前配置:
ini
rsync_options = ["--delay-updates","--no-compress"]
--delay‑updates:内存缓存小文件,最后一次性顺序写入,解决随机 IO 卡顿,必开--no‑compress:关闭传输压缩,节省 CPU 开销可额外可选参数(按需添加)
--bwlimit=512:rsync 内层限速,双重限速兜底
禁止在 global 全局添加 rsync_options,会直接造成服务崩溃。
解决双 rsync 残留进程的额外手段(配置无法管控,只能手动操作)
每次重启服务前清理僵死进程
bash
pkill rsync
sudo systemctl restart tunasync-worker
当 wa>40%、出现两条 rsync,优先杀掉所有 rsync,从根源解决磁盘争抢
整体改动优先级
整体改动优先级
优先调低下载限速 → 防止 rsync 硬盘卡死残留
两个镜像全部配置延迟写入参数
严格保持 concurrent=1
定时清理卡死的 rsync 残留进程
tunasync同步 IO压力,调优
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法