Lecture #07 & #08

2019-07-29  本文已影响0人  全村滴希望

分布式文件系统(松耦合)

§通过网络实现的文件系统
§旨在将数据存储在多台机器,AKA服务器上
§通过网络访问客户端的数据
§应用程序在客户端上执行
§松散耦合的vs. 紧密耦合

新职责

§容错:许多磁盘和节点增加了失败的可能性。 目前,大多数分布式文件系统都可以容忍组件故障。
§高度可用:分布式文件系统通常拥有许多用户。 用户希望能够随时访问他们的数据。
§一致性:需要分布式事务支持
§可扩展:随着数据集的增长,分布式文件系统也在增长
预计将随用户需求而扩展

并行VS分布式

§数据分发

NFS(Network File System)

一般home目录都是使用NFS服务共享,架构上就是多个节点的客户端共同共享一个服务端的目录。

NFS服务端实现

NFS也是定义了一个虚拟文件系统(也是建立在本地文件系统之上)

Server在本地文件系统之上实例化NFS卷

NFS客户端的Locking和Caching

依旧是采用锁的机制来避免争用和重叠区域的问题。
读的数据和写的数据都是远程的。
§NFSv4支持文件的有状态锁定

NFS Tradeodds

NFS只需要一个Server

它究竟是不是分布式文件系统,有是的一方面也有不是的一方面。

PNFS

可以有多个Server,其中一个作为Mangement server,作为元数据的服务端。客户端一旦通过元数据知道数据的信息就可以不通过mangement server。客户端通过RPC(远程数据访问)来对服务存储直接进行读写。

GFS(Google File System)

搜索引擎通过分布式把各种网页爬下来,进行索引和分析。Google主要是针对自己的一些应用来开发的GFS文件系统。

开发动机

谷歌需要一个良好的分布式文件系统

Google文件系统工作量

§Google文件系统存储数十亿个对象
§Object= Web文档(大小〜千字节)
§文件很大:~10 GB

§大多数文件不停的附加新数据 - 大型顺序写入
§随机写入非常罕见
§文件只写一次,然后才能读取
§读取是顺序的
§大型流式读取和小型随机读取
§高带宽比低延迟(可以牺牲短暂响应时间)更重要
§Google应用程序:

GFS:假设

§高组件故障率

GFS:设计

§存储为块的文件 (chunks就相当于PVFS的object) - 固定大小(64MB)
§通过复制实现可靠性

GFS:架构

§服务器:商品linux机器,运行用户级服务器进程

chunks:
§数据单位:块

chunk 复制

§客户端使用以下方式向块服务器发送读/写请求:
chunk handle,字节范围
§每个块都在多个服务器上复制

GFS:元数据

§Master管理三种类型的元数据

In Memory 的元数据

§潜在的顾虑:整个系统的容量受到主机具有多少内存的限制
§64MB块== 64字节的元数据
§使用前缀压缩存储的文件命名空间,<64字节
每个文件
§十亿个文件? 10 - 100 GB ......
§“如果需要支持更大的文件系统,为主机增加额外内存的成本是一个很小的代价,需要付出简单,可靠,性能和灵活性的代价”

Chunk的位置

chunk 服务端管理着chunk,
Master从chunk服务端启动时去检索chunk handle
Master 控制chunk的位置
Master轮询chunk服务器去ping一个message 看他是不是alive,还是fail了,这个叫heartbeat,

Metadata操作日志

§必须将所有元数据操作写入主节点和影子节点的持久日志
§在刷新日志之前可以对操作进行批处理
§Master在启动时重播日志
§主要检查点内存状态定期(一旦日志达到一定大小)
§仅需要重放自上一个检查点以来的日志条目
§检查点以b-tree形式存储
§在新日志可以使用时创建检查点

概念:log结构化写入

在今天的文件系统中非常常见,直接建一个log,里面写好要改哪些东西,然后read的时候去看最后一个log是什么,然后最后更新的log是最新的数据。
§就地写入需要读 - 修改 - 写
§日志结构化写入基于到达顺序以顺序方式放置数据块

系统交互 - 客户端/主服务器/块服务器

§数据变更 mutation
§快照 snapshot

租约和变更顺序

§Mutation 改变元数据或块的内容
§每个变更都在所有复制品上执行,一个副本改了,其他的都要同步改 (Leases就是一个时间段,)
§用于维护复制副本的一致性
§Master授予其中一个副本,作为主副本来管chunk的变更怎么送到每一个副本,那么就有一个Leases时间段之内,这个副本是主副本。
§主副本来选择块的所有变更的序列顺序。

Leases

§Leases旨在最大限度地减少Master的管理开销
§初始超时为60秒
§主副本的请求来自master的扩展
§主副本可以撤销Leases

control flow和Data flow分开
control flow是说要怎么保证一致性和顺序逻辑上的,DAta flow从物理拓扑上来讲,怎么传数据有效。

Snapshots

GFS提供Snapshots操作以制作文件或目录树的副本
§例如 创建庞大数据集的分支副本
§例如 检查点在试验前的当前状态变化
§用于实现它的写时复制技术 copy-on-write技术

容错 - 检测故障

§所有chunk服务器定期向主服务器发送message,称为heartbeats.
§一旦主服务器在该段时间后(通常是heartbeats速率的两倍)没有收到来自块服务器的消息,主服务器会认为chunk服务器已经down了
§Heartbeats还包含其他信息,例如块标识符和Lease扩展请求

某一个chunk服务器down,那么就需要Re-replication
重新复制
§一旦住服务器检测到故障:

副本放置

§影响安置的因素
§均衡磁盘利用率:磁盘利用率低于平均值的块服务器具有更高的权重
§块服务器上的最近创建:指示对该块服务器的传入大量写入
§在机架上分发复制品以确保可靠性

高可用性 - Mater副本

§Master将所有操作复制到主副本

checksuns
数据恢复,校验和计算
§读取:为服务器上的每次读取完成校验和计算

上一篇 下一篇

猜你喜欢

热点阅读