CalvinFS笔记

现有分布式文件系统不足

  • 当整个数据中心失效时,无法提供跨越远距离的连续的文件操作;
  • 使用的文件元数据管理方式不具有可扩展性。假定单个文件尺寸非常大大,
    而文件个数和目录个数相对较小。降低了文件内容同步的开销;

分布式文件系统管理文件元数据方式

  • 独立的文件元数据管理机制:GFS,HDFS, Lustre,Gluster,Ursa Minor,Farsite,XtreemFS
  • 共享虚拟磁盘

Calvin

Calvin是一个分布式数据库系统,CalvinFS基于它实现文件的元数据管理。

  • Log层
Created with Raphaël 2.1.0 Client Client Front_End_Server Front_End_Server Distributed_Block_Store Distributed_Block_Store Meta_Log_Server Meta_Log_Server log requests batched requests sufficiently replicated batch’s unique block id success success
  • Storage层
    Sorage层管理存储节点,提供两个基本功能:(1)文件数据读写接口;(2)决定文件读写请求映射到哪个节点

  • 调度器

每个存储节点拥有自己的调度器,调度器在事务(transaction)开始执行前检查事务包含的读写操作集,决定何时开始事务执行。一旦事务开始执行,不会再对事务进行进一步的检查。Calvin的事务执行采取一种类强两阶段封锁协议的协议。事务在执行前须原子的获得整个事务周期中需要的锁,锁的获取将按照事务在log中出现的顺序申请。

CalvinFS 架构

主要设计理念:

  • 常驻内存的文件元数据;
  • 可串行化和快照读写;
  • 可能存在的大量小文件;
  • 可扩展读写读吞量;
  • 容纳低速写;
  • Hash分割的元数据;
  • 单个文件操作的优化;
    Calvin 将文件内容存放在分布式非事务性存储快,用扩展的Calvin存放文件元数据。文件内容与文件元数据均分布在跨数据中心的存储块上。

CalvinFS 块存储

key words:

  • metadata entry format

非固定尺寸的内容不可变块

CalvinFS将文件内容存放在0个或多个块中,每个块的大小不固定。
每个块内容不可改变,向文件添加的内容,将会被写入新的块,并追加到文件末尾。
这种追加将在文件元数据中体现。
每个块都有一个唯一的ID

块存储于块分配

  • 每个块拥有一个ID,通过ID的hash值将块分配到bucket,每个bucket会被复制到特定数量的跨数据中心的块服务器。
  • bucket和块服务器间的映射关系保存在全局的Paxos副本中,该副本只有在硬件损坏,负载均衡,集群加入新机器时才会变化。
    每个节点缓存全局映射关系,每台机器可以通GUID的hash值查询特定bucket所在的副本服务器。缓存失效导致查找失败会引起缓存的更新和重试查询。
  • 一个副本服务器的失效会导致该服务器上数据的迁移。
  • 一个后台进程定时检查文件,压缩包含很多小尺寸块的文件。如果原始文件内容没有改变,压缩过的文件写入块服务器后,更新全局映射关系。当在压缩过程中文件
    的内容有改变时,写入块服务器的文件将被丢弃,并重启压缩过程。

CalvinFS 文件元数据管理

CalvinFS文件元数据内容以key-value的形式存储,key位该文件的绝对路径,value包含如下内容:

  • Entry Type:指明该元数据对应的是文件还是目录;
  • Permissions:文件本身的权限标识,以及从根节点到该文件路径上的目录的权限标识;
  • Contents:目录包含子目录于文件;文件包含文件内字节偏移于块ID之间的映射;

对文件元数据权限的更改可能

元数据存储层

CalvinFS的元数据存储层是Calvin的一个实例,提供如下文件系统接口:

  • Read(path);
  • Create{File,Dir}(path);
  • Resize(path, size);
  • Write(path, file offset, source, source offset, num_bytes);
  • Delete(path);
  • Edit permissions(path, permissions);

CalvinFS的文件系统接口提供与POSIX类似的操作方式,这些接口同时需要检查调用者的权限和ID。有些操作涉及到多个元数据的级联操作。

目录的递归操作

利用Calvin内置的OLLP分析元数据操作请求:
- Analyze模式:分析操作请求涉及到的所有的读写请求,收集涉及到的元数据项;
- Run模式:上一步确定的读写请求集合被作为注释添加到一个事务中,重检查读写集合,如果在Analyze和Run之间这个请求集合发生变化,PLLP放弃这个事务,并重启它。

Update周期

实例:创建一个新文件,向其中写入一个字符串

echo “import antigravity” >/home/calvin/fly.py

上述文件系统操作由三个单独的操作组成:

  • 创建文件/home/calvin/fly.py;
  • 将文件大小设置为18B;
  • 向文件元数据写入偏移;

写文件数据

Created with Raphaël 2.1.0 Client Client Front_End Front_End Block_Store_Servers Block_Store_Servers Log_Front_End Log_Front_End Meta_Data_Shard Meta_Data_Shard request request block ID global unique block ID hash ID to find bucket locate backet->block server block creation request quorum say yes batched operation request append to current batch of log peroidly write to block store server majority ACK write batch ID to paxos-replicated metalog forward each transaction request sort transactions success success

Created with Raphaël 2.1.0 P P Q Q permission check, abort if not ok permission check, abort if not ok result ok Create file metadata entry Resize file metadata entry Update file metadata entry’s contents result ok Update parent directory metadata

示例操作包含两部分:对/home/calvin目录文件元数据的操作和对/home/calvin/fly.py文件元数据的操作。
假设对/home/calvin目录元数据的操作在P0完成,对/home/calvin/fly.py元数据的操作在Q0完成。

P0
Q0
检查父目录权限检查文件权限,如果失败终止任务
父目录权限检查成功,向Q0发送消息等待父目录权限检查结果
Q0返回成功,更新父目录元数据内容P0返回成功,执行如下操作:创建文件元数据,调整文件元数据尺寸,更新文件元数据内容

同一事务的操作各个数据中心按照如上方式重复进行,保证元数据的一致性。


Created with Raphaël 2.1.0 Start perform local reads serve remote remote reads collect remote results execute to complete End
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值