命令参考

这篇文档会详细的介绍 juicefs 客户端所有的命令与参数。

概况

没有任何参数执行 juicefs 时会列出所有命令和功能描述。

  1. juicefs COMMAND [options]
  2. COMMAND could be:
  3. auth authorize a filesystem
  4. mount mount a filesystem
  5. umount umount a filesystem
  6. info show information of file or directory
  7. lsof list recently (within 10 minutes) opened files
  8. import import files from existing object storage
  9. rmr remove all files/directories recursively
  10. snapshot create or remove snapshots
  11. grep parallelized file pattern searcher
  12. version show the version

使用方式:juicefs [COMMAND] [options]

所有命令后面加 -h 或者 --help 都可以查看参数列表和帮助信息。

注:如果没有把 juicefs 放入到 PATH 环境变量中的某个目录,则需要使用完整路径来运行 juicefs. 如果 juicefs 是在当前目录下,则用 ./juicefs。以下文档假定 juicefs 在 PATH 环境变量中的某个目录(比如 /usr/local/bin), 可以直接用 juicefs 运行。

下面详细说明所有命令的用法。

juicefs auth

功能

文件系统的认证授权。

语法

  1. juicefs auth <name> --token=<token> [--accesskey=<access_key>] [--secretkey=<secret_key>]
  2. [--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>

用于复制的对象存储密钥(可选)。

备注

  1. 如果以 sudo 方式运行 ./juicefs,认证信息保存在 /root/.juicefs/[NAME].conf 中。

  2. --accesskey--secretkey 没有以参数方式指定时,会以交互方式输入。

  3. 如果你的云提供商支持 IAM,accesskey 为空字符串即可。可以是 --accesskey "", 或者交互输入时直接按回车键。

  4. JuiceFS 的复制功能在网站的 控制中心 中设置,进入你文件系统的 设置 面板,勾选 启动复制 后选择要复制到的云平台和服务区。之后在挂载时使用 --accesskey2--secretkey2 设置复制 Bucket 的密钥。

juicefs mount

功能

挂载文件系统。

语法

  1. juicefs mount <name> <mountpoint> [-f] [-b] [-v]
  2. [--log=<log_path>] [--http=ADDR]
  3. [--external | --internal] [--max-uploads=<max_uploads>]
  4. [--cache-dir=<cache_dir>] [--cache-size=<cache_size>]
  5. [--writeback] [--metacache]
  6. [--allow-other] [--allow-root] [--enable-xattr]
  7. ...

参数

<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 文件系统。

语法

  1. juicefs umount <mountpoint> [options]

参数

-f --force

强制卸载

juicefs info

功能

显示 JuiceFS 文件系统中文件或目录的信息。

语法

  1. juicefs info <path> [-n | --plain]

参数

<path>

要查询的路径。

-n --plain

把文件大小显示为字节数。

例子

显示一个目录的信息

  1. # juicefs info /jfs/logs
  2. /jfs/logs:
  3. inodes: 4 # 当前目录包含的 inode 总数
  4. directories: 2 # 其中目录的数量
  5. files: 2 # 其中文件的数量
  6. chunks: 44 # 所有文件包含的 chunk 数量
  7. length: 2.91G # 所有文件的实际大小总和
  8. size: 2.91G # 计费大小,所有文件和目录大小会对齐到 4KB,为最小计费单位

显示一个文件的信息

  1. # juicefs info --plain /jfs/daily-log.tar
  2. /jfs/daily-log.tar:
  3. inode: 2955 # 文件的 inode id
  4. length: 3128903680 # 文件实际大小
  5. size: 3128950784 # 文件计费大小
  6. chunks: 47 # 数据块总数和清单,每块最大 64MB
  7. 0: 58597 67108864 0 67108864 # 格式为:在文件中的位置,块ID,块长度,实际使用的起始位置,长度
  8. 1: 58598 67108864 0 67108864
  9. ...
  10. 45: 58661 67108864 0 67108864
  11. 46: 58662 41895936 0 41895936

juicefs import

功能

从已有的对象存储中导入文件。

语法

  1. juicefs import <uri> <dst> [-v] [--name=<name>] [--mode=<mode>]

参数

<uri>

要导入文件的 URI,格式为 <bucket_name>[.<domain>][/<prefix>].

<dst>

导入文件的存放目录。

--name=<name>

文件系统的名字,Linux 下是可选的。

--mode=<mode>

导入文件的权限(Unix 格式)。

-v

显示详细日志。

参数

  1. 导入的文件数据是只读的。但是文件和目录的其他属性(名字和权限等)可以修改,改动不会同步到对象存储中。

  2. 可以在 JuiceFS 中删除导入的文件,但并不会实际删除对象存储中的对象。

juicefs rmr

功能

快速删除目录里的所有文件和子目录,类似于 rm -rf, 但速度非常快。

语法

  1. juicefs rmr <dir> [-h]

该命令会尝试以当前用户的身份去递归删除指定目录里面的所有文件和子目录,跳过无权限删除的部分,返回被删除的文件和目录数量以及剩余的文件和目录数。

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

juicefs snapshot

功能

创建或删除快照。

快照是在某个时间点(拷贝开始的时间点)对指定数据的完整映像,这是数据备份时经常用到的技术。JuiceFS 的快照在建立快照时不会实际拷贝文件数据,而且创建一套完整的引用,在源数据发生修改时才拷贝数据(Copy-on-Write 技术)到快照中。

语法

  1. juicefs snapshot <src> <dst> [-f | --force] [-c | --copy] # 创建快照
  2. juicefs snapshot -d <dst> [-f | --force] # 删除快照

参数

<src>

要做快照的目录。

<dst>

快照存放的目录。

-d --delete

删除快照。

-f --force

强行覆盖或删除文件。

-c --copy

用当前用户的 uid,gid,umask 来创建新快照,默认使用源文件的 uid,gid 和 mode。

juicefs grep

功能

Linux grep 的并行版本,使用方法一样,搜索性能更高。

语法

  1. 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 分钟内)被打开过的文件。

语法

  1. juicefs lsof <path>

juicefs profile

功能

收集和分析文件系统的 oplog (operation log)。

语法

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

功能

显示客户端版本,在 版本更新页 可以查看每个版本的更新详情。

语法

  1. juicefs version [options]

参数

-u --upgrade

升级客户端到最新版。