Google 文件系统块大小

nam*_*ats 3 gfs

为什么GFS中的块大小为64Mb,尽管当文件大小不是 64 的倍数时可能会导致内部碎片?

pap*_*agi 5

在他们的目标应用程序中,文件更有可能很大。块服务器可以执行大型顺序读取而不是许多小型读取,从而提高吞吐量。

\n\n

GFS论文中提到的三个原因:

\n\n
    \n
  1. 降低master的负载。GFS的主服务器只提供chunk的元数据,而不提供chunk内容。因此,如果 chunk 相对较大,那么向主服务器发送的请求就会较少。
  2. \n
  3. 减少网络开销,它鼓励应用程序在单个块和持久网络连接上完成许多操作。应用程序还可以通过更少的请求获取数据。
  4. \n
  5. 减少存储在 master 中的元数据大小。GFS\xe2\x80\x99s 设计中只有一台主服务器。块的所有元数据都存储在主服务器的内存中,以减少延迟并提高吞吐量。大块意味着更少的元数据,更少的元数据意味着更少的元数据加载时间。
  6. \n
\n\n

此外,出于局部性考虑,元数据分布在块服务器上,而不是主服务器上。当主服务器启动时,它会从所有块服务器加载元数据。因此,元数据越少意味着启动时间越短。

\n\n

为了限制大块大小的影响,GFS 使用惰性空间分配,即如果文件大小只有 1 MB,GFS 只向文件系统请求 1 MB 而不是 64 MB,以避免由于内部碎片而浪费空间。

\n\n

值得一提的是,GFS 的后继者 Colossus 将数据块大小从 64MB 减少到 1MB。

\n