0

为了提高读取和写入大型数据集的性能,我们有多个线程将单独的文件压缩并写入 SAN。我正在制作一个新的文件规范,它将所有这些文件一起附加到一个文件中。我将把这些较小的数据块中的每一个称为子集。

由于压缩后每个子集的大小都是未知的,因此无法知道要写入的字节偏移量。如果不进行压缩,每个写入器都可以写入可预测的地址。

有没有办法在文件系统级别将文件附加在一起而不需要文件副本?

我将在这里写一个示例,说明我希望结果如何存储在磁盘上。尽管我不确定以这种方式编写它有多大帮助。

single-dataset.raw
[header 512B][data1-45MB][data2-123MB][data3-4MB][data5-44MB] 

我希望 SAN 现在是 NTFS,以防某些文件系统有任何特殊功能。

如果我使子集足够小以适合 ram,我会知道压缩后的大小,但保持它们更小还有其他性能缺点。

4

1 回答 1

0

使用稀疏文件。只需将每个子集定位在“保证”的某个偏移量处,以超出最后一个子集。然后,您的标头可以包含每个子集的偏移量,并且文件系统会为您处理大的“空”块。

更酷的解决方案是将每个子集写成一个单独的文件,然后使用低级文件系统函数通过将下一个文件的第一个块链接到前一个文件的最后一个块来连接文件(同时删除目录条目除了第一个文件之外的所有文件)。

于 2011-09-06T22:28:36.883 回答