obnam 的预期表现是什么?或者:为什么这么慢?

pro*_*let 8 performance backup

最近几天我一直在玩 obnam,虽然它看起来很有前途,而且似乎基本上提供了我在备份工具中想要的一切,但我对它的性能非常失望。事实上,它太慢了,我怀疑 obnam 在这里甚至没有错,而是我环境中的某些东西导致了它。

所以我主要想知道,是否还有其他人在使用 obnam 或者对它的内部结构有足够的了解来识别问题。

据我目前所知,obnam 似乎为每个备份的文件分叉了一个单独的 gpg 进程。从 htop、strace 和 iostat 来看,初始备份的速度主要受不断分叉的限制,而 CPU 和驱动器(不涉及网络)大多处于空闲状态,低于 20% 的利用率。

我的备份总计约 500.000 个文件,总共有 170 GiB 的数据。因此,对于每次备份运行,gpg 会分叉 500.000 次。我什至不感到惊讶的是,初始运行几乎需要一整天的时间,而在大多数文件未更改的情况下,另一次运行需要三个多小时。但这真的是 obnam 用户应该期望的性能吗?为了比较:rsnapshot(相同数据、相同机器、相同驱动器)的增量运行大约需要四分钟。当然,没有涉及加密,但这不应该那么重要。

所以,问清楚一点:其他人的机器是否也不能每秒运行 gpg(加密一小块数据)超过 50 次,最终使 obnam 成为一个几乎无法使用的缓慢工具?还是只有我一个人?

(FWIW,我的机器是带有 8G RAM 和 SSD 驱动器的 Core i5-2500,运行 Gentoo。备份到 HDD,但我无法观察到备份到 SSD 有什么区别,因为它不是 I/O -边界。)

slm*_*slm 3

我想我会通过几种方式来解决这个问题。首先,我会尝试使用以下方法自行诊断。

\n\n

1.obnam日志

\n\n

对于初学者,您可以像这样记录消息obnam

\n\n
$ obnam --log obnam.log\n
Run Code Online (Sandbox Code Playgroud)\n\n

您还可以通过开关提高日志记录级别--log-level以获取更多详细信息。

\n\n
--log=FILE          write log entries to FILE (default is to not write log\n                    files at all); use "syslog" to log to system log, or\n                    "none" to disable logging\n--log-level=LEVEL   log at LEVEL, one of debug, info, warning, error,\n                    critical, fatal (default: info)\n
Run Code Online (Sandbox Code Playgroud)\n\n

2. 分析

\n\n

您还可以从项目常见问题解答obnam中的摘录中了解正在执行的操作,如下所示:

\n\n
\n

如果OBNAM_PROFILE环境变量包含文件名,\n 分析数据将存储在此处,稍后可以使用\n 查看 obnam-viewprof

\n\n
  $ OBNAM_PROFILE=obnam.prof obnam ... obnam-viewprof obnam.prof | less\n
Run Code Online (Sandbox Code Playgroud)\n\n

与特定设置无关的性能问题也可以使用obnam-benchmark tool.

\n
\n\n

3. 开票

\n\n

如果进行一些自我驱动的调查后性能仍然不确定,那么我会在项目的网站上开一张票。据我所知,开发人员有一定的反应能力,他们可能是最擅长解决项目问题的人。

\n\n

obnam似乎只使用 SFTP,因此导致问题的原因应该非常明显。我还会考虑单独对 SFTP 性能进行基线分析,以便您在尝试从测试本身中获取此信息之前,可以了解系统 + 网络连接的理论最大值应该是多少obnam

\n\n

附加数据点

\n\n #1 - 比较 obnam 与 rsnapshot 的博客文章\n\n

找到这篇博文,作者在其中对该类别中的几个选项进行了比较。文章标题为:比较 rsnapshot 和 obnam 进行计划的大型备份

\n\n

这篇文章强调了一些非常糟糕的表现,IMO,obnam这似乎与您所描述的内容相符。

\n\n

奥南性能

\n\n
\n

完全备份 /home 后(需要几天时间!),几天后进行新的运行(由 Linux time 命令计时):

\n\n

备份3443706个文件,127小时48分49秒上传94.0 GiB,平均速度214.2 KiB/s830个文件;1.24 GiB (0 B/s) 实际 7668m56.628s 用户 4767m16.132s 系统 162m48.739s

\n\n

从 obname 日志文件:

