04 JuiceFS实战
step1: 客户端安装
去Github下载最新的客户端:https://github.com/juicedata/juicefs/releases
注意版本与操作系统的对应关系如下:
版本 | 系统 |
juicefs-x.x.x-darwin-amd64.tar.gz | 面向 Intel 芯片的 macOS 系统 |
juicefs-x.x.x-darwin-arm64.tar.gz | 面向 M1 系列芯片的 macOS 系统 |
juicefs-x.x.x-linux-amd64.tar.gz | 面向 x86 架构 Linux 发行版 |
juicefs-x.x.x-linux-arm64.tar.gz | 面向 ARM 架构的 Linux 发行版 |
juicefs-x.x.x-windows-amd64.tar.gz | 面向 x86 架构的 Windows 系统 |
juicefs-hadoop-x.x.x-amd64.jar | 面向 x86 架构的 Hadoop Java SDK(同时支持 Linux、macOS 及 Windows 系统) |
如果assets资源文件里面没有内容,加载不出来,可以通过来查询下载资源的地址:https://api.github.com/repos/juicedata/juicefs/releases/latest
当然也可以使用命令安装,会根据硬件架构自动下载安装最新版 JuiceFS
客户端:
curl -sSL https://d.juicefs.com/install | sh -
下载完成后,解压,使用命令:
juicefs version
可以看到已经安装好了。
step2: 创建文件系统
创建名为 miniofs
的文件系统,使用 Redis
的 1
号数据库存储元数据:
juicefs format \ --storage minio \ --bucket http://endpoint地址:端口/rtc \ --access-key minio的access-key \ --secret-key minio的secret-key \ "redis://:redis密码@redis地址:redis端口/数据库编号" \ miniofs
在Redis数据库,可以看到key为settings的内容如下:
同时登录MinIO
,在buck1
桶下,可以看到创建了一些目录:
step3: 挂载文件系统
我们可以挂载文件目录到本地的桌面的data目录(如果提示没有权限,建议命令前加上sudo
):
juicefs mount "redis://:redis密码@redis地址:redis端口/数据库编号" /桌面地址/data
可以看到报错了,提示:
juicefs[89168] : fuse: fuse: no FUSE mount utility found [mount_unix.go:184]
这是由于系统没有安装FUSE 模块模块,所以需要下载安装,macOS系统下载地址:https://osxfuse.github.io/
安装好后,继续执行命令,也报错了,提示:
juicefs[92350] : The mount point is not ready in 10 seconds, exit it [mount_unix.go:56]
解决方式,打开安全性与隐私,解锁后,点击下图红框的运行。
继续执行命令,可以看到挂载成功了:
step4: 开始使用
详细使用参考:https://www.juicefs.com/docs/zh/community/guide/sync/
当JuiceFS挂载好之后,我们可以正式的使用JuiceFS了,下面举个例子,使用同步命令,把MinIO
里面的内容同步到本地的桌面的data
目录,命令如下:
juicefs sync [command options] 源端地址 目的端地址 • 1
MinIO的地址格式为: minio://[ACCESS_KEY:SECRET_KEY[:TOKEN]@]ENDPOINT/BUCKET[/PREFIX]
示例如下:
我们打开指定的同步目录的上一级,可以看到产生了两个文件:
进去datauser看(其中user是桶下面的根目录名称),可以看到数据下载下来了。
进入dataminiofs看看,可以看到元数据也同步下来了:
对应MinIO桶的根目录下也有两个文件夹:
05 总结
5.1 命令总结
详情参考:https://www.juicefs.com/docs/zh/community/command_reference
上面举例的是只使用了JuiceFS的同步(sync
)命令,如果想要知道更多的JuiceFS相关的命令,可以使用--help
来搜索,整理如下:
用法:juicefs [全局可选参数] command [命令选项] [命令参数...]
分类 | 命令 | 描述 |
全局可选参数 | –verbose, --debug, -v | 允许 debug 日志 (默认: false) |
–quiet, -q | 仅展示告警和错误 (默认: false) | |
–trace | 允许 trace 日志 (默认: false) | |
–no-agent | 禁止 pprof (:6060) 和 gops (:6070)代理 (默认: false) | |
–pyroscope value | pyroscope地址 | |
–no-color | 禁止打印有颜色 (默认: false) | |
–help, -h | 显示帮助 (默认: false) | |
–version, -V | 打印版本 (默认: false) | |
命令选项 | format | 格式化目录卷 |
config | 修改目录卷配置 | |
destroy | 销毁已存在的目录卷 | |
gc | 数据存储中对象的垃圾收集器 | |
fsck | 检查卷的一致性 | |
dump | 将元数据转储到JSON文件中 | |
load | 从以前转储的JSON文件加载元数据 | |
version | 展示版本 | |
status | 显示卷状态 | |
stats | 显示juicefs的实时性能统计信息 | |
profile | 显示在JuiceFS中完成的操作分析 | |
info | 显示路径或索引节点的内部信息 | |
mount | 挂载卷 | |
umount | 卸载卷 | |
gateway | 启动一个兼容s3的网关 | |
webdav | 启动WebDAV服务器 | |
bench | 在路径上运行基准测试 | |
objbench | 在对象存储上运行基准测试 | |
warmup | 为目标目录/文件构建缓存 | |
rmr | 递归删除目录 | |
sync | 两个对象存储之间的同步 |
5.2 常见错误总结
常见的错误,官网已经记录下来了,可以参考:https://www.juicefs.com/docs/zh/community/faq/
5.3 更多的使用案例
可以参考:
06 文末
本文主要讲解了JuiceFS
的一些概念、架构以及实操的案例,希望能帮助到大家,谢谢大家的阅读,本文完!