档案文件系统或格式

我正在寻找一个文件types来存储已经中断的系统的归档。 目前,我们主要使用tar.gz,但从200GB的tar.gz压缩文件中查找和提取几个文件是笨拙的,因为tar.gz不支持任何types的随机访问读取供应。 (在你想到之前,使用FUSE安装tgz不会让它变得更好。)

这是我们迄今为止发现的 – 我想知道还有其他的select:

  • tar.gz – 糟糕的随机访问读取
  • zip – 缺less对某些高级文件系统function的支持(例如:硬链接,xattrs)
  • squashfs – 花费很长的时间来创build一个大的档案(很多小时)和糟糕的用户空间工具。

我试图想到一个简单的方法来创build一个function齐全的文件系统映像到尽可能小的空间 – ext2在一个cloop图像,但它似乎不是一个特别用户友好的解决scheme。

大概这个问题已经解决了 – 有没有我错过的select?

virt-sparsify可以用来稀疏化(通过qemu的qcow2 gzip支持)压缩几乎所有的linux文件系统或磁盘映像。 生成的图像可以挂载在虚拟机中,也可以通过guestmount挂载到主机上。

有一个新的ndbkit xz 插件 ,可以用于更高的压缩率,仍然保持良好的随机访问性能(只要您要求xz / pixz 重置块边界上的压缩 )。

Mksquashfs是一个高度并行的程序,并利用所有可用的内核来最大限度地提高性能。 如果你看到非常大的生成时间,那么你要么有很多重复的文件,要么机器内存不足,抖动。

为了调查表现,你可以先

在Mkssquashfs上使用-no-duplicates选项

mksquashfs xxx xxx.sqsh -no-duplicates

重复检查是一个缓慢的操作,它必须按顺序进行,并在文件集上有大量的重复项,这成为一个其他并行程序的瓶颈。

在Mksquashfs运行时检查内存使用情况/可用内存,如果系统垃圾,性能会很低。 调查-read-queue,-write-queue和-fragment-queue选项来控制Mksquashfs在运行时缓存的数据量。

Tar和Zip不是并行的,只能使用一个内核,所以很难相信你对Mksquashfs压缩性能的抱怨。

另外我从来没有看到任何其他报告说用户空间程序是“穷人”,Mksquashfs和Unsquashfs有一套高级的选项,允许非常好的控制压缩过程,并允许用户选择哪些文件被压缩 – 这些选项大大超前于像焦油这样的程序。

除非你可以举出为什么这些工具很差的具体例子,否则我会把这个归咎于工人谴责这些工具的通常情况,而真正的问题在别处。

正如我之前所说,你的系统可能是颠簸,因此表现不佳。 默认情况下,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。

如果内存服务的话, ZFS具有相当不错的压缩功能 。 这就是说,我从来没有真正使用它。 🙂

由于这是堆栈溢出,我假设你正在寻找库/代码。 我想你可以检查我们的SolFS虚拟文件系统。 它不支持硬链接,但支持备用流(对于xattr)并且支持标记(对于unix属性)。 接下来,支持符号链接,您可以在执行归档时将硬链接转换为符号链接。