在将输入文件写入磁盘之前对其进行压缩

在将输入文件写入磁盘之前对其进行压缩

我需要通过 10Gb 链接从另一台机器加载大文本文件,这些文件是由外部/闭源软件创建的,我无权更改(例如使其压缩输出文件)

目前这些机器(源机器和目标机器)上的网络和磁盘 IO 使用率为 100%,因此成为系统瓶颈。

如果源机器首先可以压缩文本文件,那就完全没有问题了,但我无法访问源机器(文件正在 rsync 到我可以访问的目标机器)

我可以在目标机器上做点什么来至少减轻目标机器磁盘的压力。

我想到了一个很荒谬的想法:建立一个几 GB 的临时内存映射驱动器,将其挂载为源机器的 rsync 的输入目录,然后编写一个程序,每次压缩几个文本文件,将压缩的输出文件(与原始文件相比小 10 倍)写入 HDD,并从内存映射驱动器中删除原始文件。

有没有可以实现这个功能的工具?还有其他推荐吗?

我正在使用 ubuntu 18.04。

此致

答案1

我可以在目标机器上做点什么来至少减轻目标机器磁盘的压力。

当磁盘 IO 成为瓶颈时,显而易见的解决方案当然是“获取更快的磁盘”

或者,当您有一些空闲的 CPU 容量时:多个 Linux 文件系统支持“透明”压缩,即文件系统驱动程序在将数据写入底层块存储时执行即时压缩,并在再次读取数据时进行解压缩。这样,您就不必在应用程序级别进行任何更改。

相关内容