Skip to main content

命令参考

概览

在终端输入 juicefs 并执行,你就会看到所有可用的命令。另外,你可以在每个命令后面添加 -h/--help 标记获得该命令的详细帮助信息。

NAME:
juicefs - A POSIX file system built on Redis and object storage.

USAGE:
juicefs [global options] command [command options] [arguments...]

VERSION:
1.0.0+2022-08-01.0e7afe2d

COMMANDS:
ADMIN:
format Format a volume
config Change configuration of a volume
destroy Destroy an existing volume
gc Garbage collector of objects in data storage
fsck Check consistency of a volume
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 Show information from multiple dimensions such as the operating environment and system logs
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

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)
--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
注意

如果命令选项是布尔(boolean)类型,例如 --debug ,无需设置任何值,只要在命令中添加 --debug 即代表启用该功能,反之则代表不启用。

自动补全

注意

此特性需要使用 0.15.2 及以上版本的 JuiceFS。它基于 github.com/urfave/cli/v2 实现,更多信息请参见这里

通过加载 hack/autocomplete 目录下的对应脚本可以启用命令的自动补全,例如:

source hack/autocomplete/bash_autocomplete

请注意自动补全功能仅对当前会话有效。如果你希望对所有新会话都启用此功能,请将 source 命令添加到 .bashrc.zshrc 中:

echo "source path/to/bash_autocomplete" >> ~/.bashrc

另外,如果你是在 Linux 系统上使用 bash,也可以直接将脚本拷贝到 /etc/bash_completion.d 目录并将其重命名为 juicefs

sudo cp hack/autocomplete/bash_autocomplete /etc/bash_completion.d/juicefs
source /etc/bash_completion.d/juicefs

命令列表

juicefs format

创建文件系统,如果 META-URL 中已经存在一个文件系统,则不会再次进行格式化。如果文件系统创建后需要调整配置,请使用 juicefs config

使用

juicefs format [command options] META-URL NAME

选项

--block-size value
块大小;单位为 KiB (默认:4096)。4M 是一个较好的默认值,不少对象存储(比如 S3)都将 4M 设为内部的块大小,因此将 JuiceFS block size 设为相同大小,往往也能获得更好的性能

--capacity value
容量配额;单位为 GiB (默认:不限制)。如果启用了回收站,那么配额大小也将包含回收站文件

--inodes value
文件数配额 (默认:不限制)

--compress value
压缩算法 (lz4, zstd, none) (默认:"none"),开启压缩将不可避免地对性能产生一定影响,请权衡。

--shards value
将数据块根据名字哈希存入 N 个桶中 (默认:0),当 N 大于 0 时,bucket 需要写成 %d 的形式,例如 --bucket "juicefs-%d"

--storage value
对象存储类型 (例如 s3gcsosscos) (默认:"file",请参考文档查看所有支持的对象存储类型)

--bucket value
存储数据的桶路径 (默认:"$HOME/.juicefs/local""/var/jfs")

--access-key value
对象存储的 Access Key (也可通过环境变量 ACCESS_KEY 设置)

--secret-key value
对象存储的 Secret Key (也可通过环境变量 SECRET_KEY 设置)

--session-token value
对象存储的 session token

--encrypt-rsa-key value
RSA 私钥的路径 (PEM)

--trash-days value
文件被自动清理前在回收站内保留的天数 (默认:1)

--hash-prefix
给每个对象添加 hash 前缀 (默认:false)

--force
强制覆盖当前的格式化配置 (默认:false)

--no-update
不要修改已有的格式化配置 (默认:false)

示例

# 创建一个简单的测试卷(数据将存储在本地目录中)
$ 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 --inode 1000000 --capacity 102400

# 创建一个关闭了回收站的卷
$ juicefs format sqlite3://myjfs.db myjfs --trash-days 0

juicefs mount

挂载一个已经创建的文件系统。

