一、组件介绍

  1. GlusterFS

    • 作用:
      • 分布式文件系统,支持横向扩展,可将多个存储节点整合为单一命名空间。
      • 提供高可用性和冗余(如复制卷、纠删码卷)。
      • 支持多种存储场景(对象存储、块存储、文件存储)。
    • 优势:
      • 无单点故障,数据自动修复。
      • 支持动态扩容,适合大规模存储需求。
  2. NFS-Ganesha

    • 作用:
      • 用户态 NFS 服务器,支持 NFSv3/v4/v4.1 协议。
      • 将 GlusterFS 卷通过 NFS 协议导出,兼容传统 NFS 客户端。
    • 优势:
      • 高性能,支持多协议并行访问(如同时使用 NFS 和 SMB)。
      • 灵活的访问控制(基于 IP、主机名、认证机制)。

二、环境准备

  • 节点规划

    • node1 (IP: 192.168.1.10): GlusterFS 存储节点 + NFS-Ganesha 服务端
    • node2 (IP: 192.168.1.11): GlusterFS 存储节点
    • client (IP: 192.168.1.100): 客户端测试节点
  • 系统要求

    • CentOS 7 系统,关闭防火墙或开放以下端口:
      • GlusterFS: 24007-24008/tcp, 49152-49251/tcp
      • NFS: 2049/tcp, 111/udp, 20048/udp

三、GlusterFS 部署

  1. 安装 GlusterFS 服务端(在 node1node2 执行):

    yum install -y centos-release-gluster
    yum install -y glusterfs-server
    systemctl start glusterd
    systemctl enable glusterd
    
  2. 配置存储池(Trusted Pool)

    # 在 node1 上添加 node2 到集群
    gluster peer probe node2
    # 查看节点状态
    gluster peer status
    
  3. 创建存储目录并初始化卷

    # 在两节点创建存储目录
    mkdir -p /data/brick/gv0
    # 创建复制卷(示例为 2 副本)
    gluster volume create gv0 replica 2 node1:/data/brick/gv0 node2:/data/brick/gv0
    gluster volume start gv0
    # 查看卷状态
    gluster volume info
    

四、NFS-Ganesha 部署

  1. 安装 NFS-Ganesha(在 node1 执行):

    yum install -y nfs-ganesha-gluster
    # 禁用 GlusterFS 原生 NFS(避免端口冲突)
    gluster volume set gv0 nfs.disable on
    
  2. 配置 NFS-Ganesha

    vi /etc/ganesha/ganesha.conf
    
    EXPORT {
      Export_ID = 1;
      Path = "/gv0";          # GlusterFS 卷挂载点
      Pseudo = "/gv0";        # 客户端看到的虚拟路径
      Access_Type = RW;
      Protocols = "3,4";
      Transports = "TCP";
      SecType = "sys";
      # 允许访问的客户端 IP 段
      clients = 192.168.1.0/24;
      # GlusterFS 卷配置
      FSAL {
        name = GLUSTER;
        hostname = "localhost";  # 本地 Gluster 服务
        volume = "gv0";          # Gluster 卷名
      }
    }
    
  3. 启动服务

    systemctl start nfs-ganesha
    systemctl enable nfs-ganesha
    

五、客户端挂载测试

  1. 安装 NFS 客户端工具

    yum install -y nfs-utils
    
  2. 挂载 GlusterFS 卷

    mount -t nfs4 node1:/gv0 /mnt
    # 验证写入
    echo "Test" > /mnt/test.txt
    

六、验证与调试

  • 查看 NFS 导出列表
    showmount -e node1
    
  • 检查 GlusterFS 卷状态
    gluster volume status gv0
    
  • 日志分析
    tail -f /var/log/ganesha/ganesha.log
    

七、应用场景

  • 虚拟化存储: 为 KVM/OpenStack 提供共享存储。
  • 媒体共享: 多节点同时读写视频、图片资源。
  • 备份归档: 分布式存储保障数据冗余,NFS 简化访问流程。

八、常见问题

  1. 挂载失败

    • 检查防火墙/SELinux:setenforce 0(临时关闭 SELinux)。
    • 确保 Gluster 卷已启动:gluster volume start gv0
  2. NFS 客户端无权限

    • 确认 /etc/ganesha/ganesha.confclients 配置的 IP 范围。
  3. 性能优化

    • 调整 Gluster 卷类型(如分布式复制卷)。
    • 修改 NFS-Ganesha 线程数(NFS_Threads 参数)。

通过以上步骤,您已完成了一个基于 GlusterFS 和 NFS-Ganesha 的高可用存储解决方案!

posted on 2025-04-10 16:18  LeeHang  阅读(223)  评论(0)    收藏  举报