惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
D
Docker
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客
美团技术团队
V
V2EX
Last Week in AI
Last Week in AI
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Microsoft Security Blog
Microsoft Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
P
Proofpoint News Feed
B
Blog RSS Feed
博客园_首页
B
Blog
博客园 - 叶小钗
I
InfoQ
WordPress大学
WordPress大学
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Latest news
Latest news
W
WeLiveSecurity
T
The Exploit Database - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
N
News and Events Feed by Topic
S
Secure Thoughts
The Hacker News
The Hacker News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News

BTSync

Resilio Sync 个人版完全免费了 - V2EX btsync 怎样穿透? - V2EX Resilio Sync 占用太高,然而并不想用微力 Orz - V2EX btsync 又被墙了 现在有没有 ipv6 tracker 可以推荐下? - V2EX Resilio Sync 可以单向同步吗?源文件本地删除,其他节点不同步删除 - V2EX 各位大佬好, Resilio Sync 有绿化就是便携化的方法吗? Resilio sync 的 utp 协议代理问题 - V2EX 差点被 Resilio Sync 坑死 Seafile, Syncthing, BTSync 到底哪个好? - V2EX Resilio Sync 已经无法正常使用,连不上中续服务器。 最近的 Resilio Sync 速度极慢!穿透效果极差,随便就被 syncthing 秒杀,求解? 唉! ipv6 什么时候才能普及呢?! - V2EX 网件 r7000 挂移动硬盘+树莓派装 btsync 和 vsftpd 实现单位电脑和家里网盘同步 - V2EX 大家说,有必要花上 99 开通高级账户吗,感觉体验下来没多少区别呀 - V2EX 用 btsync 备份 ios 设备照片到 NAS 上后, NAS 的文件夹里有几百个 groupxxx 文件夹 - V2EX 最近试用了下 BTSync,觉得不错,想用来搭私有同步盘,有坑不? - V2EX 问一个 BT sync 同步的权限问题? - V2EX iOS 客户端怎么删除无效设备? - V2EX BT Sync 没有促进大家分享的策略 - V2EX 现在还有人用 BT Sync 么? - V2EX btsync 一个同步问题 - V2EX BTsync 部分文件夹无法同步的问题 - V2EX BTSync 已改名 Resilio,节点也应该改名了 - V2EX 从 Mac 端的 BT Sync 同步一些文件(图片)到 Android 端后发生了文件损坏的奇怪 BUG!屡试不爽 - V2EX 求 openwrt + btsync 或者其它类似固件 - V2EX btsync 和 syncthing 都有增量同步吗?为何没见过路由器版本? - V2EX btsync 速度有时快,有时贼慢,奇怪问题 - V2EX [积淀半年,再次发力!] 自同步,好用的局域网文件同步软件! - V2EX linux 服务器、跟本地部署 bitsync,本地修改数据很快同步到服务器上,但如果改的服务器上的,很慢才能同步到本地,这是为什么? - V2EX 如何在 WD My Book Live 上安装 Btsync - V2EX 求 BitTorrentSync 老版本 - V2EX 不知道有无办法可以制造些节点? - V2EX Sync Pro 2.0 - V2EX 问一个 BTSync 在内网使用的问题? - V2EX btsync 现在国内还能用吗? - V2EX btsync 1.4.82 之后版本 linux 中文文件夹无法同步 - V2EX 如何同步 windows 个人电脑和 linux 开发机? - V2EX 刚装了一个 BTSync 的 MAC 版,想问下如何删除一个目录? - V2EX Btsync 的 Windows 版, 如何使用指定配置文件来启动? - V2EX BTSync 1.4 - V2EX VPS 上部署 BTSync 速度仅几 K,但是如果用 aria2c 拖 http 可以到 600-800k 的速度,何解? - V2EX BTsync 经常出现同步不了的问题 - V2EX 士别三日当刮目相待,今天的 BTSync 已经非常成熟和好用 - V2EX 放一个公共的 KEY 给大家玩玩 BTSync - V2EX BTSync 能用于服务器之间的远程容灾备份么?或者,还有没有什么其他更值得的方案? - V2EX 欢迎订阅 BTSync KEY 资源共享计划 - V2EX 欢迎加入我的 BTSync 進行设计类素材分享 - V2EX BTSync 同步文件夹的配置疑问 - V2EX
记录下 Resilio Sync 的一个坑
Sylv · 2019-10-19 · via BTSync

