Google文件系统中的惰性空间分配是什么?

18

2
可能是什么是惰性分配?的重复问题。 - brokenfoot
如果您发现某个回复很有用,请在答复文本左边打勾接受它。 - Eugene Mayevski 'Callback
4个回答

11

采用延迟空间分配的方式,物理空间的分配将被尽可能地推迟,直到累计了大小为块大小(在GFS的情况下为64MB)的数据。换句话说,在磁盘上分配新块之前的决策过程,严重受到要写入的数据大小的影响。这种等待而不是基于其他特征分配更多块的偏好,最大程度地减少了内部碎片(即未使用的64MB块的部分)的机会。

Google的论文还指出:"大多数块都是满的,因为大多数文件包含许多块,只有最后一个块可能是部分填充的。" 因此,创建文件时也采用相同的方法。

这类似于:http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory


1
我还没有看完整篇论文...但我希望以下片段能在某种程度上帮助您。
首先,我要问的问题是:文件系统中有大块大小的效果是什么?假设FS块大小为64MB。好消息是我们以良好的连续块写入硬盘(每次查找写入更多数据),间接块中保留的元数据较少等等。坏消息是内部碎片...如果文件大小为1MB,但最小块大小为64MB,则存在63MB的内部碎片。那么,如何获得好消息并避免坏消息?
一种方法是进行惰性空间分配或延迟空间分配。在这里,我们保持块大小较小(比如1MB),但当我们写入磁盘时,我们会一起写入大量的1MB块数据。这样,我们就可以获得大块写入的好处。请注意,这意味着我们写入一个incore缓冲区,但告诉write() sys调用已经完成了对磁盘的写入...就像写入缓冲高速缓存一样。
注意:当"时间"到了真正的块分配时,我们需要保证磁盘上有足够的空间。因此,延迟块分配 => 空间预留是在写入时进行的,但是只有在累积了足够多的数据块后,才会在稍后的时间进行空间分配。

1
但是GFS中的块大小并不小(1 MB)。实际上,它说:“我们选择了64 MB,这比典型的文件系统块大小要大得多。懒惰空间分配避免了由于内部碎片而浪费空间”。因此,尽管使用更大的块大小,但内部碎片减少了,如何做到的呢?也许我在这里漏掉了任何概念。 - user2328404
你好,这是否意味着对于一个1KB的文件,在磁盘上不可用的空间为64MB? - alexsc

0

在创建时,您不必固定文件大小。而且您可以将其附加到较大的文件中。您可以参考this


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接