传输 15TB 的小文件

lba*_*anz 80 linux file-transfer archive linux-networking

我正在将数据从一台服务器归档到另一台服务器。最初我开始了rsync一份工作。仅为 5 TB 数据构建文件列表就花了 2 周时间,而传输 1 TB 数据又花了一周时间。

然后我不得不终止这项工作,因为我们需要在新服务器上停机一段时间。

已经同意我们将其压缩,因为我们可能不需要再次访问它。我正在考虑将其分成 500 GB 的块。在我tar之后,我打算将它复制到ssh. 我正在使用tarpigz但它仍然太慢。

有没有更好的方法来做到这一点?我认为两台服务器都在 Redhat 上。旧服务器是 Ext4,新服务器是 XFS。

文件大小从几 kb 到几 mb 不等,5TB 中有 2400 万个 jpeg。所以我猜测 15TB 大约为 60-80 百万。

编辑:在玩了几天 rsync、nc、tar、mbuffer 和 pigz 之后。瓶颈将是磁盘 IO。由于数据跨 500 个 SAS 磁盘和大约 2.5 亿个 jpeg 进行条带化。但是,现在我了解了我将来可以使用的所有这些不错的工具。

h0t*_*1r3 65

我使用tar, pigz(并行 gzip)和nc.

源机:

tar -cf - -C /path/of/small/files . | pigz | nc -l 9876
Run Code Online (Sandbox Code Playgroud)

目标机:

提取:

nc source_machine_ip 9876 | pigz -d | tar -xf - -C /put/stuff/here
Run Code Online (Sandbox Code Playgroud)

要保留存档:

nc source_machine_ip 9876 > smallstuff.tar.gz
Run Code Online (Sandbox Code Playgroud)

如果您想查看传输速率,只需pvpigz -d!

  • 如果 OP 已经尝试过 `tar` 和 `pigz`,这怎么能被接受?我不明白... (10认同)
  • @ThomasWeller 你从哪里得知他尝试过‘pigz’?从这个问题来看,他到目前为止只尝试过 `rsync`,并且正在*考虑*使用 `tar` 来拆分和捆绑数据。特别是如果他没有在 rsync 上使用 `-z`/`--compress` 选项,`pigz` 理论上可以提供很大帮助。 (5认同)
  • 仅供参考,您可以用 `gzip` 替换 `pigz` 或将其完全删除,但速度会明显变慢。 (3认同)
  • @ThomasWeller 是的,确实我已经尝试过 tar 和 pigz 但没有尝试过 nc。我使用的是 ssh,所以它增加了很多开销。 (2认同)
  • @lbanz 只是意味着`tar` 生成数据的速度不够快,`pigz` 无法使用大量CPU 进行压缩。与读取相同字节数的大文件相比,读取大量小文件涉及更多的系统调用、更多的磁盘搜索以及更多的内核开销,而且看起来您只是在基本层面遇到瓶颈。 (2认同)

Fox*_*Fox 21

我会坚持使用 rsync 解决方案。现代 (3.0.0+) rsync 使用增量文件列表,因此在传输之前不必构建完整列表。因此,重新启动它不需要您再次进行整个传输以防万一。拆分每个顶级或二级目录的传输将进一步优化这一点。(如果您的网络比您的驱动器慢,我会使用rsync -a -P并添加--compress。)

  • 查找(或构建)一个静态链接的 rsync 二进制文件,然后在家中运行它。希望这不会破坏任何保修。 (18认同)

小智 15

设置 VPN(如果是互联网),在远程服务器上创建某种格式的虚拟驱动器(使其成为 ext4),将其安装在远程服务器上,然后将其安装在本地服务器上(使用块级协议,如 iSCSI ),并使用 dd 或其他块级工具进行传输。然后,您可以在方便时将文件从虚拟驱动器复制到真实 (XFS) 驱动器。

两个原因:

  1. 没有文件系统开销,这是主要的性能元凶
  2. 不寻求,您正在查看双方的顺序读/写

  • 绕过文件系统是好的。复制读写挂载文件系统的块级是一个非常糟糕的主意。首先卸载或挂载只读。 (3认同)
  • 如果服务器使用 LVM,则可以创建文件系统的只读快照并复制它。空间开销仅用于读取快照时发生的文件系统更改。 (3认同)

小智 9

如果旧服务器正在退役并且文件可以离线几分钟,那么通常最快的方法是将驱动器从旧盒子中拉出并将它们连接到新服务器,安装它们(现在重新上线)并复制文件到新服务器本机磁盘。

  • 它大约是 1PB 的 2TB 驱动器,所以它太多了。 (2认同)