Gluster is a software defined distributed storage that can scale to several petabytes. It provides interfaces for object, block and file storage.
Version: 10.3
Repo: https://github.com/gluster/glusterfs
依赖库 | 来源 | 备注 |
---|---|---|
libuuid | Middleware 仓库 | |
liburcu | Middleware 仓库 | |
libucontext | Middleware 仓库 | |
libargp | Middleware 仓库 | |
libxml2 | Middleware 仓库 | |
openssl | Base 组件 | 如果开发环境版本低于 IDE 5.0.5,请将 openssl 替换为 Middleware 仓库中的版本 |
libcurl | Base 组件 | 优先检测 Base 路径下的库,否则会使用工作空间下的库 |
libsunrpc | Base 组件 | |
libreadline | Base 组件 |
常用架构 arm/aarch64/mips64/x86/x64/loongarch 均能使用。
部署动态库:使用 ALT + D 部署配置文件:使用 ALT + X
首次部署后请在设备中运行 shfile /etc/glusterfs/mklink_glusterfs.sh
关于 GlusterFS 的操作请参考官方文档,以下仅对基本的操作进行介绍。
类别 | 记录 |
---|---|
服务端 | 依赖接口 xattr / hard-link / telldir / seekdir, 请确认使用的内核版本是否支持以上特性 |
- | 请确保内核 fs_cfg.h 中 LW_CFG_FS_XATTR_EN 为开启状态 |
- | setrlimit 参数未生效,需要将内核的 system_cfg.h 中 LW_CFG_MAX_FILES 配置为 65535 |
- | gluster 会占用较多的 event 资源,默认情况下 5000 的数量只能满足启动一个卷的场景,如果需要开启多个卷,请调整 kernel_cfg.h 中的 LW_CFG_MAX_EVENTS |
- | gluster probe 建立过程中会用到 getnameinfo 接口,请提前配置 DNS 服务,否则会因超时导致该流程耗时较长 |
客户端 | 依赖于 FUSE, 请确认使用的内核版本是否支持以上特性 |
运行服务端:
glusterd -p /var/run/glusterd.pid
添加远端服务器:
gluster peer probe <remote-server ip>
查看远端服务器状态:
gluster peer status
or
gluster pool list
创建卷:
gluster vol create [volume-type] <volume-name> <ip1:volume1> <ip2:volume2>
启动卷:
gluster vol start <volume-name>
挂载命令:
glusterfs --process-name fuse --volfile-server=<server-ip> --volfile-id=<volume-name> /mnt/glusterfs
目前 write-behind 功能暂不支持,请在服务端关闭该特性
gluster vol set <volume-name> performance.write-behind off
如果需要使用分布式卷(Distributed Volume),请在服务端设置开启 readdir-ahead 功能。(由于 SylixOS 的 readdir 使用方式不同,此处在 Fuse 中进行了特殊处理)
配置命令
gluster vol set <volume-name> performance.readdir-ahead on
-
在连续 WRITE 操作 64K 数据时,存在卡死问题,在 AArch64 和 MIPS64 平台均能复现,暂未定位到具体原因,进行了如下调整:
- default_page_size 128K -> 32K
-
EVENT 资源泄露记录
- 目前 FUSE FORGET 流程还不完善,后续需要针对此项内容进行验证。
- md-cache 泄露数量 1:mdc_inode_prep 中创建的资源需要在 FORGET 流程中通过 mdc_inode_wipe 释放。