glusterfs 相关总结

学习参考地址:

https://www.cnblogs.com/clsn/p/8428543.html

https://www.cnblogs.com/huangyanqi/p/8406534.html

架构:

glusterfs 是一个分布式的文件系统。分为客户端和服务端。

客户端:指的是我们挂载 glusterfs 服务集群的 机器节点

服务端:搭建的glusterfs 集群

基本概念:

卷名:集群创建后,我们可以把这个集群当成一个整体,创建多个 分布式的卷,这些的卷又有很多类型,如distribution、replica、这两种混合的。我们给这个卷起的名字就是卷名,客户端挂载的时候需要指定卷名,这就是它的作用。

集群的搭建步骤:

双节点:192.168.10.23 、192.168.10.23

磁盘:sdb

目录:/data

  1. 创建逻辑卷

    pvcreate /dev/sdb
    gcreate vg0 /dev/sdb
    lvcreate -n lv0 vg0
    lvcreate -l 100%VG -n lv0 vg0
    fdisk -l
    mkfs.xfs -i size=512 /dev/vg0/lv0
    mount /dev/vg0/lv0 /data
    df -hT
    echo '/dev/vg0/lv0 /data xfs defaults 0 0' >> /etc/fstab
    
  2. 安装glusterfs 相关软件

  3. 创建 glusterfs 卷

    gluster peer probe 192.168.10.24  #在23 上把24 加到可信池里
    gluster pool list	  #查看状态
    gluster peer status 	
    
    gluster volum create gv0 192.168.10.23:/data/brick1 192.168.10.24:/data/brick1
    gluster volume start gv0
    gluster volume status 
    gluster volume info 
    
    
  4. 客户端挂载

    #安装客户端
    yum install glusterfs-fuse -y
    
    mount -t glusterfs 192.168.10.22:/gv0 /mnt/gv0
    

底层原理分析

在客户端创建文件到共享卷的时候,客户端里 可以用 ll 命令看到文件的硬链接是1,而到服务端去看文件时,可以观察到文件硬链接为2。在隐藏目录.glusterfs 中肯定存在 这两个文件对应关系。

客户端里看到的文件 links 为1 ,服务端里的文件 links 为2,如果在服务端删的话,./glusterfs里的文件就多了一个 -links 为1 的文件,这个对应的是客户端能看到的文件。只有再删除了这个,文件才能真实的被删除,空间才能释放掉。

硬链接原理:硬连接的作用是允许一个文件可以拥有多个路径名。因此源文件和硬链接文件是仅文件名不同的相同文件,创建文件的硬链接相当于为文件又起了一个新的文件名而已。一个inode 可以对应多个文件名,用 ls -l 命令就可以看到。
只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

实验一:

服务端删除问价后,重启 数据卷,看看是否会恢复数据

重启后没有恢复数据,即使 隐藏目录里的 硬链接还在。

#找到硬链接为2的所有文件,然后删除,-link =1 说明只有一个 硬链接
find . -samefile -L `find . -links 2 -type f | grep -Ev "db|health|stub|0{4}"` -execdir rm {} \;

要正确的删除软链接,来释放空间。

软连接有的是链接目录,而不单单是文件,rm -rf 可能会删除目录所有内容了

# 客户端里看到的文件 links 为1 ,服务端里的文件 links 为2,如果在服务端删的话,./glusterfs里的文件就
# 多了一个 -links 为1 的文件,这个对应的是客户端能看到的文件

#找到 .gluster已删除的硬链接,brick里的 links 为1
#find .glusterfs -links 1 -type f | grep -Ev "health|db" | xargs ls -l

# find . -links 1 -type f | grep -Ev "db|health|stub|0{4}" | xargs ls -l

#查找brick 里面(包括.gluster)里所有links 为 1 的文件
# ll -haR | awk -F ' ' '$2==1{print $0}' | grep -Ev "db|health|stub|^l"


# 1,清理硬链接,brick下的 .glusterfs 失效的为 1
# 2,清理软连接,brick中有一些是其他节点上同步过来的,也要删掉。
    # 先删客户端里已经不存在的目录,再清理失效的软连接
# 3,清理空目录
posted @ 2022-04-10 23:39  风风羊  阅读(413)  评论(0编辑  收藏  举报