2、文件删除
实时删除还是延时删除? 实时删除的优势是可以快速释放磁盘空间;延时删除只是在删除动作执行的时候,置个标识位,后续在某个时间点再来批量删除,它的优势是文件仍然可以阶段性地保留,最大程度地避免了误删除,缺点是磁盘空间仍然被占着 。在分布式文件系统中,磁盘空间都是比较充裕的资源,因此几乎都采用逻辑删除,以对数据可以进行恢复,同时在一段时间之后 (可能是 2 天或 3 天,这参数一般都可配置),再对被删除的资源进行回收 。
怎么回收被删除或无用的数据? 可以从文件的 meta 信息出发——如果 meta 信息的“文件 - 数据块”映射表中包含了某个数据块,则它就是有用的;如果不包含,则表明该数据块已经是无效的了 。所以,删除文件,其实是删除 meta 中的“文件 - 数据块”映射信息 (如果要保留一段时间,则是把这映射信息移到另外一个地方去) 。
3、面向小文件的分布式文件系统
有很多这样的场景,比如电商——那么多的商品图片、个人头像,比如社交网站——那么多的照片,它们具有的特性,可以简单归纳下:
- 每个文件都不大;
- 数量特别巨大;
- 读多写少;
- 不会修改 。
针对这种业务场景,主流的实现方式是仍然是以大数据块的形式存储,小文件以逻辑存储的方式存在,即文件 meta 信息记录其是在哪个大数据块上,以及在该数据块上的 offset 和 length 是多少,形成一个逻辑上的独立文件 。这样既复用了大数据块系统的优势和技术积累,又减少了 meta 信息 。
4、文件指纹和去重
文件指纹就是根据文件内容,经过算法,计算出文件的唯一标识 。如果两个文件的指纹相同,则文件内容相同 。在使用网络云盘的时候,发现有时候上传文件非常地快,就是文件指纹发挥作用 。云盘服务商通过判断该文件的指纹,发现之前已经有人上传过了,则不需要真的上传该文件,只要增加一个引用即可 。在文件系统中,通过文件指纹可以用来去重、也可以用来判断文件内容是否损坏、或者对比文件副本内容是否一致,是一个基础组件 。
文件指纹的算法也比较多,有熟悉的 md5、sha256、也有 google 专门针对文本领域的 simhash 和 minhash 等 。
十一、总结
分布式文件系统内容庞杂,要考虑的问题远不止上面所说的这些,其具体实现也更为复杂 。本文只是尽量从分布式文件系统所要考虑的问题出发,给予一个简要的分析和设计,如果将来遇到类似的场景需要解决,可以想到“有这种解决方案”,然后再来深入研究 。
同时,市面上也是存在多种分布式文件系统的形态,下面就是有研究小组曾经对常见的几种分布式文件系统的设计比较 。
文章插图
几种分布式文件系统的比较
从这里也可以看到,选择其实很多,并不是 GFS 论文中的方式就是最好的 。在不同的业务场景中,也可以有更多的选择策略 。
作者 | 张轲
来源丨https://www.jianshu.com/p/fc0aa34606ce
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
【只知道HDFS和GFS?你其实并不懂分布式文件系统】
推荐阅读
- 懂行人买食盐,不只看价格,认准盐袋“3行字”,买到优质健康盐
- 男子驾车撞开堵路车,获刑10个月还要赔5万元,汽车被堵只能忍?
- 泡好的奶粉能放多久?
- 要怎么喝你知道吗,喝玫瑰花茶有什么好处
- 红茶的发霉是什么样的 我买的红茶放了很长时间了 不知道还能不能喝 袋装的[红茶]
- 金银花茶的制作方法需知道,金银花茶的作用
- 牛黄不能和什么一起吃
- 所以茶叶蛋次只能吃个,桐乡到乌镇怎么坐车
- MacBook上的这些软件真的太牛了,只为Mac而生!
- 首次公开二十种黑帽seo技术!