为什么谷歌文件系统将文件分为块



在论文《谷歌文件系统》第2.3节中,它说:

文件被划分为固定大小的块。

但不要说为什么。这样做有什么好处?

据我所知,有几个原因

  1. GFS中存储的文件非常大,即使到PB,也没有这么大的磁盘来存储它
  2. 与可变大小不同,固定大小的块更容易进行索引和查询
  3. 实际上,每个区块的大小都不小,大约64MB,也是一个很大的大小,这样可以减少GFS所需的元数据数量

易于复制。与整个文件相比,复制几个块更容易。如果在复制过程中发生任何错误,则只需要再次复制失败的区块。

平衡服务器负载。读取和写入操作都可以在所有块服务器之间分离。

提高读写吞吐量。由于数百台服务器可以同时为请求提供服务,因此可以提高读写吞吐量。应用程序从主服务器获取文件块的元数据,然后直接从块服务器获取这些块。

更好的磁盘利用率。如果你的文件往往很大,那么一个区块和磁盘只有很少的空间,那么更容易为一个区块而不是整个文件找到足够的空间。

易于进行完整性检查。计算一个区块的校验和比计算整个文件快。当检测到损坏的区块时,修复该区块比修复整个文件更容易。

这一概念似乎与底层操作系统和DBMS完全一致,它们使用固定大小的页面/块作为虚拟内存,也用于磁盘上的数据放置。固定大小的块有助于减少碎片,这意味着如果文件被删除,空间将被闲置,因此很难重用,因此块的大小也保持较小。这里的GFS实际上只用于后期处理,所以没有太多的删除。但是,拥有固定大小的小块也可以很容易地在它们上运行map reduce作业。

通过这种方式,客户端可以请求特定的块,因为它知道每个大小只能有64mb的大小,因此也可以更好地利用缓存。

相关内容

  • 没有找到相关文章

最新更新