我需要通过 10Gb 链接从另一台机器加载大文本文件,这些文件是由外部/闭源软件创建的,我无权更改(例如使其压缩输出文件)
目前这些机器(源机器和目标机器)上的网络和磁盘 IO 使用率为 100%,因此成为系统瓶颈。
如果源机器首先可以压缩文本文件,那就完全没有问题了,但我无法访问源机器(文件正在 rsync 到我可以访问的目标机器)
我可以在目标机器上做点什么来至少减轻目标机器磁盘的压力。
我想到了一个很荒谬的想法:建立一个几 GB 的临时内存映射驱动器,将其挂载为源机器的 rsync 的输入目录,然后编写一个程序,每次压缩几个文本文件,将压缩的输出文件(与原始文件相比小 10 倍)写入 HDD,并从内存映射驱动器中删除原始文件。
有没有可以实现这个功能的工具?还有其他推荐吗?
我正在使用 ubuntu 18.04。
此致
答案1
我可以在目标机器上做点什么来至少减轻目标机器磁盘的压力。
当磁盘 IO 成为瓶颈时,显而易见的解决方案当然是“获取更快的磁盘”。
或者,当您有一些空闲的 CPU 容量时:多个 Linux 文件系统支持“透明”压缩,即文件系统驱动程序在将数据写入底层块存储时执行即时压缩,并在再次读取数据时进行解压缩。这样,您就不必在应用程序级别进行任何更改。
- 北卡罗莱纳州https://btrfs.readthedocs.io/en/latest/Compression.html
- 虚拟文件系统
zfs set compression=on <STORAGE>
- 您不太可能在 Linux 系统上使用 NTFS,但它支持 Linux 上的透明压缩。https://en.wikipedia.org/wiki/NTFS-3G