【发布时间】:2017-02-04 05:49:35
【问题描述】:
我需要将 9000 万个文件从 NFS 文件夹移动到第二个 NFS 文件夹,到 NFS 文件夹的两个连接都使用相同的 eth0,即 1Gb/s 到 NFS 服务器,不需要同步,只移动(覆盖如果它存在)。我认为我的主要问题是文件数量,而不是总大小。最好的方法应该是每个文件对 NFS 文件夹的系统调用较少的方法。
我尝试了 cp、rsync,最后http://moo.nac.uci.edu/~hjm/parsync/ parsync 首先花了 10 个小时来生成文件列表的 12 GB gzip,在花了 40 个小时并且没有复制任何文件之后,它一直工作到 10 个线程,直到我取消它并开始调试,我发现它正在使用 -vvv 选项(它使用 rsync)再次对每个文件(来自列表)进行调用(stat?):
[sender] make_file(accounts/hostingfacil/snap.2017-01-07.041721/hostingfacil/homedir/public_html/members/vendor/composer/62ebc48e/vendor/whmcs/whmcs-foundation/lib/Domains/DomainLookup/Provider.php,*,0)*
parsync 命令是:
time parsync --rsyncopts="-v -v -v" --reusecache --NP=10 --startdir=/nfsbackup/folder1/subfolder2 thefolder /nfsbackup2/folder1/subfolder2
每个 rsync 都有这种形式:
rsync --bwlimit=1000000 -v -v -v -a --files-from=/root/.parsync/kds-chunk-9 /nfsbackup/folder1/subfolder2 /nfsbackup2/folder1/subfolder2
NFS 文件夹已挂载:
server:/export/folder/folder /nfsbackup2 nfs auto,noexec,noatime,nolock,bg,intr,tcp,actimeo=1800,nfsvers=3,vers=3 0 0
知道如何指示 rsync 将列表中已有的文件从 nfs 复制到 nfs2 文件夹吗?或者任何有效地制作这个副本的方法(每个文件一个系统调用?)
【问题讨论】:
-
我认为优化两个 NFS 挂载之间数百万个文件的移动可能是一个有趣的挑战,但我希望在考虑更改架构以减少数量时,开发工作与加速会更好文件和/或摆脱 NFS。
-
@mnagel NFS 由数据中心作为备份服务提供。文件数量是对 450 多个托管帐户进行 30 天保留的增量备份的产物。