pb double类型文件读取_谷歌Colossus文件系统的设计经验

本文介绍了谷歌从早期的GFS文件系统到Colossus的演变过程,强调了Colossus在解决扩展性、存储效率和元数据管理上的改进。Colossus通过引入D服务器取代GFS的chunk server,利用Bigtable存储元数据,实现了更大规模、更快的速度和可预测的延迟。此外,文章还讨论了存储成本、磁盘利用率和I/O优化策略,以确保集群的高效运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Colossus,巨人,谷歌第二代GFS文件系统。与GFS相比,Colossus相关的文章和信息却零星稀少。2017年,谷歌首席工程师 Denis Serenyi 在 PDSW 2017 (第二届国际并行数据系统研讨会)上分享 《From GFS to Colossus : Cluster-Level Storage @ Google》,透露了Colossus设计的深层思考。以下是我的翻译和解读。

e59e7bcb7368a922b56869c6c5a2c663.png

从 GFS 到 Colossus:谷歌的集群存储,如何使用Colossus提高存储效率。 Colossus汲取了GFS的经验教训,正如在《Storage Architecture and Challenge》中所提及的GFS的不足。

基础知识:

  • 谷歌的第一个集群级文件系统(2001)

  • 为具有大文件的批处理应用程序设计

  • 同时管理metadata和chunk的单一主程序

  • 为了可靠性,chunk通常被复制3份

GFS教训:

  • 扩展到大约50M文件,10个P

  • 大量大文件增加了上游应用程序的复杂性

  • 不适用于对延迟敏感的应用程序

  • 扩展限制增加了管理开销

而Colossus则专注于存储效率的提升以及各种扩展功能。

1444e16aa22707019a7df8b55347e53e.png

谷歌数据中心内部示意图。

60de73e0296148c89ad4f7b9d77f4922.png

你怎么使用PB级的空闲磁盘空间?

2ebaa7de2853b85022ca93c89b6328b5.png

你怎么使用PB级的空闲磁盘空间?

在紧急磁盘空间不足的情况下

88e7c8701709ac090887bb76263493d1.png

典型的集群:

  • 成千上万的机器

  • PB级别分布式HDD

  • 可选的TB级本地SSD

  • 10 GB/S的对分带宽

b4328f7f468eac2e3d8f20ed2b4132b6.png

第1部分:从GFS到Colossus的迁移

39a011ac2753cac8059121592406c6be.png

GFS架构问题

GFS master

  • master节点机器不够大,不能容纳更大的文件系统

  • metadata操作的单一瓶颈节点

  • 可以容错,但不是高可用

可预测的性能

  • 没有延迟保证

d627533ec014e9d03b60f8b28e5c23d3.png

GFSv2的一些明显目标

  • 更大!

  • 更快!

  • 可预测的尾部延迟

  • 用Colossus取代GFS master节点

  • 用D服务器取代GFS 的chunk server

注意:D(Disk的缩写)服务器,它相当于在Borg上运行的GFS Chunkserver。D构成了最低的存储层,并被设计为惟一可以直接读写存储在物理磁盘上的文件的应用程序,物理磁盘被连接到D所运行的机器上。在GFS中, master节点记录文件系统元数据,Chunkserver管理原始数据chunk的读写。与此类似,D服务器管理对原始数据的访问,而Colossus服务器管理哪些数据被映射到哪个D服务器上。Colossus客户端与Colossus对话,以确定从哪个D服务器读取/写入数据,然后直接与D服务器对话,以执行读取/写入操作。如下图所示。

8082b9e47f04786e51df5702331f419e.png

21f51f20b2c65fced6a05d6b2463721a.png

一个简单的问题

Bigtable的“文件系统”

  • 追加写

  • 单一写(多个读)

  • 没有快照和重命名

  • 不需要目录

元数据放在哪里?

ca46e5559331decc40c47e6ed71bdcae.png

当时的存储选项

GFS

分片MySQL(本地磁盘和复制)

  • 广告数据库

带有Paxos复制的本地键值存储

  • Chubby

Bigtable (GFS上的键值排序存储)

d48af97d6b77dcd1828770e82e40556c.png

当时的存储选项

GFS←缺少有用的数据库特性

MySQL分区←负载平衡差,复杂

本地键值存储←无法伸缩

Bigtable←hmmmmmm .... 见下一节

cec4dca95e75511440efcc8c561de8ff.png

为什么选择Bigtable ?

Bigtable解决了许多难题:

  • 在tablets之间自动分割数据

  • 通过查询元数据定位tablets

  • 易于使用的语义

  • 高效的单点查找和扫描

文件系统元数据保存在内存本地组中。

8eb0461849111c51a5cdb288610c4e27.png

