命令参考
在终端输入 juicefs 并执行,就能看到所有可用的命令。在每个子命令后面添加 -h/--help 并运行,就能获得该命令的详细帮助信息,例如 juicefs format -h。
NAME:
juicefs - A POSIX file system built on Redis and object storage.
USAGE:
juicefs [global options] command [command options] [arguments...]
VERSION:
1.2.0
COMMANDS:
ADMIN:
format Format a volume
config Change configuration of a volume
quota Manage directory quotas
destroy Destroy an existing volume
gc Garbage collector of objects in data storage
fsck Check consistency of a volume
restore restore files from trash
dump Dump metadata into a JSON file
load Load metadata from a previously dumped JSON file
version Show version
INSPECTOR:
status Show status of a volume
stats Show real time performance statistics of JuiceFS
profile Show profiling of operations completed in JuiceFS
info Show internal information of a path or inode
debug Collect and display system static and runtime information
summary Show tree summary of a directory
SERVICE:
mount Mount a volume
umount Unmount a volume
gateway Start an S3-compatible gateway
webdav Start a WebDAV server
TOOL:
bench Run benchmarks on a path
objbench Run benchmarks on an object storage
warmup Build cache for target directories/files
rmr Remove directories recursively
sync Sync between two storages
clone clone a file or directory without copying the underlying data
compact Trigger compaction of chunks
GLOBAL OPTIONS:
--verbose, --debug, -v enable debug log (default: false)
--quiet, -q show warning and errors only (default: false)
--trace enable trace log (default: false)
--log-id value append the given log id in log, use "random" to use random uuid
--no-agent disable pprof (:6060) agent (default: false)
--pyroscope value pyroscope address
--no-color disable colors (default: false)
--help, -h show help (default: false)
--version, -V print version only (default: false)
COPYRIGHT:
Apache License 2.0
自动补全
通过加载 hack/autocomplete 目录下的对应脚本可以启用命令的自动补全,例如:
- Bash
- Zsh
source hack/autocomplete/bash_autocomplete
source hack/autocomplete/zsh_autocomplete
请注意自动补全功能仅对当前会话有效。如果你希望对所有新会话都启用此功能,请将 source 命令添加到 .bashrc 或 .zshrc 中:
- Bash
- Zsh
echo "source path/to/bash_autocomplete" >> ~/.bashrc
echo "source path/to/zsh_autocomplete" >> ~/.zshrc
另外,如果你是在 Linux 系统上使用 bash,也可以直接将脚本拷贝到 /etc/bash_completion.d 目录并将其重命名为 juicefs:
cp hack/autocomplete/bash_autocomplete /etc/bash_completion.d/juicefs
source /etc/bash_completion.d/juicefs
全局选项
| 项 | 说明 |
|---|---|
-q --quiet | 仅显示警告及错误日志。 |
-v --verbose --debug | 开启调试日志。 |
--trace | 开启比 --debug 选项更详细的调试日志。 |
--no-agent | 关闭 pprof 代理。 |
--pyroscope | 配置 Pyroscope 地址,如 http://localhost:4040。 |
--no-color | 关闭日志的颜色。 |
管理
juicefs format
创建并格式化文件系统,如果 META-URL 中已经存在一个文件系统,不会再次进行格式化。如果文件系统创建后需要调整配置,请使用 juicefs config。
概览
juicefs format [command options] META-URL NAME
# 创建一个简单的测试卷(数据将存储在本地目录中)
juicefs format sqlite3://myjfs.db myjfs
# 使用 Redis 和 S3 创建卷
juicefs format redis://localhost myjfs --storage=s3 --bucket=https://mybucket.s3.us-east-2.amazonaws.com
# 使用带有密码的 MySQL 创建卷
juicefs format mysql://jfs:mypassword@(127.0.0.1:3306)/juicefs myjfs
# 更安全的方法
META_PASSWORD=mypassword juicefs format mysql://jfs:@(127.0.0.1:3306)/juicefs myjfs
# 创建一个开启配额设置的卷
juicefs format sqlite3://myjfs.db myjfs --inodes=1000000 --capacity=102400
# 创建一个关闭了回收站的卷
juicefs format sqlite3://myjfs.db myjfs --trash-days=0
参数
| 项 | 说明 |
|---|---|
META-URL | 用于元数据存储的数据库 URL,详情查看「JuiceFS 支持的元数据引擎」。 |
NAME | 文件系统名称。 |
--force | 强制覆盖当前的格式化配置,默认为 false。 |
--no-update | 不要修改已有的格式化配置,默认为 false。 |
数据存储参数
| 项 | 说明 |
|---|---|
--storage=file | 对象存储类型,例如 s3、gs、oss、cos。默认为 file,参考文档查看所有支持的对象存储类型。 |
--bucket=path | 存储数据的桶路径(默认:$HOME/.juicefs/local 或 /var/jfs)。 |
--access-key=value | 对象存储的 Access Key,也可通过环境变量 ACCESS_KEY 设置。查看如何设置对象存储以了解更多。 |
--secret-key=value | 对象存储的 Secret Key,也可通过环境变量 SECRET_KEY 设置。查看如何设置对象存储以了解更多。 |
--session-token=value | 对象存储的临时访问凭证(Session Token),查看如何设置对象存储以了解更多。 |
--storage-class=value 新增自 v1.1 | 默认存储类型。 |
数据格式参数
| 项 | 说明 |
|---|---|
--block-size=4M | 块大小 ,单位为 KiB,默认 4M。4M 是一个较好的默认值,不少对象存储(比如 S3)都将 4M 设为内部的块大小,因此将 JuiceFS block size 设为相同大小,往往也能获得更好的性能。 |
--compress=none | 压缩算法,支持 lz4、zstd、none(默认),启用压缩将不可避免地对性能产生一定影响。这两种压缩算法中,lz4 提供更好的性能,但压缩比要逊于 zstd,他们的具体性能差别具体需要读者自行搜索了解。 |
--encrypt-rsa-key=value | RSA 私钥的路径,查看数据加密以了解更多。 |
--encrypt-algo=aes256gcm-rsa | 加密算法 (aes256gcm-rsa, chacha20-rsa) (默认:"aes256gcm-rsa") |
--hash-prefix | 对于部分对象存储服务,如果对象存储命名路径的键值(key)是连续的,那么坐落在对象存储上的物理数据也将是连续的。在大规模顺序读场景下,这样会带来数据访问热点,让对象存储服务的部分区域访问压力过大。 启用 --hash-prefix 将会给每个对象路径命名添加 hash 前缀(用 slice ID 对 256 取模,详见内部实现),相当于“打散”对象存储键值,避免在对象存储服务层面创造请求热点。显而易见,由于影响着对象存储块的命名规则,该选项必须在创建文件系统之初就指定好、不能动态修改。目前而言,AWS S3 已经做了优化,不再需要应用侧的随机对象前缀。而对于其他对象对象存储服务( 比如 COS 就在文档里推荐随机化前缀),因此,对于这些对象存储,如果文件系统规模庞大,建议启用该选项以提升性能。 |
--shards=0 | 如果对象存储服务在桶级别设置了限速(或者你使用自建的对象存储服务,单个桶的性能有限),可以将数据块根据名字哈希分散存入 N 个桶中。该值默认为 0,也就是所有数据存入单个桶。当 N 大于 0 时,bucket 需要包含 %d 占位符,例如 --bucket=juicefs-%d。--shards 设置无法动态修改,需要提前规划好用量。 |
管理参数
| 项 | 说明 |
|---|---|
--capacity=0 | 容量配额,单位为 GiB,默认为 0 代表不限制。如果启用了回收站,那么配额大小也将包含回收站文件。 |
--inodes=0 | 文件数配额,默认为 0 代表不限制。 |
--trash-days=1 | 文件被删除后,默认会进入回收站,该选项控制已删除文件在回收站内保留的天数,默认为 1,设为 0 以禁用回收站。 |
--enable-acl=true 新增自 v1.2 | 启用POSIX ACL,该选项启用后暂不支持关闭。 |
juicefs config
修改指定文件系统的配置项。注意更新某些设置以后,客户端未必能立刻生效,需要等待一定时间,具体的等待时间可以通过 --heartbeat 选项控制。
概览
juicefs config [command options] META-URL
# 显示当前配置
juicefs config redis://localhost
# 改变目录的配额
juicefs config redis://localhost --inodes 10000000 --capacity 1048576
# 更改回收站中文件可被保留的最长天数
juicefs config redis://localhost --trash-days 7
# 限制允许连接的客户端版本
juicefs config redis://localhost --min-client-version 1.0.0 --max-client-version 1.1.0
参数
| 项 | 说明 |
|---|---|
--yes, -y | 对所有提示自动回答 "yes" 并以非交互方式运行 (默认值:false) |
--force | 跳过合理性检查并强制更新指定配置项 (默认:false) |
数据存储参数
| 项 | 说明 |
|---|---|
--storage=file 新增自 v1.1 | 对象存储类型,例如 s3、gs、oss、cos。默认为 file,参考文档查看所有支持的对象存储类型。 |
--bucket=path | 存储数据的桶路径(默认:$HOME/.juicefs/local 或 /var/jfs)。 |
--access-key=value | 对象存储的 Access Key,也可通过 环境变量 ACCESS_KEY 设置。查看如何设置对象存储以了解更多。 |
--secret-key=value | 对象存储的 Secret Key,也可通过环境变量 SECRET_KEY 设置。查看如何设置对象存储以了解更多。 |
--session-token=value | 对象存储的临时访问凭证(Session Token),查看如何设置对象存储以了解更多。 |
--storage-class=value 新增自 v1.1 | 默认存储类型。 |
--upload-limit=0 | 上传带宽限制,单位为 Mbps (默认:0) |
--download-limit=0 | 下载带宽限制,单位为 Mbps (默认:0) |
管理参数
| 项 | 说明 |
|---|---|
--capacity value | 容量配额,单位为 GiB |
--inodes value | 文件数配额 |
--trash-days value | 文件被自动清理前在回收站内保留的天数 |
--enable-acl 新增自 v1.2 | 开启 POSIX ACL(不支持关闭),同时允许连接的最小客户端版本会提升到 v1.2 |
--encrypt-secret | 如果密钥之前以原格式 存储,则加密密钥 (默认值:false) |
--min-client-version value 新增自 v1.1 | 允许连接的最小客户端版本 |
--max-client-version value 新增自 v1.1 | 允许连接的最大客户端版本 |
--dir-stats 新增自 v1.1 | 开启目录统计,这是快速汇总和目录配额所必需的 (默认值:false) |
juicefs quota 新增自 v1.1
管理目录配额
概览
juicefs quota command [command options] META-URL
# 为目录设置配额
juicefs quota set redis://localhost --path /dir1 --capacity 1 --inodes 100
# 获取目录配额信息
juicefs quota get redis://localhost --path /dir1
# 列出所有目录配额
juicefs quota list redis://localhost
# 删除目录配额
juicefs quota delete redis://localhost --path /dir1
# 检查目录配额的一致性
juicefs quota check redis://localhost
参数
| 项 | 说明 |
|---|---|
META-URL | 用于元数据存储的数据库 URL,详情查看「JuiceFS 支持的元数据引擎」。 |
--path value | 卷中目录的全路径 |
--capacity value | 目录空间硬限制,单位 GiB (默认:0) |
--inodes value | 用于硬限制目录 inode 数 (默认:0) |
--repair | 修复不一致配额 (默认:false) |
--strict | 在严格模式下计算目录的总使用量 (注意:对于大目录可能很慢) (默认:false) |
juicefs destroy
销毁一个已经存在的文件系统,将会清空元数据引擎与对象存储中的相关数据。详见「如何销毁文件系统」。
概览
juicefs destroy [command options] META-URL UUID
juicefs destroy redis://localhost e94d66a8-2339-4abd-b8d8-6812df737892
参数
| 项 | 说明 |
|---|---|
--yes, -y 新增自 v1.1 | 对所有提示自动回答 "yes" 并以非交互方式运行 (默认值:false) |
--force | 跳过合理性检查并强制销毁文件系统 (默认:false) |
juicefs gc
如果对象存储块因为某种原因,完全脱离了 JuiceFS 的管理,也就是对象存储上依然还存在,但在 JuiceFS 元数据已经不复存在,无法被回收释放,这种现象称作「对象泄漏」。如果你并没有进行任何特殊操作,那么对象泄露通常昭示着 bug,建议提交 GitHub Issue。
与此同时,你可以用该命令清理泄漏对象。顺带一提,该命令还能够清理失效的文件碎片。详见「状态检查 & 维护」。
概览
juicefs gc [command options] META-URL
# 只检查,没有更改的能力
juicefs gc redis://localhost
# 触发所有 slices 的压缩
juicefs gc redis://localhost --compact
# 删除泄露的对象
juicefs gc redis://localhost --delete
参数
| 项 | 说明 |
|---|---|
--compact | 对所有文件执行碎片合并。 |
--delete | 删除泄漏的对象,以及因不完整的 clone 命令而产生泄漏的元数据。 |
--threads=10 | 并发线程数,默认为 10。 |
juicefs fsck
检查文件系统一致性。
概览
juicefs fsck [command options] META-URL
juicefs fsck redis://localhost
参数
| 项 | 说明 |
|---|---|
--path value 新增自 v1.1 | 待检查的 JuiceFS 中的绝对路径 |
--repair 新增自 v1.1 | 发现损坏后尽可能修复 (默认:false) |
--recursive, -r 新增自 v1.1 | 递归检查或修复 (默认值:false) |
--sync-dir-stat 新增自 v1.1 | 同步所有目录的状态,即使他们没有损坏 (注意:巨大的文件树可能会花费很长时间) (默认:false) |
juicefs restore 新增自 v1.1
重新构建回收站文件的树结构,并将它们放回原始目录。如果需要恢复文件存在命名冲突,程序会直接跳过,不会覆盖新创建的文件(注意日志中会有提示)。
概览
juicefs restore [command options] META HOUR ...
juicefs restore redis://localhost/1 2023-05-10-01