• 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,清理空目录
    
  • 相关阅读:
    技术期刊 · 五等分の花嫁 | Vue 3.2 正式发布!;大型项目管理策略;开源社区运营就像种菜;阮一峰的 fetch 教程;Webpack5 学习的平凡之路
    最近很火的低代码到底是什么?
    测试开发之前端篇-Web前端简介
    痞子衡嵌入式:简析i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道
    痞子衡嵌入式:其实i.MXRT下改造FlexSPI driver同样支持AHB方式去写入NOR Flash
    《痞子衡嵌入式半月刊》 第 38 期
    [Vue深入组件]:native事件修饰符以及拓展之自定义组件的事件监听目标DOM元素自定义
    [Vue深入组件]:v-model语法糖与自定义v-model
    [Vue深入组件]:禁用 Attribute 继承
    @from [GITHUB] : Learn regex the easy way
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/16128194.html
Copyright © 2020-2023  润新知