元数据在Bigtable 中!?!?

93aa4dca69c2be8550c319ce708e2bae.png

GFS master -> CFS

CFS“curators”运行在Bigtable tablet服务器中

Bigtable的一行对应于一个文件

Stripes是一组复制集合:打开、关闭、结束

b5f2f346d7a29ad57ce7584aef3849cf.png

Colossus 存储元数据?

  • 元数据大约是数据大小的1/10000

  • 所以如果我们在Colossus上建造一个Colossus…

  • 100PB数据→10TB元数据

  • 10TB元数据→1GB元元数据

  • 1GB元元数据→100KB元…

现在我们可以把它放进Chubby中!

5514a83b9fd9886b8fd99be98ba67512.png

第2部分:Colossus和高效存储

8e6fceef6911b468b9386f8bfaad9584.png

主题

  • Colossus可以进行伸缩和集群划分

  • 应用互补→更便宜的存储

  • 数据放置,IO平衡是困难的

4b57c338d68399e28b9ec57235195845.png

集群是什么样子的?

d3aaf2a2c9ac78d86ca3b2c7119170b4.png

让我们来谈谈钱

  • 总拥有成本(Total Cost of Ownership,TCO)

  • TCO包含的远不止一块磁盘的零售价

  • 一个密度更大的磁盘可能会以$/GB的溢价出售,但仍然比部署成本低(电源、连接开销、维修)

56cc1fc3494bcc9b2d436edaf53862e1.png

存储TCO的成分

  • 最重要的是,我们关心的是存储TCO,而不是磁盘TCO。存储TCO是数据持久性和可用性的成本,以及提供数据服务的成本。

  • 如果我们保持磁盘繁忙,就会最小化总存储TCO。

23266bfd7675c0ad5198f2910f2e4077.png

我应该买什么磁盘?

  • 我应该买哪些磁盘?

  • 我们会有一个组合,因为我们一直在成长

  • 我们有一个IOPS和容量的总体目标

  • 我们选择磁盘使集群和机群更接近我们的整体组合

c61cd5ff2409df4550735c085968bb5d.png

我们想要什么

  • 相同数量的热数据(盘轴繁忙)

  • 用冷数据填满磁盘的剩余部分(填满磁盘)

7947eed771123f2c49353c5326891ceb.png

如何实现?

  • Colossus重新平衡旧数据和冷数据

  • …并将新写的数据均匀地分布在磁盘上

7ecd87433a7856beb49b16f9afbe5d05.png

当事情进展顺利时

  • 每个方格即是一个D服务器

  • 方格大小显示磁盘容量

  • 方格颜色显示盘轴利用率

19cfb4b1236185fafdb0df298405207d.png

粗略的模式

  • 购买flash作为缓存,在磁盘范围内考虑IOPS/GB

  • 购买磁盘作为容量,填满磁盘

  • 希望磁盘永远是繁忙的:否则我们买了太多的flash,但却不够忙…

  • 如果我们购买用于IOPS的磁盘,字节级别的改进就没有帮助

  • 如果冷字节无限增长,我们就有大量的IO容量

39feb252a5c6ef308791c42cbc557ee6.png

填充磁盘是困难的

  • 文件系统在磁盘100%满时不能正常工作

  • 没有空间就不能删除容量进行升级和维修

  • 个别磁盘组不希望达到接近100%的配额

  • 管理员对统计上的过度使用感到不舒服

  • 供应链不确定性

ae19248e3c79efab62525d17e6141a7f.png

应用程序必须改变

  • 几乎与我们数据中心的任何其他东西不同,磁盘I/O成本正在上升

  • 想要比HDD提供更多访问的应用程序可能需要考虑让热数据更热(因此flash工作得很好),让冷数据更冷

  • 一个写于X年前的应用程序可能会导致我们购买更小的磁盘,从而增加存储成本

4542796cfb40c28b2534376474b3394c.png

结论

Colossus对于优化我们的存储效率非常有用。

存储效率

  • 元数据伸缩允许对资源进行划分

  • 组合不同大小和不同类型工作负载的磁盘的能力非常强大

展望未来,I/O成本趋势将要求应用程序和存储系统同时发展。

55ea2c11b209399836dfa2ba4ee03ad4.png

谢谢!

往期推荐

  • 饿了么交易系统 5 年演化史

  • 关于数据中台,你需要知道的三个“大”和三个“小”

  • 进行微服务治理,先要对微服务进行度量

  • 雷军公开演讲:你在面试牛人,牛人也在面试你

  • Kubernetes 在知名互联网公司的落地实践

技术琐话 

以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。本号由坐馆老司机技术团队维护。

cf632a9b9ab1895cafcf9b5d19cfe3ff.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值