我正在寻找一种文件类型来存储已被淘汰的系统档案。目前,我们主要使用tar.gz,但是从200GB tar.gz存档中查找和提取几个文件是不实用的,因为tar.gz不支持任何类型的随机访问读取条款。 (在您了解之前,使用FUSE安装tgz并不能让它变得更好。)
以下是我们迄今为止所发现的内容 - 我想了解其他选项:
我正在尝试一种简单的方法来创建一个功能齐全的文件系统映像到尽可能小的空间 - 一个cloop图像中的ext2,但它似乎不是一个特别用户友好的解决方案。
大概这个问题以前已经解决了 - 有没有我错过的选择?
答案 0 :(得分:5)
Mksquashfs是一个高度并行化的程序,它利用所有可用的内核来最大限度地提高性能。如果你看到非常大的构建时间,那么你要么有很多重复的文件,要么机器运行时内存不足和抖动。
要调查效果,您可以先
在Mkssquashfs i上使用-no-duplicates选项,例如
mksquashfs xxx xxx.sqsh -no-duplicates
重复检查是一个缓慢的操作,它必须按顺序完成,并且在具有大量重复项的文件集上,这将成为另外并行化程序的瓶颈。
在Mksquashfs运行时检查内存使用/可用内存,如果系统处于废弃状态,则会出现性能极低的情况。调查-read-queue,-write-queue和-fragment-queue选项以控制Mksquashfs在运行时缓存的数据量。
tar和zip没有并行化,只使用一个核心,所以很难相信你对Mksquashfs压缩性能的抱怨。
此外,我从未见过任何其他报告称用户空间程序“差”,Mksquashfs和Unsquashfs有一组高级选项,可以非常精细地控制压缩过程,并允许用户选择压缩哪些文件 - 而且这些选项远远超过tar等程序。
除非你能给出工具为什么不好的具体例子,否则我会把这归结为工人指责工具的惯常情况,而真正的问题在其他地方。
正如我之前所说,你的系统可能正在颠簸,因此表现不佳。默认情况下,Mksquashfs使用所有可用内核,以及至少600 MB的RAM(在大型文件系统上升至2 GB或更多)。这是为了提高性能,因为内存中的缓存数据可以减少磁盘I / O.这种“开箱即用”行为对于具有大量内存和其他闲置系统的典型用户来说是好的。这是大多数用户想要的,Mksquashfs“最大化”系统以实现尽可能快的文件系统创建。
对于RAM较低的系统或具有活动进程的系统消耗大量可用CPU和/或内存不利。当每个进程争用可用的CPU和RAM时,您将获得资源争用。这不是Mksquashfs的错,而是用户的错误。
Mksquashfs -processor选项用于限制Mksquashfs使用的处理器数量,-read-queue,-write-queue和-fragment-queue选项用于控制Mksquashfs使用多少RAM。
答案 1 :(得分:2)
virt-sparsify可用于稀疏化(通过qemu的qcow2 gzip支持)压缩几乎所有的linux文件系统或磁盘映像。生成的图像可以通过guestmount安装在VM中,也可以安装在主机上。
有一个新的ndbkit xz plugin可以用于更高的压缩,这仍然保持良好的随机访问性能(只要你问xz / pixz {{3 }})。
答案 2 :(得分:1)
ZFS具有相当不错的压缩capabilities。那就是说,我从来没有真正使用它。 : - )
答案 3 :(得分:0)
由于这是Stack Overflow,我假设您正在寻找库/代码。我想你可以检查我们的SolFS虚拟文件系统。它不支持硬链接,但支持备用流(对于xattr),并且支持标记(对于unix属性)。接下来,支持符号链接,您可以在执行存档时将硬链接转换为符号链接。