设想
我使用的是带有 ext4 文件系统的常规 Ubuntu 18.04 LTS。
我在用着雷斯蒂奇备份我的机器。 Restic 是一个备份工具,支持不同的后端(本地、sftp、aws、gcs 等),但一次只能支持一个备份目标。所以我不能告诉restic
“将这些文件夹同时备份到目标 1、目标 2 和目标 3,同时只读取主机上的每个文件一次”。
我知道有一些工具可以在第二步将 dest1 同步到 dest2 等等,但我不想在这里讨论这个问题。
问题
让 restic 运行一次然后再运行一次,从而连续两次检查相关文件夹中的所有文件,这样做聪明吗?
或者,如果我并行运行两个/三个 restics,以便我的进程大致同时读取相同的文件,我的通用 Linux 文件缓存是否会工作得更好?
或者这是否会完全导致我的磁盘 io 过载,因为(至少在 HDD 上)读取头可能需要不断地来回跳跃?
HDD/SSD 如何影响这一点?
-
我自己没有做过任何性能测试,希望一些文件系统/文件缓存专家可以为我解决这个麻烦:)
干杯
答案1
所以我最终在我的python程序中添加了一个开关(伦雷斯蒂克) 可让您选择顺序执行或并行执行,以下是一些初步结果:
本地设置
普通笔记本电脑NVMe 固态硬盘和 ext4。
源目录:
$ du -csh tmp/
2.4G tmp/
$ find tmp/ | wc --lines
43724
$ ls tmp/
audible-activator django-prometheus gosignals js-beautify matomotest nextcloud-social-login pyelasticsearch sinnlos
batstat dms huestacean landmatrix matrix-appservice-slack omniauth-oauth2-generic quartiermeister tmpfooab
christophtest elasticsearch-HQ jcdriver leaflet-v-ol mirenzeugs postfix_exporter restic wagtail
cookiecutter-django go-neb joycon lib_users msw protonfoo salt
~2.4GB
git repos 和其他随机文件也是如此。
目标目录是同一文件系统上的两个目录。
我在运行之间刷新了我的 Linux 缓存:
sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
。这似乎有效,因为多次运行相同的命令会产生类似的结果。
按顺序休息
$ runrestic init backup
{'init': 5.7561564445495605, 'backup': 30.630026817321777, 'total': 36.38620185852051}
并行 restic
$ runrestic init backup
{'init': 2.513888120651245, 'backup': 21.428940057754517, 'total': 23.942883253097534}
(非)结论
在 SSD 上它似乎有助于并行运行。
当我收集到更多数据时,我会报告。