如何使用数百万个硬链接来镜像文件系统?


11

目前,我们面临一个大问题:我们需要为一个客户镜像文件系统。那通常不是真正的问题,但是这里是:

在此文件系统上,存在一个包含数百万个硬链接的文件夹(是!百万!)。rsync建立档案清单需要4天以上的时间。

我们使用以下rsync选项:

rsync -Havz --progress serverA:/data/cms /data/

有谁知道如何加快此rsync或使用替代方法?我们无法使用,dd因为目标磁盘小于源磁盘。

更新: 作为原始文件系统,ext3我们将尝试dumprestore。我会告诉你的


整rick 首先收缩源文件系统,然后收缩dd?
Bittrance 2011年

Answers:


3

您需要将双方都升级到rsync3。从更改日志中:

- A new incremental-recursion algorithm is now used when rsync is talking
  to another 3.x version.  This starts the transfer going more quickly
  (before all the files have been found), and requires much less memory.
  See the --recursive option in the manpage for some restrictions.

自rsync 3.0.0发布以来已经有两年多了,但是,不幸的是,大多数企业发行版均基于早于该版本的代码,这意味着您可能正在使用rsync 2.6。

作为参考(如果其他任何人都遇到此问题),如果您已经运行rsync 3,那么您正在使用与增量递归不兼容的选项。从手册页:

    Some options require rsync to know the full file list, so  these
    options  disable the incremental recursion mode.  These include:
    --delete-before,   --delete-after,    --prune-empty-dirs,    and
    --delay-updates.

同样,双方都必须运行rsync 3才能支持增量递归。


Pritchard对此表示感谢,但是增量部分没有问题,双方都使用rsync> 3.0。如果我们在不使用-H的情况下使用rsync,则速度会有很大提高,但这不是我们所需要的。
Thomas Berger

哎哟。是的,在这种情况下,您可能想研究一些选项来加速文件系统访问(例如,如果使用ext3,则切换到ext4),切换到更快的磁盘或RAID级别(如果可以的话)等。不幸的是,您文件系统可能不够快,块级备份可能是您唯一的选择。我在尝试将BackupPC池从一台服务器同步到另一台服务器时遇到问题。
史蒂文·普里查德

3

我们已经使用了ext * dump。效果很好,并且还原端甚至不必是ext *。

通过卸载设备并使用,我们已经完成了离线备份dump vf - /dev/vg0/opt | gzip -c > /mnt/backup/ext3dump.gz

在这里,您可以看到的最后几行包括大小,时间,速度和最后一个inode编号:

DUMP: dumping regular inode 47169535
DUMP: dumping regular inode 47169536
DUMP: Volume 1 completed at: Wed Jun 29 05:42:57 2011
DUMP: Volume 1 54393520 blocks (53118.67MB)
DUMP: Volume 1 took 4:16:43
DUMP: Volume 1 transfer rate: 3531 kB/s
DUMP: 54393520 blocks (53118.67MB)
DUMP: finished in 15403 seconds, throughput 3531 kBytes/sec
DUMP: Date of this level  dump: Wed Jun 29 01:24:29 2011
DUMP: Date this dump completed:  Wed Jun 29 05:42:57 2011
DUMP: Average transfer rate: 3531 kB/s
DUMP: DUMP IS DONE

我不知道这是否仍然正确,但是如果在转储时使用了文件系统,则转储曾经存在一些问题。因为您的目标是速度,所以我想您已经禁用了所有其他访问权限,但只是以防万一。.让我们知道您的前进方式
SuperBOB 2011年

0

您可以使用LVM并为卷拍摄快照,然后将快照重新同步作为备份。

或者,您可以将其与其他答案结合起来并dump 在快照卷上使用,以避免不得不使原始卷脱机。


任何在块级别(而不是文件系统级别)上工作的东西都可能会带来巨大的改进。
Marcin

正如您在我的问题中所看到的,我必须跨网络镜像,而不是本地镜像。同样,LVM不是镜像,正如您所说的,它只是快照。
Thomas Berger

1
@Thomas Berger:我的想法是,然后您将通过网络复制快照(使用rsync)。如果LVM快照不是一个,那么您如何精确定义mirror
Teddy

那仍然有同样的问题:需要几天的时间。在这几天会有一个巨大的达塔(不是我们需要的),所以我们必须保留足够的空间,而我们没有那个空间。镜像是源的独立副本。我们必须为客户从生产到开发复制数据。
Thomas Berger

@Thomas Berger:我最初的意思是您将同步实际的快照卷,而不是快照上的文件系统。但是,我现在认为快照+转储解决方案会更好。
泰迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.