命令参考
这篇文档会详细的介绍 juicefs
客户端所有的命令与参数。
概况
没有任何参数执行 juicefs
时会列出所有命令和功能描述。
juicefs COMMAND [options]
COMMAND could be:
auth authorize a filesystem
mount mount a filesystem
umount umount a filesystem
info show information of file or directory
lsof list recently (within 10 minutes) opened files
import import files from existing object storage
rmr remove all files/directories recursively
snapshot create or remove snapshots
grep parallelized file pattern searcher
version show the version
使用方式:juicefs [COMMAND] [options]
所有命令后面加 -h
或者 --help
都可以查看参数列表和帮助信息。
注:如果没有把 juicefs
放入到 PATH 环境变量中的某个目录,则需要使用完整路径来运行 juicefs
. 如果 juicefs
是在当前目录下,则用 ./juicefs
。以下文档假定 juicefs 在 PATH 环境变量中的某个目录(比如 /usr/local/bin
), 可以直接用 juicefs
运行。
下面详细说明所有命令的用法。
juicefs auth
功能
文件系统的认证授权。
语法
juicefs auth <name> --token=<token> [--accesskey=<access_key>] [--secretkey=<secret_key>]
[--accesskey2=<access_key_2>] [--secretkey2=<secret_key_2>]
参数
挂载文件系统时需要两个密钥信息,一个是文件系统的 Token(在网站控制台的 文件系统设置 中查看),另一个是云提供商对象存储的密钥对(获取方式可以参考文档 如何获取对象存储的 API 密钥)。
你可以在挂载时以命令行交互方式或者参数方式输入认证信息,也可以用 auth
命令将认证信息保存在本地(位置是 $HOME/.juicefs/[NAME].conf
),以后挂载时无需再次输入,这样更方便做自动化的运维配置。
<name>
文件系统的名字。
--token=<token>
文件系统的 Token,在网站控制台的 文件系统设置 中查看。
--accesskey=<access_key>
你使用的对象存储的密钥,获取方式参见 文档。
--secretkey=<secret_key>
你使用的对象存储的密钥,获取方式参见 文档。
--accesskey2=<access_key_2>
用于复制的对象存储密钥(可选)。
--secretkey2=<secret_key_2>
用于复制的对象存储密钥(可选)。
备注
如果以
sudo
方式运行./juicefs
,认证信息保存在/root/.juicefs/[NAME].conf
中。当
--accesskey
和--secretkey
没有以参数方式指定时,会以交互方式输入。如果你的云提供商支持 IAM,accesskey 为空字符串即可。可以是
--accesskey ""
, 或者交互输入时直接按回车键。JuiceFS 的复制功能在网站的 控制中心 中设置,进入你文件系统的 设置 面板,勾选 启动复制 后选择要复制到的云平台和服务区。之后在挂载时使用
--accesskey2
和--secretkey2
设置复制 Bucket 的密钥。
juicefs mount
功能
挂载文件系统。
语法
juicefs mount <name> <mountpoint> [-f] [-b] [-v]
[--log=<log_path>] [--http=ADDR]
[--external | --internal] [--max-uploads=<max_uploads>]
[--cache-dir=<cache_dir>] [--cache-size=<cache_size>]
[--writeback] [--metacache]
[--allow-other] [--allow-root] [--enable-xattr]
...
参数
<name>
文件系统的名字。
<mountpoint>
在自己主机上的挂载路径,比如:/jfs
。
-f
前台运行。
-b
在 Docker 中后台运行。
--subdir=<subdir>
挂载子目录。
-v
显示更多日志。
--log=<log_path>
指定日志存储路径,默认为 /var/log/juicefs.log
。
--http=ADDR
指定通过 HTTP 提供文件访问的监听地址,比如 localhost:8080。
对象存储相关参数
--external
客户端会自动检查当前环境是否可以用内网域名来访问对象存储,用户可以通过此参数显式指定通过外网访问。
--internal
显式指定通过内网域名访问对象存储(适用于部分区分内外网域名的对象存储,比如:阿里云 OSS, UCloud UFile 等)。
--max-uploads=<max_uploads>
最大并发上传请求数,默认为 50。
--upload-limit=<upload_limit>
上传数据所用带宽的上限(Mbps),默认无限制.
--delete-limit=<delete_limit>
对象存储 Delete API 调用上限(QPS),默认无限制.
--get-timeout=<get_timeout>
下载单个对象的最长时间(秒)。
--put-timeout=<put_timeout>
上传单个对象的最长时间(秒)。
缓存相关参数
--cache-dir=<cache_dir>
本地缓存的存储路径,默认是
/var/jfsCache
。多盘缓存用
:
分割不同目录,目录可包含通配符*
(需要添加引号)。例如
--cache-dir '/data*/jfsCache:/mydata*/jfsCache'
。
--cache-size=<cache_size>
本地缓存容量,默认是 1024 MiB。
在多盘缓存下是指多个目录一起的总容量,会平均分配到各个目录。
--free-space-ratio=<free_space_ratio>
缓存盘的最少剩余空间,默认是 0.2。
--cache-mode=<cache_mode>
磁盘上缓存文件的权限模式,默认是 0600。
--buffer-size=<buffer_size>
用来缓存读写数据的总内存大小,默认 300 MiB。
--writeback
写数据时优先写到本地磁盘,然后在后台异步上传到对象存储。
--metacache
将元数据缓存在运行客户端的主机的内存里,默认启用,请用 –metacacheto=0 来关闭。
--metacacheto=<metacacheto>
元数据的缓存过期时间(单位是秒),默认为 300(5 分钟)。
--entrycacheto=<entrycacheto>
文件项在内核中的缓存时间,默认 1 秒。
--direntrycacheto=<direntrycacheto>
目录项在内核中的缓存时间,默认 1 秒。
--attrcacheto=<attrcacheto>
文件/目录的属性在内核中的缓存时间,默认 1 秒。
--opencache
是否使用缓存的元数据来打开文件,默认不使用。
FUSE 相关参数
--allow-other
允许其他用户访问(当用
root
挂载时默认开启,否则需要在/etc/fuse.conf
里面设定user-allow-other
)。
--enable-xattr
开启 扩展文件属性 xattr 的支持。
--enable-acl
开启 POSIX ACL 的支持。
--no-posix-lock
禁用 POSIX lock。
--no-bsd-lock
禁用 BSD lock。
-o writeback_cache
在 3.15+ 的内核中启用写入缓存,极大提高随机写入和碎片写入的性能。
挂载文件系统的方法可以参考 上手指南中的说明。
juicefs umount
功能
卸载 JuiceFS 文件系统。
语法
juicefs umount <mountpoint> [options]
参数
-f
--force
强制卸载
juicefs info
功能
显示 JuiceFS 文件系统中文件或目录的信息。
语法
juicefs info <path> [-n | --plain]
参数
<path>
要查询的路径。
-n
--plain
把文件大小显示为字节数。
例子
显示一个目录的信息
# juicefs info /jfs/logs
/jfs/logs:
inodes: 4 # 当前目录包含的 inode 总数
directories: 2 # 其中目录的数量
files: 2 # 其中文件的数量
chunks: 44 # 所有文件包含的 chunk 数量
length: 2.91G # 所有文件的实际大小总和
size: 2.91G # 计费大小,所有文件和目录大小会对齐到 4KB,为最小计费单位
显示一个文件的信息
# juicefs info --plain /jfs/daily-log.tar
/jfs/daily-log.tar:
inode: 2955 # 文件的 inode id
length: 3128903680 # 文件实际大小
size: 3128950784 # 文件计费大小
chunks: 47 # 数据块总数和清单,每块最大 64MB
0: 58597 67108864 0 67108864 # 格式为:在文件中的位置,块ID,块长度,实际使用的起始位置,长度
1: 58598 67108864 0 67108864
...
45: 58661 67108864 0 67108864
46: 58662 41895936 0 41895936
juicefs import
功能
从已有的对象存储中导入文件。
语法
juicefs import <uri> <dst> [-v] [--name=<name>] [--mode=<mode>]
参数
<uri>
要导入文件的 URI,格式为 <bucket_name>[.<domain>][/<prefix>]
.
<dst>
导入文件的存放目录。
--name=<name>
文件系统的名字,Linux 下是可选的。
--mode=<mode>
导入文件的权限(Unix 格式)。
-v
显示详细日志。
参数
导入的文件数据是只读的。但是文件和目录的其他属性(名字和权限等)可以修改,改动不会同步到对象存储中。
可以在 JuiceFS 中删除导入的文件,但并不会实际删除对象存储中的对象。
juicefs rmr
功能
快速删除目录里的所有文件和子目录,类似于 rm -rf
, 但速度非常快。
语法
juicefs rmr <dir> [-h]
该命令会尝试以当前用户的身份去递归删除指定目录里面的所有文件和子目录,跳过无权限删除的部分,返回被删除的文件和目录数量以及剩余的文件和目录数。
如果文件系统启用了回收站功能,被删除的文件会进入回收站。
juicefs snapshot
功能
创建或删除快照。
快照是在某个时间点(拷贝开始的时间点)对指定数据的完整映像,这是数据备份时经常用到的技术。JuiceFS 的快照在建立快照时不会实际拷贝文件数据,而且创建一套完整的引用,在源数据发生修改时才拷贝数据(Copy-on-Write 技术)到快照中。
语法
juicefs snapshot <src> <dst> [-f | --force] [-c | --copy] # 创建快照
juicefs snapshot -d <dst> [-f | --force] # 删除快照
参数
<src>
要做快照的目录。
<dst>
快照存放的目录。
-d
--delete
删除快照。
-f
--force
强行覆盖或删除文件。
-c
--copy
用当前用户的 uid,gid,umask 来创建新快照,默认使用源文件的 uid,gid 和 mode。
juicefs grep
功能
Linux grep 的并行版本,使用方法一样,搜索性能更高。
语法
juicefs grep [PATTERN] PATH ... [options]
参数
[PATTERN]
要搜索的内容,支持正则表达式。
PATH
搜索路径。
-j JOBS
--jobs=JOBS
并行任务数量(默认为 CPU 核数)。
-e PATTERNS
--regexp PATTERNS
多用于连接多个 PATTERNS 或者 PATTERN 以 “-” 开头。
-E
extended-regexp
指定 PATTERN 是扩展正则表达式。
-H
每行开始都打印文件名。
-n
--line-number
输出搜索结果所在的行号。
-i
--ignore-case
忽略英文字母大小写,默认是区分大小写的。
-v
--invert-match
搜索不包含 PATTERN 的行。
juicefs lsof
功能
列出 JuiceFS 最近(10 分钟内)被打开过的文件。
语法
juicefs lsof <path>
juicefs profile
功能
收集和分析文件系统的 oplog (operation log)。
语法
juicefs profile [options]
参数
-x PATH
--path=PATH
日志文件目录(默认为 /jfs
)。
-f FILE
--file=FILE
日志文件名(默认为 .ophistory
)。
日志文件区别请参考 挂载目录下的 .oplog 虚拟文件。
-g GROUP_BY
--group-by=GROUP_BY
根据指定属性对输出结果进行分组(默认为 cmd
),可选值为 [uid
, pid
, cmd
]。
-s SORT_BY
--sort-by=SORT_BY
根据指定列对输出结果进行排序(默认为 total_time
),可选值为 [group
, number
, avg_time
, total_time
]。
-u FILTER_BY_UID
--filter-by-uid=FILTER_BY_UID
根据 UID 对输出结果进行过滤,多个关键词使用半角逗号(,)分隔。
-p FILTER_BY_PID
--filter-by-pid=FILTER_BY_PID
根据 PID 对输出结果进行过滤,多个关键词使用半角逗号(,)分隔。
-w WINDOW_SIZE
--window-size=WINDOW_SIZE
收集 oplog 的时间窗口大小,参数为浮点数,单位为秒(默认值为 60)。
-i FLUSH_INTERVAL
--flush-interval=FLUSH_INTERVAL
输出的刷新间隔,参数为浮点数,单位为秒(默认值为 2)。
juicefs version
功能
显示客户端版本,在 版本更新页 可以查看每个版本的更新详情。
语法
juicefs version [options]
参数
-u
--upgrade
升级客户端到最新版。