psu*_*usi 7 filesystem performance rsync disk-management
我有一个非常大的 Maildir,我正在使用 rsync 复制到一台新机器(超过 100BASE-T)。进展缓慢。非常慢。像 1 MB/s 慢。我认为这是因为很多小文件的读取顺序基本上是随机的,这与块在磁盘上的存储位置有关,从而导致了大规模的搜索风暴。尝试对目录进行 tar 时,我得到了类似的结果。有没有办法让 rsync/tar 按磁盘块顺序读取,或者以其他方式克服这个问题?
编辑:我试过 tar cf /dev/zero Maildir/ 在旧系统上,这花了 30 分钟!当 rsync 最终完成时,在新系统上,同样的测试需要 18 分钟。在旧系统上转储同一个目录需要 8 分钟,而在新系统上,转储 -0f /dev/zero -b 1024 /home/psusi/Maildir/ 仅用了 30 秒就完成了。
我最终编写了一个小 Python 脚本来计算目录名称与 inode、inode 与数据块以及目录名称与数据块之间的相关性。事实证明,ext4 在文件名在目录中出现的顺序与它们在磁盘上的存储位置之间的相关性往往较差。在 ext4 邮件列表上讨论后,结果证明这是用于加快大型目录中查找速度的散列目录索引的结果。名称以散列顺序存储,这有效地打乱了它们相对于其他任何东西的顺序。
在我和至少一位其他评论者看来,这是应该修复的 fs 中的一个缺陷。Ted Ts'o(ext 维护者)认为在 fs 中这样做太难了,并且好的工具(如 rsync 和 tar )应该有一个选项,可以在读取文件之前按 inode 编号对目录进行排序。
所以看起来需要为 rsync 和 tar 提交功能增强请求。
归档时间: |
|
查看次数: |
5046 次 |
最近记录: |