跳到主要内容

FUSE 模式访问

除 SDK、S3 网关和 CLI 外,Curvine 提供 FUSE(用户态文件系统),使应用无需修改代码即可将 Curvine 文件系统当作本地目录访问。挂载点下的操作会转换为 Curvine RPC 与数据访问。

在云原生场景下,可通过卷挂载使用 FUSE;Curvine 还提供 CSI 驱动 用于 Kubernetes。

信息

FUSE 是可选接入方式。 须先启动 Curvine 集群(Master + Worker),FUSE 仅在应用需要 POSIX 挂载点时使用。各组件角色见 部署架构

架构示意

前置条件

  • Curvine 集群已启动(已启动 Master 与 Worker)。参见 裸机部署快速开始
  • 配置:运行 FUSE 的节点需能访问集群配置文件(如 conf/curvine-cluster.toml),且 Master 地址正确。
  • 系统支持:支持 FUSE2 与 FUSE3,不同发行版行为可能略有差异。详见 支持的 Linux 发行版

使用方法

启动 FUSE

在安装目录下执行(如 build/dist 或解压后的发布包):

# 默认:挂载到 /curvine-fuse,使用 conf/curvine-cluster.toml
bin/curvine-fuse.sh start

# 指定挂载路径
bin/curvine-fuse.sh start --mnt-path /mnt/curvine

# 指定配置文件
bin/curvine-fuse.sh start -c /path/to/curvine-cluster.toml
  • 默认挂载路径/curvine-fuse
  • 默认配置conf/curvine-cluster.toml(相对于启动进程时的当前工作目录)
  • 使用 bin/curvine-fuse.sh stop 停止,bin/curvine-fuse.sh restart 重启。

使用挂载点

在 FUSE 挂载路径下可使用常规 Linux 文件命令:lscatrmmvmkdirducp 等。

示例:

# 假设默认挂载点为 /curvine-fuse
cd /curvine-fuse

echo "hello curvine" > a.txt
cat a.txt
du -h a.txt

mkdir -p b/c
ls -l
tree
# .
# ├── a.txt
# └── b
# └── c

此处写入的数据会落在 Curvine 集群中;也可访问对应 已挂载 UFS 的路径(统一文件系统视图)。

可选参数

启动 FUSE 时可传入底层 curvine-fuse 的选项,例如:

选项说明默认值
--mnt-path挂载点路径/curvine-fuse
-c / --conf集群配置文件路径conf/curvine-cluster.toml
--fs-path挂载点对应的 Curvine 根路径/
--io-threadsI/O 线程数配置文件中的值
--worker-threadsWorker 线程数配置文件中的值

完整选项可执行 bin/curvine-fuse.sh --help(或在安装目录下 lib/curvine-fuse --help)查看。

FUSE 支持程度

Curvine FUSE 支持:

  • 常规文件读写与目录操作
  • 用户/组与权限语义
  • 扩展属性(xattr)、符号链接(symlink)、硬链接(link)
提示

不同发行版与 FUSE 版本(FUSE2 / FUSE3)下行为可能略有差异。已测试版本与依赖见 支持的 Linux 发行版

ltp-full-20210524 测试集上,大部分用例通过;当前未通过项主要集中在随机写、文件锁等能力,相关能力在持续迭代中。

测试集总数跳过(SKIP)失败(FAIL)通过(PASS)
fs_perms_simple180018
fsx1001
fs_bind1001
smoketest130112
io2011
fs2901316
syscall120632300874
合计127032315923

欢迎参与改进 FUSE 兼容性与测试覆盖。