HLFS: 基于HDFS和LFS技术的EBS开源实现

转载 2012年03月28日 21:11:27
HLFS(HDFS Log Structured FileSystem)是一个开源EBS系统,隶属于《谁来拯救云计算》一文作者康华所发起的cloudxy项目。 HDFS最大的特色是结合了LFS和HDFS, HDFS提供了可靠、随时可扩展的文件服务,而LFS弥补了HDFS不能随机更新的缺憾。 HDFS一个较为成熟的项目,为HLFS提供可靠的、可扩展的存储服务,  大大简化了HLFS的设计。在HLFS中,虚拟磁盘对应一个文件, 文件长度能够超过TB级别,客户端支持Linux和Xen,其中linux基于NBD实现, xen基于blktap2实现,客户端通过类posix接口libHLFS与服务端通讯。  HLFS主要特性有: 支持多副本,支持动态扩容,支持故障透明处理,支持快照。

数据分片和定位
每个虚拟磁盘对应一个HLFS文件,HLFS文件由多个段组成,段是HDFS独立文件默认为64M。 数据分配和定位由HDFS提供,系统本身不需要设计数据分片和定位相关算法。

数据存储
HLFS中,文件即日志,日志即文件,文件的更新全是已追加方式记录到日志末尾。
从物理上看,日志由多个固定长度的段组成, 这些段头尾相连组成一个线性的log,段是HDFS中的独立文件,文件名是segno.seg,其中segno是从0开始递增的编号。
从逻辑上看,日志由一些列日志项组成,日志项不能跨段。 除了日志项的头部之外, 日志项的格式包括 A (data)| B (meta-data block log) | C (inode log) | D(inode_map log), 其中data是被修改的数据块,如果data包含多个数据块,那么这些数据块必须连续, meta-data block log是由于被修改的索引块, inode log是新的inode, inode_map记录inode位置信息(只包括一个inode)。 inode_map是定位数据块和inode的关键数据结构, HLFS打开文件时必须得到最新的inode_map信息。定位inode_map的方法如下: HLFS从日志末尾(最后一个段的末尾)读取inode和inode_map。与经典LFS系统不同, inode_map仅包含一个inode, 而从日志末尾可直接读到inode, 因此inode_map结构其实没有存在的必要, 留着inode_map是便于将来扩展成单个日志文件支持多文件。  
LFS系统中的一个重要的问题是定位日志末尾的算法, 最简单的办法是根据文件长度确定日志末尾, 但是这种方法无法跳过最后一个不完整的日志项(日志项可能只写入了一半)。这个问题通用的解决办法是增加检查点机制,  从检查点顺序扫描日志, 遇到不完整的日志(通过checksum、日志项中的其它元数据判断)就认为日志结束,并且将不完成的日志truncate掉。

垃圾回收由用户手工发起, 具体分为两个步骤,首先分析段的利用率(即数据块存活率),写入segment_usage。 分析利用率有两种方法,一种是客户端计算,另外一种map/reduce计算。 如果段利用率低于某以阈值, 则启动真正的垃圾回收。 垃圾回收是将段中有效的日志项重新写入到日志末尾。 一个日志项中可能包含有效或者失效的数据块,必须严格区分这两者,只能将日志项中的有效数据重新写入日志末尾,否则可能导致丢失更新。

LFS类系统非常容易实现快照功能——只需将当时的inode位置记录到snapshot文件。

集群成员关系
HDFS维护集群成员关系,处理节点退出和加入。

复制和一致性
HDFS保证复制和一致性, HDFS的append操作比GFS复杂, 能够保证一致性。


性能

 EBS的主要应用是RDS数据库应用,而HLFS的关注点是中小型个人host服务, 性能不是HLFS目前的主要关注点。

读写IO随机化仍然严重: 首先, 非原地更新必然导致数据块在物理上非连续存放,因此读IO比较随机, 顺序读性能下降。 其次,虽然从单个文件角度看来, 写IO是顺序的,但是在HDFS的chunk server服务了多个HLFS文件, 因此从它的角度来看, IO仍然是随机的。同样构建在HDFS之上的HBase是怎么解决随机IO问题的?  HBase每个region server负责多个tablet, 每个tablet都需要记录日志到HDFS, 为了提高日志效率, 每个regioin server上的tablet合用一个日志文件。 或许HLFS也借鉴HBase做法进行优化。
写延迟问题, HDFS面向大文件设计, 小文件写延时不够优化。  
垃圾回收的影响, HLFS写日志线程发现没有请求时,会启动垃圾回收, 垃圾回收需要读取和写入大量数据, 对正常写操作造成较大影响。 此外,按照目前实现,相同段上的垃圾回收和读写请求不能并发,  垃圾回收算法对正常操作的干扰较大。
写日志性能需要进一步优化。  一次只往日志写入一个日志项,一个日志项只能包含连续数据块, 写日志的吞吐率不是很好。