你可以用任意用户执行挂载命令,不过请确保该用户对缓存目录(--cache-dir)有写权限,请阅读「缓存位置」文档了解更多信息。

使用

juicefs mount [command options] META-URL MOUNTPOINT

选项

--metrics value
监控数据导出地址 (默认:"127.0.0.1:9567")

--consul value
Consul 注册中心地址 (默认:"127.0.0.1:8500")

--no-usage-report
不发送使用量信息 (默认:false)

-d, --background
后台运行 (默认:false)

--no-syslog
禁用系统日志 (默认:false)

--log value
后台运行时日志文件的位置 (默认:$HOME/.juicefs/juicefs.log/var/log/juicefs.log)

-o value
其他 FUSE 选项,详见 FUSE 挂载选项

--attr-cache value
属性缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--entry-cache value
文件项缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--dir-entry-cache value
目录项缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--enable-xattr
启用扩展属性 (xattr) 功能 (默认:false)

--bucket value
为当前挂载点指定访问访对象存储的 endpoint

--get-timeout value
下载一个对象的超时时间;单位为秒 (默认:60)

--put-timeout value
上传一个对象的超时时间;单位为秒 (默认:60)

--io-retries value
网络异常时的重试次数 (默认:10)

--max-uploads value
上传对象的连接数 (默认:20)

--max-deletes value
删除对象的连接数 (默认:10)

--buffer-size value
读写缓存的总大小;单位为 MiB (默认:300)

--upload-limit value
上传带宽限制,单位为 Mbps (默认:0)

--download-limit value
下载带宽限制,单位为 Mbps (默认:0)

--prefetch value
并发预读 N 个块 (默认:1)

--writeback
后台异步上传对象 (默认:false)。阅读「客户端写缓存」了解更多

--cache-dir value
本地缓存目录路径;使用 :(Linux、macOS)或 ;(Windows)隔离多个路径 (默认:"$HOME/.juicefs/cache""/var/jfsCache")。阅读「缓存」了解更多

--cache-size value
缓存对象的总大小;单位为 MiB (默认:102400)。阅读「缓存」了解更多

--free-space-ratio value
最小剩余空间比例 (默认:0.1)。如果启用了「客户端写缓存」,则该参数还控制着写缓存占用空间。阅读「缓存」了解更多

--cache-partial-only
仅缓存随机小块读 (默认:false)。阅读「缓存」了解更多

--read-only
只读模式 (默认:false)

--open-cache value
打开的文件的缓存过期时间(0 代表关闭这个特性);单位为秒 (默认:0)。阅读「缓存」了解更多

--subdir value
将某个子目录挂载为根 (默认:"")

--backup-meta value
自动备份元数据到对象存储的间隔时间;单位秒 (0 表示不备份) (默认:3600)

--heartbeat value
发送心跳的间隔(单位秒),建议所有客户端使用相同的心跳值 (默认:12)

--upload-delay value
数据上传到对象存储的延迟时间,支持秒分时精度,对应格式分别为 ("s", "m", "h"),默认为 0 秒。如果在等待的时间内数据被应用删除,则无需再上传到对象存储,既提升了性能也节省了成本,如果数据只是临时落盘,之后会迅速删除,考虑用该选项进行优化。

--no-bgjob
禁用后台作业(清理、备份等)(默认:false)

示例

# 前台挂载
$ juicefs mount redis://localhost /mnt/jfs

# 使用带密码的 redis 后台挂载
$ juicefs mount redis://:mypassword@localhost /mnt/jfs -d
# 更安全的方式
$ META_PASSWORD=mypassword juicefs mount redis://localhost /mnt/jfs -d

# 将一个子目录挂载为根目录
$ juicefs mount redis://localhost /mnt/jfs --subdir /dir/in/jfs

# 启用 “writeback” 模式,这可以提高性能,但有丢失对象的风险
$ juicefs mount redis://localhost /mnt/jfs -d --writeback

# 开启只读模式
$ juicefs mount redis://localhost /mnt/jfs -d --read-only

# 关闭元数据自动备份
$ juicefs mount redis://localhost /mnt/jfs --backup-meta 0

juicefs umount

卸载一个文件文件系统。

使用

juicefs umount [command options] MOUNTPOINT

选项

-f, --force
强制卸载一个忙碌的文件系统 (默认:false)

示例

juicefs umount /mnt/jfs

juicefs gateway

启动一个 S3 兼容的网关。

使用

juicefs gateway [command options] META-URL ADDRESS

选项

--bucket value
为当前网关指定访问访对象存储的 endpoint

--get-timeout value
下载一个对象的超时时间;单位为秒 (默认:60)

--put-timeout value
上传一个对象的超时时间;单位为秒 (默认:60)

--io-retries value
网络异常时的重试次数 (默认:10)

--max-uploads value
上传对象的连接数 (默认:20)

--max-deletes value
删除对象的连接数 (默认:10)

--buffer-size value
读写缓存的总大小;单位为 MiB (默认:300)

--upload-limit value
上传带宽限制,单位为 Mbps (默认:0)

--download-limit value
下载带宽限制,单位为 Mbps (默认:0)

--prefetch value
并发预读 N 个块 (默认:1)

--writeback
后台异步上传对象 (默认:false)

--cache-dir value
本地缓存目录路径;使用 :(Linux、macOS)或 ;(Windows)隔离多个路径 (默认:"$HOME/.juicefs/cache"/var/jfsCache)。阅读「缓存」了解更多

--cache-size value
缓存对象的总大小;单位为 MiB (默认:102400)。阅读「缓存」了解更多

--free-space-ratio value
最小剩余空间比例 (默认:0.1)。阅读「缓存」了解更多

--cache-partial-only
仅缓存随机小块读 (默认:false)。阅读「缓存」了解更多

--read-only
只读模式 (默认:false)

--open-cache value
打开的文件的缓存过期时间(0 代表关闭这个特性);单位为秒 (默认:0)。阅读「缓存」了解更多

--subdir value
将某个子目录挂载为根 (默认:"")

--attr-cache value
属性缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--entry-cache value
文件项缓存过期时间;单位为秒 (默认:0)。详见「内核元数据缓存」

--dir-entry-cache value
目录项缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--access-log value
访问日志的路径

--metrics value
监控数据导出地址 (默认:"127.0.0.1:9567")

--no-usage-report
不发送使用量信息 (默认:false)

--no-banner
禁用 MinIO 的启动信息 (默认:false)

--multi-buckets
使用第一级目录作为存储桶 (默认:false)

--keep-etag
保留对象上传时的 ETag (默认:false)

--storage value
对象存储类型 (例如 s3gcsosscos) (默认:"file",请参考文档查看所有支持的对象存储类型)

--upload-delay value
数据上传到对象存储的延迟时间,支持秒分时精度,对应格式分别为 ("s", "m", "h"),默认为 0 秒

--backup-meta value
自动备份元数据到对象存储的间隔时间;单位秒 (0 表示不备份) (默认:3600)

--heartbeat value
发送心跳的间隔 (秒);建议所有客户端使用相同的心跳值 (默认:12)。

--no-bgjob
禁用后台作业(清理、备份等)(默认值:false)

--umask value 新文件和新目录的 umask 的八进制格式 (默认值:“022”)

--consul value
Consul 注册中心地址 (默认:"127.0.0.1:8500")

示例

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
juicefs gateway redis://localhost localhost:9000

JuiceFS WebDAV

启动一个 WebDAV 服务。

使用

juicefs webdav [command options] META-URL ADDRESS
  • META-URL:用于元数据存储的数据库 URL,详情查看「JuiceFS 支持的元数据引擎」。
  • ADDRESS:WebDAV 服务监听的地址与端口,例如:localhost:9007

选项

--bucket value
为当前网关指定访问访对象存储的 endpoint

--get-timeout value
下载一个对象的超时时间;单位为秒 (默认:60)

--put-timeout value
上传一个对象的超时时间;单位为秒 (默认:60)

--io-retries value
网络异常时的重试次数 (默认:10)

--max-uploads value
上传对象的连接数 (默认:20)

--max-deletes value
删除对象的连接数 (默认:10)

--buffer-size value
读写缓存的总大小;单位为 MiB (默认:300)

--upload-limit value
上传带宽限制,单位为 Mbps (默认:0)

--download-limit value
下载带宽限制,单位为 Mbps (默认:0)

--prefetch value
并发预读 N 个块 (默认:1)

--writeback
后台异步上传对象 (默认:false)。阅读「客户端写缓存」了解更多

--upload-delay
数据上传到对象存储的延迟时间,支持秒分时精度,对应格式分别为 ("s", "m", "h"),默认为 0 秒

--cache-dir value
本地缓存目录路径;使用 :(Linux、macOS)或 ;(Windows)隔离多个路径 (默认:"$HOME/.juicefs/cache"/var/jfsCache)。阅读「缓存」了解更多

--cache-size value
缓存对象的总大小;单位为 MiB (默认:102400)。阅读「缓存」了解更多

--free-space-ratio value
最小剩余空间比例 (默认:0.1)。阅读「缓存」了解更多

--cache-partial-only
仅缓存随机小块读 (默认:false)。阅读「缓存」了解更多

--read-only
只读模式 (默认:false)

--backup-meta value
在对象存储中自动备份元数据的时间间隔(0 表示禁用备份)(默认值:1h0m0s)

--no-bgjob
禁用后台作业(清理、备份等)(默认值:false)

--open-cache value
打开的文件的缓存过期时间(0 代表关闭这个特性);单位为秒 (默认:0)。阅读「缓存」了解更多

--subdir value
将某个子目录挂载为根 (默认:"")

--attr-cache value
属性缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--entry-cache value
文件项缓存过期时间;单位为秒 (默认:0)。详见「内核元数据缓存」

--dir-entry-cache value
目录项缓存过期时间;单位为秒 (默认:1)。详见「内核元数据缓存」

--cert-file
HTTPS 证书文件

--key-file
HTTPS 密钥文件

--gzip
通过 gzip 压缩提供的文件(默认值:false)

--disallowList
禁止列出目录(默认值:false)

--access-log value
访问日志的路径

--metrics value
监控数据导出地址 (默认:"127.0.0.1:9567")

--consul value
Consul 注册中心地址 (默认:"127.0.0.1:8500")

--no-usage-report
不发送使用量信息 (默认:false)

--storage value
对象存储类型 (例如 s3gcsosscos) (默认:"file",请参考文档查看所有支持的对象存储类型)

--heartbeat value
发送心跳的间隔 (秒);建议所有客户端使用相同的心跳值 (默认:12)。

示例

juicefs webdav redis://localhost localhost:9007

juicefs sync

在两个存储系统之间同步数据。

使用

juicefs sync [command options] SRC DST
  • SRC:源路径
  • DST:目标路径

源路径和目标路径的格式均为 [NAME://][ACCESS_KEY:SECRET_KEY[:TOKEN]@]BUCKET[.ENDPOINT][/PREFIX],其中:

  • NAME:JuiceFS 支持的数据存储类型(如 s3oss),请参考文档
  • ACCESS_KEYSECRET_KEY:访问数据存储所需的密钥信息,请参考文档
  • TOKEN 用来访问对象存储的 token,部分对象存储支持使用临时的 token 以获得有限时间的权限
  • BUCKET[.ENDPOINT]:数据存储服务的访问地址,不同存储类型格式可能不同,具体请参考文档
  • [/PREFIX]:可选,源路径和目标路径的前缀,可用于限定只同步某些路径中的数据。

有关 sync 子命令的详细介绍,请参考文档

选项

--start KEY, -s KEY
同步的第一个对象名

--end KEY, -e KEY
同步的最后一个对象名

--threads value, -p value
并发线程数 (默认:10)

--http-port PORT
监听的 HTTP 端口 (默认:6070)

--update, -u
当源文件更新时修改已存在的文件 (默认:false)

--force-update, -f
强制修改已存在的文件 (默认:false)

--perms
保留权限设置 (默认:false)

--dirs
同步目录 (默认:false)

--dry
不拷贝文件 (默认:false)

--delete-src, --deleteSrc
同步后删除源存储的对象 (默认:false)

--delete-dst, --deleteDst
删除目标存储下的不相关对象 (默认:false)

--exclude PATTERN
排除匹配 PATTERN 的 Key

--include PATTERN
不排除匹配 PATTERN 的 Key,需要与 --exclude 选项配合使用。

--links, -l
将符号链接复制为符号链接 (默认:false)

--limit value
限制将要处理的对象的数量 (默认:-1)

--manager value
管理者地址

--worker value
工作节点列表 (使用逗号分隔)

--bwlimit value
限制最大带宽;单位为 Mbps (0 表示不限制) (默认:0)

--no-https
不要使用 HTTPS (默认:false)

--check-all
验证源路径和目标路径中所有文件的数据完整性 (默认:false)

--check-new
验证新拷贝文件的数据完整性 (默认:false)

示例

# 从 OSS 同步到 S3
$ juicefs sync oss://mybucket.oss-cn-shanghai.aliyuncs.com s3://mybucket.s3.us-east-2.amazonaws.com

# 从 S3 同步到 JuiceFS
$ juicefs mount -d redis://localhost /mnt/jfs
$ juicefs sync s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/

# 源端: a1/b1,a2/b2,aaa/b1 目标端: empty 同步结果: aaa/b1
$ juicefs sync --exclude='a?/b*' s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/

# 源端: a1/b1,a2/b2,aaa/b1 目标端: empty 同步结果: a1/b1,aaa/b1
$ juicefs sync --include='a1/b1' --exclude='a[1-9]/b*' s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/

# 源端: a1/b1,a2/b2,aaa/b1,b1,b2 目标端: empty 同步结果: a1/b1,b2
$ juicefs sync --include='a1/b1' --exclude='a*' --include='b2' --exclude='b?' s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/

juicefs rmr

快速删除目录里的所有文件和子目录,效果等同于 rm -rf,但该命令直接操纵元数据,不经过 POSIX,所以速度更快。

如果文件系统启用了回收站功能,被删除的文件会进入回收站。详见「回收站」

使用

juicefs rmr PATH ...

示例

juicefs rmr /mnt/jfs/foo

juicefs info

显示指定路径或 inode 的内部信息。

使用

juicefs info [command options] PATH or INODE

选项

--inode, -i
使用 inode 号而不是路径 (当前目录必须在 JuiceFS 挂载点内) (默认:false)

--recursive, -r
递归获取所有子目录的概要信息(注意:当指定一个目录结构很复杂的路径时可能会耗时很长) (默认:false)

--raw
显示内部原始信息 (默认:false)

示例

# 检查路径
$ juicefs info /mnt/jfs/foo

# 检查 inode
$ cd /mnt/jfs
$ juicefs info -i 100

juicefs bench

对指定的路径做基准测试,包括对大文件和小文件的读/写/获取属性操作。

使用

juicefs bench [command options] PATH

有关 bench 子命令的详细介绍,请参考文档

选项

--block-size value
块大小;单位为 MiB (默认:1)

--big-file-size value
大文件大小;单位为 MiB (默认:1024)

--small-file-size value
小文件大小;单位为 MiB (默认:0.1)

--small-file-count value
小文件数量 (默认:100)

--threads value, -p value
并发线程数 (默认:1)

示例

# 使用4个线程运行基准测试
$ juicefs bench /mnt/jfs -p 4

# 只运行小文件的基准测试
$ juicefs bench /mnt/jfs --big-file-size 0

juicefs objbench

测试对象存储接口的正确性与基本性能

使用

juicefs objbench [command options] BUCKET

有关 objbench 子命令的详细介绍,请参考文档

选项

--storage value
对象存储类型 (例如 s3gcsosscos) (默认:"file",请参考文档查看所有支持的对象存储类型)

--access-key value
对象存储的 Access Key (也可通过环境变量 ACCESS_KEY 设置)

--secret-key value
对象存储的 Secret Key (也可通过环境变量 SECRET_KEY 设置)

--block-size value
每个 IO 块的大小(以 KiB 为单位)(默认值:4096)

--big-object-size value
大文件的大小(以 MiB 为单位)(默认值:1024)

--small-object-size value
每个小文件的大小(以 KiB 为单位)(默认值:128)

--small-objects value
小文件的数量(默认值:100)

--skip-functional-tests
跳过功能测试(默认值:false)

--threads value, -p value
上传下载等操作的并发数(默认值:4)

示例

# 测试 S3 对象存储的基准性能
$ ACCESS_KEY=myAccessKey SECRET_KEY=mySecretKey juicefs objbench --storage s3 https://mybucket.s3.us-east-2.amazonaws.com -p 6

juicefs gc

用来处理「对象泄漏」,以及因为覆盖写而产生的碎片数据的命令。详见「状态检查 & 维护」

使用

juicefs gc [command options] META-URL

选项

--delete
删除泄漏的对象 (默认:false)

--compact
整理所有文件的碎片 (默认:false).

--threads value
用于删除泄漏对象的线程数 (默认:10)

示例

# 只检查,没有更改的能力
$ juicefs gc redis://localhost

# 触发所有 slices 的压缩
$ juicefs gc redis://localhost --compact

# 删除泄露的对象
$ juicefs gc redis://localhost --delete

juicefs fsck

检查文件系统一致性。

使用

juicefs fsck [command options] META-URL

示例

juicefs fsck redis://localhost

juicefs profile

分析访问日志

使用

juicefs profile [command options] MOUNTPOINT/LOGFILE

选项

--uid value, -u value
仅跟踪指定 UIDs (用逗号分隔)

--gid value, -g value
仅跟踪指定 GIDs (用逗号分隔)

--pid value, -p value
仅跟踪指定 PIDs (用逗号分隔)

--interval value
显示间隔;在回放模式中将其设置为 0 可以立即得到整体的统计结果;单位为秒 (默认:2)

示例

# 监控实时操作
$ juicefs profile /mnt/jfs

# 重放访问日志
$ cat /mnt/jfs/.accesslog > /tmp/jfs.alog
# 一段时间后按 Ctrl-C 停止 “cat” 命令
$ juicefs profile /tmp/jfs.alog

# 分析访问日志并立即打印总统计数据
$ juicefs profile /tmp/jfs.alog --interval 0

juicefs stats

展示实时的性能统计信息。

使用

juicefs stats [command options] MOUNTPOINT

选项

--schema value
控制输出内容的标题字符串 (u: usage, f: fuse, m: meta, c: blockcache, o: object, g: go) (默认:"ufmco")

--interval value
更新间隔;单位为秒 (默认:1)

--verbosity value
详细级别;通常 0 或 1 已足够 (默认:0)

示例

$ juicefs stats /mnt/jfs

# 更多的指标
$ juicefs stats /mnt/jfs -l 1

juicefs status

显示 JuiceFS 的状态。

使用

juicefs status [command options] META-URL

选项

--session value, -s value
展示指定会话 (SID) 的具体信息 (默认:0)

示例

juicefs status redis://localhost

juicefs warmup

将文件提前下载到缓存,提升后续本地访问的速度。可以指定某个挂载点路径,递归对这个路径下的所有文件进行缓存预热;也可以通过 --file 选项指定文本文件,在文本文件中指定需要预热的文件名。

如果需要预热的文件分布在许多不同的目录,推荐将这些文件名保存到文本文件中并用 --file 参数传给预热命令,这样做能利用 warmup 的并发功能,速度会显著优于多次调用 juicefs warmup,在每次调用里传入单个文件。

使用

juicefs warmup [command options] [PATH ...]

选项

--file value, -f value
指定一个包含一组路径的文件(每一行为一个文件路径)

--threads value, -p value
并发的工作线程数,默认 50。如果带宽不足导致下载失败,需要减少并发度,控制下载速度

--background, -b
后台运行(默认:false)

示例

# 预热目录中的所有文件
$ juicefs warmup /mnt/jfs/datadir

# 只预热目录中 3 个文件
$ cat /tmp/filelist
/mnt/jfs/datadir/f1
/mnt/jfs/datadir/f2
/mnt/jfs/datadir/f3
$ juicefs warmup -f /tmp/filelist

juicefs dump

将元数据导出到一个 JSON 文件中。

使用

juicefs dump [command options] META-URL [FILE]

如果没有指定导出文件路径,会导出到标准输出。

选项

--subdir value
只导出一个子目录。

示例

$ juicefs dump redis://localhost meta-dump

# 只导出卷的一个子树
$ juicefs dump redis://localhost sub-meta-dump --subdir /dir/in/jfs

juicefs load

从之前导出的 JSON 文件中加载元数据。

使用

juicefs load [command options] META-URL [FILE]

如果没有指定导入文件路径,会从标准输入导入。

示例

juicefs load redis://localhost/1 meta-dump

juicefs config

修改指定文件系统的配置项。注意更新某些设置以后,客户端未必能立刻生效,需要等待一定时间,具体的等待时间可以通过 --heartbeat 选项控制。

使用

juicefs config [command options] META-URL

选项

--capacity value
容量配额,单位为 GiB

--inodes value
文件数配额

--bucket value
存储数据的桶路径

--access-key value
对象存储的 Access key

--secret-key value
对象存储的 Secret key

--session-token value
对象存储的 session token

--trash-days value
文件被自动清理前在回收站内保留的天数

--force
跳过合理性检查并强制更新指定配置项 (默认:false)

--encrypt-secret
如果密钥之前以原格式存储,则加密密钥 (默认值:false)

--min-client-version value
允许连接的最小客户端版本

--max-client-version value
允许连接的最大客户端版本

示例

# 显示当前配置
$ juicefs config redis://localhost

# 改变目录的配额
$ juicefs config redis://localhost --inode 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

juicefs destroy

销毁一个已经存在的文件系统,将会清空元数据引擎与对象存储中的相关数据。详见「如何销毁文件系统」

使用

juicefs destroy [command options] META-URL UUID

选项

--force
跳过合理性检查并强制销毁文件系统 (默认:false)

示例

juicefs destroy redis://localhost e94d66a8-2339-4abd-b8d8-6812df737892

juicefs debug

从运行环境、系统日志等多个维度收集和展示信息,帮助更好地定位错误

使用

juicefs debug [command options] MOUNTPOINT

选项

--out-dir value
结果输出目录,若目录不存在则自动创建 (默认:./debug/)

--stats-sec value
.stats 文件采样秒数 (默认:5)

--limit value
收集的日志条目数,从新到旧,若不指定则收集全部条目

--trace-sec value
trace 指标采样秒数 (默认:5)

--profile-sec value
profile 指标采样秒数 (默认:30)

示例

# 收集并展示挂载点 /mnt/jfs 的各类信息
$ juicefs debug /mnt/jfs

# 指定输出目录为 /var/log
$ juicefs debug --out-dir=/var/log /mnt/jfs

# 收集最后 1000 条日志条目
$ juicefs debug --out-dir=/var/log --limit=1000 /mnt/jfs