分布式文件与分布式存储系统学习总结(持续更新)

本文深入探讨了Write Ahead Log(WAL)在存储系统中的作用,阐述了WAL执行细节及在分布式存储系统中的重要性。接着,介绍了分布式存储面临的一系列挑战,如数据分布、一致性、容错、负载均衡等问题,并分类讨论了分布式文件系统、键值系统和数据库。特别地,文章详细解析了Ceph分布式存储系统,包括其架构、数据分布策略和优势。此外,还涉及Linux文件系统的inode机制和磁盘调度算法。
摘要由CSDN通过智能技术生成

存储系统知识

Write Ahead Log
  • 问题引入

存储系统在运行过程中,每时每刻都在发生数据更新。如对文件数据的CRUD.

对于中心控制节点来说,这些都会涉及到metadata的更新操作。

为了保持元数据和文件数据的状态一致性,系统所有对数据的操作对应的元数据变更都应该要持久化到元数据db中。

那假如这个metadata db是在外存的,那么是否意味着高频的io操作?是否可以引入延时写入的方法?

Write Ahead Log

核心意思:在把metadata的变更操作写到持久稳定的db之前,会预写入一个log中,然后再由另外的操作把log apply到外部持久的db中。

当系统要处理大量的事务操作的时候,WAL与实时同步db相比效率会更高。

WAL的日志还可以在利于数据库的事务回滚。

WAL执行细节

WAL不记录metadata本身,而是记录进行的操作的log
在这里插入图片描述
数据库的操作记录,首先会写到内存的buffer中,当buffer满或者人工触发flush的时候,会把事务数据写出到WAL的log中。

系统在每次完成一个操作的时候,同时会把改动应用到memory和WAL的buffer内,再由buffer 写到外存的metadata db中。

当老的WAL被apply到元数据db的时候,可以用commitId来标识当前最新的事务。所以整个过程可以理解为做一次checkpoint,即当前db的状态+WAL = 新的db状态

Write ahead log

分布式存储系统知识

分布式存储要解决的问题:

1.数据分布
如何把数据分布到多台服务器才能够保证数据分布均匀?数据分布到多台服务器后,如何实现跨服务器的读写操作?

2.一致性
如何把数据的多个副本复制到多台服务器并且保证一致性?

3.容错
如何检测服务器故障?如何自动把出现故障的服务器的数据和服务迁移到集群中的其他服务器?

4.负载均衡
新增的服务器和集群正常运行过程中如何实现自动负载均衡?数据迁移过程如何保证不影响已有事务?

5.事务与并发控制
如何实现分布式事务?实现多版本并发控制?

6.压缩与解压缩
如何根据数据特点设计合理的压缩算法?

分布式存储分类
  • 非结构化数据

  • 结构化数据

  • 半结构化数据
    介于非结构化数据和结构化数据之间,HTML文档属于半结构化数据。其与结构化数据最大的区别在于,半结构化数据模式结构内容混在一起

分布式文件系统

存储大量的图片,照片,视频等非结构化数据对象,叫做Blob(Big binary object data)

分布式文件系统用于存储Blob对象,块存储或者大文件存储。

我们首先定义分布式文件

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值