美文网首页
分布式文件系统 glusterfs

分布式文件系统 glusterfs

作者: Robin92 | 来源:发表于2022-05-04 00:00 被阅读0次

    NFS 共享存储很简单,但后期扩容和管理方面很不方便,所以这里引入 glusterfs。

    glusterfs 是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数 PB 级存储容量和数千客户端,通过网络互联构成一个并行的网络文件系统。具有高可用性、高性能、高可用的特点。(任何一个结点挂掉不影响使用)

    安装

    yum install centos-release-gluster -y # 安装 glusterfs 的 yum 源,通过 `ls /etc/yum.repos.d` 查看源
    yum install glusterfs-server -y # 安装
    systemctl start glusterd.service # 启动
    systemctl enable glusterd.service
    gluster --version # glusterfs 9.5
    

    原教程上对应 gluster 源是 6 版本,而我本地是 9 版本,这可能会导致 gluster 服务启动和运行有问题。(目前看到 systemctl start 的时候有错误日志,但依然是启动成功的)

    May 04 06:20:46 k8s-master systemd[1]: [/usr/lib/systemd/system/glusterd.service:4] Unknown lvalue 'StartLimitBurst' in section 'Unit'
    May 04 06:20:46 k8s-master systemd[1]: [/usr/lib/systemd/system/glusterd.service:5] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit'
    

    gluster 操作

    构建资源池

    gluster pool list # 列表资源池
    gluster peer probe k8s-node1 # 向资源池中添加结点信息
    # probe 是添加;detach 是删除;status 是查看状态
    
    image.png

    使用资源池创建卷

    glusterfs 支持七种模式的卷,这里使用“分布式复制卷”,最稳定的就是这个卷。分布式复制卷要求至少需要四个存储单元。
    一个目录需要挂载一块空的硬盘(/dev/下的文件),一个硬盘就是一个存储单元。

    首先要在所有结点上创建目录 mkdir -p /gfs/test1 /gfs/test2,用于挂载 gfs 的硬盘

    # 创建卷,分别用 master 的两个目录和 node1 的两个目录(四个目录各绑定一个卷,所以是四个卷)
    gluster volume create test-gfs replica 2 k8s-master:/gfs/test1 k8s-master:/gfs/test2 k8s-node1:/gfs/test1 k8s-node1:/gfs/test2 force 
    gluster volume start test-gfs # 启动卷(启动后才能访问数据)
    gluster volume info test-gfs  # 查看卷信息
    mount -t glusterfs k8s-master:/test-gfs /mnt/ # 可以在任意的结点上挂载卷
    

    test-gfs 是卷名
    生产环境用增加硬盘的方式(/dev/sda 就是 gfs 创建的,还可以添加 sdbsdc),而不是增加目录的方式。
    replica 2 是在复制模式下至少使用了两个副本。
    在不用 force 时,会提示复制卷期望至少 3 个副本;并且会因为使用了系统的 root 分区而导致终止。加入 force 后不再提示。

    image.png

    原理:在写文件时,由于 replica=2,文件系统会根据哈希算法写两份到整个系统的四个存储单元(brick)中。

    扩容

    当卷的空间不够用时,可以先加 node,然后将 node 加入到 资源池中(已经将 node2 加入到资源池了),在 node 上格式化硬盘,并加入到卷中。如果是复制卷,那么每次应该至少加入两个 brick。

    df -h # 查看容量
    gluster volume add-brick test-gfs k8s-node2:/gfs/test1 k8s-node2:/gfs/test2 force # 扩容
    df -h # 查看容量
    
    查看容量 扩容 image.png

    解压之后产生一堆的文件,理论上应该分布在六个 brick 中,实际仍然是 node2 上没有文件,可能是偶然。

    image.png

    相关文章

      网友评论

          本文标题:分布式文件系统 glusterfs

          本文链接:https://www.haomeiwen.com/subject/fmviyrtx.html