\n\n
   2012-11-17 12:41:34 INFO VFS: baseurl=/home read=0 written=0\n   2012-11-21 23:09:36 INFO VFS: baseurl=/backups/backup_home read=2727031576964 written=150015706142 \n   2012-11-21 23:09:36 INFO Backup performance statistics: \n   2012-11-21 23:09:36 INFO * files found: 3443706 \n   2012-11-21 23:09:36 INFO * uploaded data: 100915247663 bytes (93.9846482715 GiB) 2012-11-21 23:09:36 INFO * duration: 460128.627629s \n   2012-11-21 23:09:36 INFO * average speed: 214.179341663 KiB/s\n   2012-11-21 23:09:36 INFO Backup finished. 2012-11-21 23:09:36 INFO Obnam ends\n   2012-11-21 23:09:36 INFO obnam version 1.2 ends normally\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此:大约需要 5 天的时间来备份大约 100 GB 的更改数据\xe2\x80\xa6 机器上的负载并不高,无论是在 CPU 方面,还是在 RAM 方面。/backups/backup_home 中的磁盘\n 使用量为 5.7T,/home 的磁盘使用量为 6.6T,\n 因此似乎存在一些重复数据删除。

\n
\n\n

快照性能

\n\n
\n

/home 的完整备份到(根据日志文件):

\n\n
   [27/Nov/2012:12:55:31] /usr/bin/rsnapshot daily: started   \n   [27/Nov/2012:12:55:31] echo 17632 > /var/run/rsnapshot.pid \n   [27/Nov/2012:12:55:31] mkdir -m 0700 -p /backups/backup_home_rsnapshot/    \n   [27/Nov/2012:12:55:31] mkdir -m 0755 -p /backups/backup_home_rsnapshot/daily.0/ \n   [27/Nov/2012:12:55:31] /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home /backups/backup_home_rsnapshot/daily.0/localhost/\n   [28/Nov/2012:23:16:16] touch /backups/backup_home_rsnapshot/daily.0/\n   [28/Nov/2012:23:16:16] rm -f /var/run/rsnapshot.pid\n   [28/Nov/2012:23:16:16] /usr/bin/rsnapshot daily: completed successfully\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此:6.3TB 的完整备份大约需要 1.5 天。一天后进行增量备份:

\n\n
     [29/Nov/2012:13:10:21] /usr/bin/rsnapshot daily: started\n     [29/Nov/2012:13:10:21] echo 20359 > /var/run/rsnapshot.pid\n     [29/Nov/2012:13:10:21] mv /backups/backup_home_rsnapshot/daily.0/ /backups/backup_home_rsnapshot/daily.1/\n     [29/Nov/2012:13:10:21] mkdir -m 0755 -p /backups/backup_home_rsnapshot/daily.0/\n     [29/Nov/2012:13:10:21] /usr/bin/rsync -a --delete --numeric-ids -- relative --delete-excluded --link-dest=/backups/backup_home_rsnapshot/daily.1/localhost/ /home/backups/backup_home_rsnapshot/daily.0/localhost/\n     [29/Nov/2012:13:25:09] touch /backups/backup_home_rsnapshot/daily.0/\n     [29/Nov/2012:13:25:09] rm -f /var/run/rsnapshot.pid\n     [29/Nov/2012:13:25:09] /usr/bin/rsnapshot daily: completed successfully\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以:15 分钟...更改的数据达到 21GB。

\n
\n\n*阁楼与 obnam\n\n

不是那么彻底,但提到了 的缺点之一obnam是它比 .. 慢得多attic

\n\n
\n

奥布南优点:

\n\n
    \n
  • 有据可查
  • \n
  • 活跃的邮件列表
  • \n
  • 可用套餐
  • \n
\n\n

奥布南缺点:

\n\n
    \n
  • 非常慢
  • \n
  • 大备份
  • \n
\n\n

阁楼优点:

\n\n
    \n
  • 备份小得多(即使没有重复数据删除)
  • \n
  • 更好的重复数据删除
  • \n
  • 快多了
  • \n
\n\n

阁楼缺点:

\n\n
    \n
  • 存储库格式未记录
  • \n
  • 不是一个庞大的用户社区
  • \n
\n
\n\n

显示的一些测试数据似乎表明速度obnam确实很慢。

\n\n
\n

通过一般的 WiFi 连接,从本地 SSD 到远程 HD:

\n\n
    rsync:           0:24  0:01\n    Attic ssh:       0:28  0:05\n    Attic sshfs:     0:51  0:08\n    Obnam sftp:      8:45  0:21\n    Obnam sshfs:    25:22  0:22\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

参考

\n\n\n