TL;DR

Resilio Sync 在差异同步下仍会重写整个文件,在用于同步类似日志文件这样不断变动的文件时,会导致巨量硬盘写入量。

起因

前几天我无意中使用 DriveDx 查看硬盘 S.M.A.R.T. 信息时发现,我使用了差不多才一年的 MacBook Pro 的 SSD 硬盘写入量竟然高达 180 TB !按 365 天算,平均每天写入量接近 500 GB。

image-20191018123129542

非常不可思议,因为我并没有主动写入这么多数据量。虽然 MacBook Pro 的 SSD 应该有相当高的写入寿命,但按这疯狂的写入量趋势,我还是怕没过一两年这 SSD 就得出问题。

很快我就通过 iStat Menus 和活动监视器( Activity Monitor )发现,造成这疯狂写入量的罪魁祸首就是 Resilio Sync。Resilio Sync 持续不断地以数十 MB/s 的速度往硬盘写入数据,一天的写入量可以达到 1 TB 以上,但是我并没有使用 Resilio Sync 同步这么高的数据量。

大半年以来,我有二三十台服务器长时间在跑我的一个程序,我一直用 Resilio Sync 来同步这些服务器上此程序使用的配置文件和生成的 CSV 数据文件以及日志文件到我的电脑上,这样可以很方便地管理和维护这么多台服务器,也可以及时获取生成的数据文件,一直都挺满意的。

虽然同步的服务器多,但需要同步的数据量并不高,每台服务器上同步的文件夹总大小一般只有几百 MB,而程序每分钟只会新增几十行数据到 CSV 数据文件和日志文件中,因为 Resilio Sync 支持块级差异同步——只有文件新改动的部分才需要传输,所以几十台服务器总共一直也只有 KB/s 数量级的同步量,一天应该不到 1 GB 的数据量。

那么按这同步量,理论上 Resilio Sync 一天的写入量也只要 1 GB 左右就好了,但是实际上 Resilio Sync 却以上千倍的速度不断地往硬盘写入数据,导致一天能有上 TB 的写入量,和同步量严重不符。

原因

为了找出造成此问题的具体原因,我搜遍了互联网没找到先例,以及尝试了许多现在看来是徒劳的方法,期间的折腾就按下不表,最终被我发现导致这问题的原因是:

Resilio Sync 虽然支持差异同步传输,但是在同步到差异数据后会重写整个文件!

假设服务器上有个 100 MB 的文本文件,之前已经和本地同步好了。现在在文件末尾添加了 1 MB 的数据,Resilio Sync 可以只传输这新增的 1 MB 数据到本地,但是本地在接收到这 1 MB 后,会读取已有的 100 MB 文件加上这 1 MB,重新写一个 101 MB 的文件覆盖原文件,而不是将新的数据直接写入原文件。每次同步完后文件的 inode 编号都会改变,说明文件已经不是同一个文件了,我是这样才发现的。

所以虽然我的同步量很少,但是服务器上生成的数据文件和日志文件有的能涨到上百 MB 大小,而且每分钟都会有新增数据,因此 Resilio Sync 在同步过程中就会不断重写这些大文件,也就导致了每天上 TB 的恐怖写入量。

解决方法

受制于 Resilio Sync 的这个机制,在我这使用场景下其实并没有可以根治的办法,可能 Resilio Sync 就不适合用来同步这种一直会变动的文件,但我目前没找到更好的替代方案。

我唯一能做的就是改程序,将生成的数据文件和日志文件按时间或者大小进行拆分,使得需要不断同步的文件的体积保持在一定大小以下,以此来减少每次重写的数据量。这样更改后效果还是很明显的,Resilio Sync 每天的写入量从 1 TB 多降低到了 100 GB 左右,减少了 90%,虽然和实际同步量比还是很高,但已经在我可接受范围内,再配合上 Resilio Sync 的定时暂停同步功能,可以进一步降低写入量,这样应该在这台电脑淘汰前不会因此导致 SSD 提前寿终正寝了。