总结
HLFS是基于HDFS和LFS实现的一个开源EBS系统, 得益于HDFS,HLFS的实现难度降低,并拥有三高特性: 高可靠、高可用、高可扩展。只要HLFS能够解决好性能问题, 相信会更加完美。

后端分布式系列:分布式存储-HDFS 与 GFS 的设计差异

「后端分布式系列」前面关于 HDFS 的一些文章介绍了它的整体架构和一些关键部件的设计实现要点。 我们知道 HDFS 最早是根据 GFS(Google File System)的论文概念模型来设计实...
  • mindfloating
  • mindfloating
  • 2015年10月13日 20:31
  • 6332

做自己的linux发行版 LFS、BLFS、ALFS、HLFS的区别

Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的。LFS 基于这样的假设,即一部分一部分地编译完整的操作系统不仅能够揭示操作系统是...
  • simanstar
  • simanstar
  • 2013年11月01日 16:43
  • 2301

LFS,BLFS,ALFS,HLFS

Linux From Scratch (LFS) 及其后代代表一种新方法,向用户揭示 Linux 操作系统是如何工作的。LFS 基于这样的假设,即一部分一部分地编译完整的操作系统不仅能够揭示操作系统是...
  • rudyn
  • rudyn
  • 2014年05月07日 17:22
  • 375

sheepdog(牧羊犬):一种EBS的开源实现

sheepdog是EBS的开源实现, 为虚拟机提供高可用的块级存储, 能够扩展到数百台机器, 支持快照,克隆等高级特性,其架构如图所示   sheepdog从逻辑上分为三个层次, 第一层Q...
  • igorzhang
  • igorzhang
  • 2013年11月07日 18:39
  • 1263

LFS6.1.1构建GNU-i686工具链笔记(why to)

1. 建议使用Firefox浏览本文档, 以达到最好的浏览效果.IE在浏览时易发生排版显示变形.2. 文档发布的初衷是方便大家交流学习, 欢迎转载, 并请一并标注版权.+---------------...
  • dozec
  • dozec
  • 2007年02月17日 11:04
  • 2383

sheepdog--介绍

sheepdog是NTT日本电报电话公司开源的一个分布式文件系统,初衷就是要做一个aws的ebs开源实现,可以实现镜像和块设备(block device)的分布式存储 sheepdog不是一个常规的...
  • weimingyu945
  • weimingyu945
  • 2013年11月07日 10:08
  • 935

Hadoop分布式文件系统HDFS的具体实现

3.1 DFS分布式文件系统       DistributedFileSystem 所在的包为org.apache.hadoop.hdfs,它继承自FileSystem抽象文件系统,代表Hadoo...
  • u010726042
  • u010726042
  • 2015年11月15日 12:27
  • 375

基于HDFS的实时计算和wordcount程序

基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实时处理。相当于处理实时的文件流。 streamingContext.fileStream(dataDir...
  • ZMC921
  • ZMC921
  • 2017年07月14日 10:13
  • 233

Hadoop之关键技术(一)----HDFS

作为Hadoop的核心技术之一,HDFS(HadoopDistributed File System,Hadoop分布式文件系统)是分布式计算中数据存储管理的基础。它所具有的高容错高可靠性、高扩展性、...
  • zhanglei415415415
  • zhanglei415415415
  • 2014年06月11日 23:35
  • 1154

使用LFS打造自己的Linux日常桌面操作系统心得体会

都签到签到十级了,是时候发个帖子了.编译了lfs也有几十回了,也是时候写个帖子记录下了 这些内容可能对新手不太友好,该喷就喷吧 第一 为什么要自己编译系统 14年之后,以linux为...
  • qq_36476111
  • qq_36476111
  • 2016年11月11日 22:33
  • 594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HLFS: 基于HDFS和LFS技术的EBS开源实现
举报原因:
原因补充:

(最多只允许输入30个字)