.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.cgetfattr: Removing leading ‘/‘ from absolute path names# file: data/glusterfs/d_home/stat.ctrusted.afr.home-client-10=0x000000000000000000000000trusted.afr.home-client-11=0x000000000000000000000000trusted.afr.home-client-9=0x000000000000000000000000trusted.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

时间: 2024-10-27 07:45:48

.glusterfs 目录说明的相关文章

Glusterfs目录ls性能优化方案分析

Glusterfs目录ls性能优化方案分析 目的和优化思路 讨论了glusterfs对文件系统爬虫rsync/ls目录性能的现有优化措施和可能的进一步优化方案.优化思路是减少本地文件系统的元数据操作,减少fuse client的负载,减少req的网络轮询次数,减少一次网络通信时间,缓存预抓取,并发,异步,bulk 传输 fuse readdirplus centos 6.4最新内核,支持fuse readdirplus.微调mount timeout参数. FUSE: Adaptive NFS-

glusterfs命令简介

安装: yum install -y glusterfs{,-server,-fuse,-geo-replication} 如不使用主从复制,可以不装glusterfs-geo-replication 操作: gluster peer command gluster peer status gluster peer probe server //添加机器 gluster peer detach server //踢出机器 gluster volume create NEW-VOLNAME [st

GlusterFS源码解析 —— GlusterFS 源码安装

安装环境: CentOS6.2 glusterfs-3.4.3 GlusterFS 挂载需要 fuse 支持,如果你的内核版本低于 2.6.16 则需要下载fuse的源码包自行编译安装,也可下载 fuse 的rpm包.安装fuse的方法我就不说了,不会源码安装的直接去rpmfind.net上下载rpm即可.高于此版本的内核中已经有了fuse.ko的模块,需要的时候可以执行以下命令进行加载: modprobe -b fuse 1.下载GlusterFS的源码包,目前已经有更新版本 : wget h

GlusterFS下如何修复裂脑文件?

恢复GlusterFS文件裂脑步骤 1. 执行如下命令,获取裂脑文件的路径. # gluster volume heal VOLNAME info split-brain 客户端访问裂脑文件会报I/O错误. 2. 关闭在mount客户端访问裂脑文件的进程.如果有虚拟机正在使用裂脑文件,必须将虚拟机关闭. 3. 通过getfattr命令获取和验证扩展属性的变更记录,然后通过扩展属性来确定哪些brick包含可信的文件. # getfattr -d -m . -e hex <file-path-on-

GlusterFS分布式存储集群-2. 使用

参考文档: Quick Start Guide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/ Install-Guide:https://docs.gluster.org/en/latest/Install-Guide/Install/ CentOS gluster-Quickstart:https://wiki.centos.org/SpecialInterestGroup/Storage/glust

换个角度深入理解GlusterFS(三)

GlusterFS(GNU ClusterFile System)是一个开源的分布式文件系统,它的历史可以追溯到2006年,最初的目标是代替Lustre和GPFS分布式文件系统.经过八年左右的蓬勃发展,GlusterFS目前在开源社区活跃度非常之高,这个后起之秀已经俨然与Lustre.MooseFS.CEPH并列成为四大开源分布式文件系统.由于GlusterFS新颖和KISS(KeepIt as Stupid and Simple)的系统架构,使其在扩展性.可靠性.性能.维护性等方面具有独特的优

Kubernetes使用Glusterfs做存储持久化

GlusterFS GlusterFS是一个开源的横向扩展文件系统.这些示例提供有关如何允许容器使用GlusterFS卷的信息. 该示例假定您已经设置了GlusterFS服务器集群,并且已准备好在容器中使用正在运行的GlusterFS卷. 先决条件Kubernetes集群已经搭建好. Glusterfs集群的安装环境介绍OS系统:Centos 7.xGlusterfs两个节点:192.168.22.21,192.168.22.22 安装glusterfs我们直接在物理机上使用yum安装,如果你选

Kubernetes 持久化存储之GlusterFS

GlusterFS是一个开源的分布式文件,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过网络互连成一个并行的网络文件系统.具有扩展性.高性能.高可用性等特点. 前提:必须要在实验环境中部署了Gluster FS集群,文中创建了名为:gv0的存储卷 1.创建endpoint,文件名为glusterfs_ep.yaml $ vi glusterfs_ep.yaml apiVersion: v1 kind: Endpoints metadata: name: glusterfs nam

kvm学习笔记

http://blog.opskumu.com/ http://blog.csdn.net/kumu_Linux http://blog.opskumu.com/kvm-notes.html#kvm- KVM十年 virtio-gpu介绍 Linode 从 Xen 升级到 KVM qemu2.7编译实战 SPICE协议的理解 海量"小文件"优化秘籍:GlusterFS 让KVM虚拟机支持console功能 利用KVMGT-kernel,实现 KVM GPU虚拟化 让KVM虚机能使用音箱