AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 800263
Accepted
SvennD
SvennD
Asked: 2016-09-01 08:19:37 +0800 CST2016-09-01 08:19:37 +0800 CST 2016-09-01 08:19:37 +0800 CST

rsync 两个大型存储服务器

  • 772

我们有两台大型存储服务器(+100TB),一台运行在 ZFS 上,另一台运行 XFS,我们打算将 XFS 用作我们的工作服务器并使用 ZFS 作为备份服务器(快照 <3)。现在的问题是让这些野兽保持同步......(同步为每日同步)

最简单的选择是使用 rsync,但遗憾的是目录结构很深,而且到处都是硬链接。所以这意味着我们需要进行一次“全局”扫描,这需要很长时间......最重要的是,大部分数据都是创建的,从未修改过。所以 rsync 可能不是要走的路。

我研究了inotify,它看起来相对便宜,而且因为我们只希望每天同步,所以可以卸载到美好的时光......遗憾的是,如果我们只查看创建的文件,我们会将硬链接复制为数据将使我们备份中使用的存储量翻倍......(基本上没有办法从 rsync 进行 -H 检查)

我能想到的唯一选择是重新组织我们的存储以使用基于日期的目录,遗憾的是,移动这么多数据并不是我们更喜欢的......

还有其他选择吗?

以供参考 :

  • 带有 XFS 的服务器有一个 RAID 控制器(无 JBOD 选项)和 SATA 磁盘 (WD RE)。32Gb 内存
  • 具有 ZFS 的服务器具有 HBA 控制器和 SAS 磁盘。126Gb 内存

当我将 ZFS 称为缓慢时,我看到 'ls' 需要几秒钟......

rsync inotify storage
  • 3 3 个回答
  • 303 Views

3 个回答

  • Voted
  1. ewwhite
    2016-09-01T08:34:27+08:002016-09-01T08:34:27+08:00

    你真的应该在两边都使用 ZFS,再加上像Sanoid这样的块级快照/复制例程。

    没有它,您将陷入基于文件的操作和 rsync 文件扫描的痛苦。

    • 6
  2. Best Answer
    TomOnTime
    2016-09-02T09:35:54+08:002016-09-02T09:35:54+08:00

    “足够快”有多快?

    你每天这样做一次,所以我怀疑如果需要 2-3 个小时,那就足够了。

    在这种情况下,“rsync -avP”应该是你所需要的。最新版本可以处理大目录、深层次结构,并且不需要像旧版本那样多的 RAM。

    如果没有文件更改,“rsync -a”将与“ls -lR”一样快。您无法获得比“ls -lR”更快的速度,因为它对系统上的每个文件执行 lstat()。

    基准测试“ls -lR”和“rsync -a”。如果它们比您想象的要慢,请查看https://serverfault.com/a/746868/6472以获取建议。

    如果您需要比“ls -lR”基准测试更快的东西,您将不得不编写使用“inotify”的东西,或者使用某种基于块的系统。特别是,在两个系统上使用 ZFS 将使您能够使用 ZFS 内置的快照导出/导入系统。

    • 4
  3. TomOnTime
    2016-09-02T09:48:37+08:002016-09-02T09:48:37+08:00

    我会采用两部分策略......最后我会建议第三部分是可选的。

    第 1 部分:使用 inotify:编写一个程序,使用 inotify 记录创建、删除和修改的文件。编写另一个程序来读取日志、删除所有重复项并备份这些文件(并删除已删除的文件)。这并不容易。编程 inotify 很复杂。日志不能是简单的文本文件,因为文件名可以包含换行符。如果在写入日志时系统崩溃,您需要能够处理部分写入的文件名。

    第 2 部分:每周 rsync 以防万一。每隔几天执行一次“rsync -a --delete”以捕获任何丢失的文件。第 1 部分中的解决方案是不完美的。如果您的程序跟不上 inotify,它可能会丢失一些文件。如果机器重新启动,创建/删除/修改文件的日志可能会丢失最近的项目。错误和其他问题也可能导致丢失某些文件。

    可选的第 3 部分:在你运行了几个星期并且你已经解决了所有的错误之后,你仍然会发现 rsync 偶尔会找到丢失的文件。我向你保证这会发生。inotify 是“尽力而为”。因此,此时您将意识到在第 1 部分和第 2 部分中维护代码的工作量是您预期的两倍。要解决这个问题,请丢弃您在第 1 部分中编写的代码,因为首先您真正需要的是 rsync。

    • 2

相关问题

  • 强制 rsync 进入非交互模式

  • 比较(diff)完整目录结构的最佳方法?

  • 如何使用 rsync 保持完整路径?

  • Rsyncing到USB驱动器时不时地失败

  • 使用 rsync 维护名称更改的目录的副本

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve