JuiceFS format


有许多命令可帮助您管理文件系统,该页面提供了有关这些命令的详细参考。

在终端输入 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) and gops (:6070) 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 目录下的对应脚本可以启用命令的自动补全,例如:

source hack/autocomplete/bash_autocomplete
source hack/autocomplete/zsh_autocomplete

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

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

另外,如果你是在 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

格式化文件系统;这是使用新文件系统的第一步。

juicefs format [command options] META-URL NAME

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

--capacity value
容量配额;单位为 GiB (默认:不限制)

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

--compress value
压缩算法 (lz4, zstd, none) (默认:"none")

--shards value
将数据块根据名字哈希存入 N 个桶中 (默认:0)

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

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

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


$ juicefs format sqlite3://myjfs.db myjfs


$ juicefs format redis://localhost myjfs --storage s3 --bucket https://mybucket.s3.us-east-2.amazonaws.com


$ 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 [command options] META-URL MOUNTPOINT
  • META-URL:用于元数据存储的数据库 URL,详情查看「JuiceFS 支持的元数据引擎」。
  • MOUNTPOINT:文件系统挂载点,例如:/mnt/jfsZ:

--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 选项 (参见此文档来了解更多信息)

--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
删除对象的连接数 (默认:2)

--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


$ 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


$ 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 [command options] MOUNTPOINT

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

$ juicefs umount /mnt/jfs

启动一个 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
删除对象的连接数 (默认:2)

--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

启动一个 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
删除对象的连接数 (默认:2)

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

--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 [command options] SRC DST

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

  • NAME:JuiceFS 支持的数据存储类型(如 s3oss),请参考文档
  • ACCESS_KEYSECRET_KEY:访问数据存储所需的密钥信息,请参考文档
  • 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)


$ juicefs sync oss://mybucket.oss-cn-shanghai.aliyuncs.com s3://mybucket.s3.us-east-2.amazonaws.com


$ juicefs mount -d redis://localhost /mnt/jfs
$ juicefs sync s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/


$ juicefs sync --exclude='a?/b*' s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/


$ juicefs sync --include='a1/b1' --exclude='a[1-9]/b*' s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/


$ juicefs sync --include='a1/b1' --exclude='a*' --include='b2' --exclude='b?' s3://mybucket.s3.us-east-2.amazonaws.com/ /mnt/jfs/

递归删除指定目录下的所有文件。

$ juicefs rmr /mnt/jfs/foo

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

juicefs info [command options] PATH or INODE

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

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

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

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


$ cd /mnt/jfs
$ juicefs info -i 100

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

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)


$ juicefs bench /mnt/jfs -p 4


$ juicefs bench /mnt/jfs --big-file-size 0

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

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
小文件的数量(以 KiB 为单位)(默认值:100)

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

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


$ ACCESS_KEY=myAccessKey SECRET_KEY=mySecretKey juicefs objbench --storage s3 https://mybucket.s3.us-east-2.amazonaws.com -p 6

收集泄漏的对象。

juicefs gc [command options] META-URL

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

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

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


$ juicefs gc redis://localhost


$ juicefs gc redis://localhost --compact


$ juicefs gc redis://localhost --delete

检查文件系统一致性。

juicefs fsck [command options] META-URL
$ juicefs fsck redis://localhost

分析访问日志

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

$ juicefs profile /tmp/jfs.alog


$ juicefs profile /tmp/jfs.alog --interval 0

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

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 的状态。

juicefs status [command options] META-URL

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

$ juicefs status redis://localhost

主动为指定目录/文件建立缓存。

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

--file value, -f value
指定一个包含一组路径的文件

--threads value, -p value
并发的工作线程数 (默认:50)

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


$ juicefs warmup /mnt/jfs/datadir


$ cat /tmp/filelist
/mnt/jfs/datadir/f1
/mnt/jfs/datadir/f2
/mnt/jfs/datadir/f3
$ juicefs warmup -f /tmp/filelist

将元数据导出到一个 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

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

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

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

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

修改指定文件系统的配置项。

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 [command options] META-URL UUID

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

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

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

juicefs debug [command options] MOUNTPOINT

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

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

--collect-log
启用日志收集 (默认:false)

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

--collect-pprof
启用pprof指标收集 (默认:false)

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

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


$ juicefs debug /mnt/jfs


$ juicefs debug --out-dir=/var/log /mnt/jfs


$ juicefs debug --out-dir=/var/log --collect-log --limit=1000 /mnt/jfs


$ juicefs debug --out-dir=/var/log --collect-log --limit=1000 --collect-pprof /mnt/jfs

yg9538 Oct. 6, 2022, 9:17 p.m. 516 收藏文档