专栏首页敏而好学.glusterfs 目录说明

.glusterfs 目录说明

    .glusterfs目录大小基本是等于当前brick中的所有文件大小,原因是里面主要存放的是brick中文件的硬链接。

    .glusterfs目录是3.3版本引入的一个新结构,它是用来做什么的呢?

什么是GFID?

    你可能知道,glusterfs将元数据信息存储在文件的扩展属性中。其中一个元数据就是trusted.gfid,这个就是inode号,在集群中,每个文件都有一个唯一的uuid号,这个在gluster 3.1和3.2版本工作的都很好,但是在文件自动修复(AFR)过程中经常会有一些误判。

    这个GFID用于建立.glusterfs这个目录结构,每个文件都对应一个硬链接放在.glusterfs目录中,存放规则是,前两个数字创建一个目录,接着两个数字创建一个目录,然后目录中存放是一个完整的uuid硬链接。

例如:

# getfattr -m . -d -e hex /data/glusterfs/d_home/stat.c
getfattr: Removing leading '/' from absolute path names
# file: data/glusterfs/d_home/stat.c
trusted.afr.home-client-10=0x000000000000000000000000
trusted.afr.home-client-11=0x000000000000000000000000
trusted.afr.home-client-9=0x000000000000000000000000
trusted.gfid=0xc62757554baf4a33bc7690c56dac23e0

会创建一个硬链接到:

/data/glusterfs/d_home/.glusterfs/c6/27/c6275755-4baf-4a33-bc76-90c56dac23e0

为什么要这样做?

    之前执行删除、重命名、建硬链接的几种方法是有缺陷的。如果一个连接到复制卷并执行了重命名操作的连接丢失,自动修复进程不知道是纯粹的删除或者是重命名等操作,这样会出现问题,可能产生重复的文件导致混乱。

    现在一个文件被删除,.glusterfs目录中对应的文件也会被删除,自动修复守护进程会在好的服务器上遍历,查看到文件是否被存在,由于对应的gfid文件被删除了,所以认为是真正被删除了,如果文件丢失,但对应的gfid文件存在,说明被重命名了,过期的服务器会删除文件名,但不会删除对应的gfid文件,一旦自动修复守护进程遍历到新的文件名,会直接创建到gfid文件的硬链接,因为数据仍然在服务器上,所以这样修复一个重命名文件就避免了数据传输。

    如果gfid文件是普通文件而不是硬链接,那基本上就完蛋了。最终会发生链接分离,原因是一个文件会过期,客户端没有办法知道一个文件和另一个具有相同的gfid,所以会重新创建一个,这样操作会创建大量不必要的重复文件,而使用硬链接后,每个gfid文件会对应一个文件,就不会出现空间浪费。

NFSv4支持

    很快,glusterfs会支持NFS v4,会使用匿名文件描述符。gfid文件允许在目录中创建gfid文件,但不在目录中创建对应的条目。

这对管理员来说有什么新要求吗?

    作为管理员,了解gfid机制对文件修复和裂脑修复是很用帮助,建议详细了解。

    首先,每个brick的根目录对应的gfid是00000000-0000-0000-0000-000000000001,这个文件放在 .glusterfs/00/00目录中,实际上是一个符号链接,连接到“../../..”,其他目录也会链接到这个目录下面。

    如果删除一个文件不删除对应的gfid文件,修复进程会修复该文件,如果gfid文件损坏,对应的文件也会损坏。

参考:

https://joejulian.name/blog/what-is-this-new-glusterfs-directory-in-33/

https://www.gluster.org/pipermail/gluster-users/2014-January/015494.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RHEL/CentOS 体系结构变化趋势

        整体架构变化很明显,从支持多种平台多种架构,到支持单一平台,支持单一体系结构。

    党志强
  • GlusterFS下如何修复裂脑文件?

    # gluster volume heal VOLNAME info split-brain

    党志强
  • k8s node alertmanager监控报警配置方法

    节点本身的监控主要监控CPU、内存、磁盘IO、文件系统可用空间即可。 比如,对于使用来prometheus的alertmanager来做node报警,rules...

    党志强
  • 又来搞事情了,这次女友让我研究如何实现一个文件系统

    在对文件有了基本认识之后,现在是时候把目光转移到文件系统的实现上了。之前用户关心的一直都是文件是怎样命名的、可以进行哪些操作、目录树是什么,如何找到正确的文件路...

    乔戈里
  • 又来搞事情了,这次女友让我研究如何实现一个文件系统

    在对文件有了基本认识之后,现在是时候把目光转移到文件系统的实现上了。之前用户关心的一直都是文件是怎样命名的、可以进行哪些操作、目录树是什么,如何找到正确的文件路...

    cxuan
  • 鸟哥的Linux私房菜笔记第六章(一)

    ls为查阅文件属性的指令,起对应完整文件名为:/bin/ls(这是绝对路径),那么为什么我们输入ls就会执行/bin/ls这个指令呢?这是因为环境变量PATH所...

    Johnson木木
  • ASP.NET5 中静态文件的各种使用方式服务端的静态文件开启目录浏览呈现默认文件使用UseFileServer方法文件类型基于IIS的考虑最佳实践

    所谓静态文件,包含HTML文件,css文件、图片文件和js文件等,他们是服务器直接读取到客户端的一些资源,在这篇文章中,我们将解释关于ASP.NET5和静态文件...

    小白哥哥
  • Linux谁都没你会偷懒

    关于linux为了提高效率我们会常用的一些快捷键,下面我们看看有哪些是我们经常使用到的吧!

    DataScience
  • Linux 第一天

    /Lost+found 这个目录平时是空的, 系统非正常关机而留下“无家可归”的文件

    DataScience
  • 一.Linux基础

    末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式...

    对弈

扫码关注云+社区

领取腾讯云代金券