全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

客户端命令参考-容量型&标准型

最近更新时间:2025-03-07 15:01:12

客户端挂载

挂载文件系统。挂载时需提供文件系统的Token和访问密钥(参考快速上手)。支持用root或普通用户挂载,但由于权限不同,客户端默认缓存目录及日志文件路径会有区别。

指令

juicefs mount NAME MOUNTPOINT [options]

基础参数

参数项

说明

NAME

文件系统的名字。

MOUNTPOINT

主机上的挂载路径,比如:/data

--foreground
-f

前台运行,客户端日志也会直接在前台输出,此选项多用于调试。

--background
-b
-d

后台运行,这也是默认行为。

--no-syslog

禁用 syslog。

--log=PATH

日志存储路径,视挂载用户不同,默认为 /var/log/juicefs.log~/.juicefs/log/juicefs.log

--update-fstab

在 Linux 挂载时,更新 /etc/fstab,详见开机自动挂载

--max-space

限制挂载点的总大小。设置该选项来限制挂载点的容量上限,同时将 df -h 的容量上限设为对你的场景更合理的数值。

--token=TOKEN

指定客户端Token。

FUSE相关参数

参数项

说明

--enable-xattr

开启扩展文件属性 xattr 的支持。默认为 false,如果没有特殊需要建议关闭,会产生额外开销。

--enable-acl

开启 POSIX Extended ACL 的支持。

--no-bsd-lock

禁用 BSD lock 支持。

--no-posix-lock

禁用 POSIX lock 支持。

--block-interrupt=1

中断信号的阻塞时间(单位为秒),默认为 1。

--readdir-cache

在内核中建立 readdir 缓存(需要 Kernel 4.20 及以上)。

--allow-other

允许其他用户访问(当用 root 挂载时默认开启,否则需要在 /etc/fuse.conf 中启用 user-allow-other)。

元数据相关参数

参数项

说明

--subdir=SUBDIR

挂载子目录。

元数据缓存相关参数

参见通过本地缓存提升单客户端读写性能了解本地缓存设计。

参数项

说明

--metacacheto=300

元数据的缓存过期时间(单位为秒),默认为 300。

--metacache

将元数据缓存在运行客户端的主机的内存里,默认启用。使用 --metacacheto=0 关闭缓存。

--max-cached-inodes=5000000

Inodes 的最大缓存数量,默认为 5000000。

--open-cache
--opencache

是否使用缓存的元数据来打开文件,默认为 false,也就是说每次打开文件时都会访问元数据服务,确认文件是否被更改过。因此在需要频繁打开文件,而修改又较少时(建议针对只读场景开启),可以考虑启用 --opencache,进一步提升读性能。仅对于同一个挂载点,读缓存会根据文件变更自动失效。

--attr-cache
--attrcacheto=1

文件/目录的属性在内核中的缓存时间(秒),默认为“1.0s”。

--entry-cache
--entrycacheto=1

文件项在内核中的缓存时间(秒),默认为“1.0s”。

--dir-entry-cache
--direntrycacheto=1

目录项在内核中的缓存时间(秒),默认为“1.0s”。

本地缓存相关参数

参见通过本地缓存提升单客户端读写性能了解本地缓存设计。

参数项

说明

--buffer-size=300

读写缓冲区大小,单位 MiB,默认 300。详读读写缓冲区以了解如何对该参数进行调优。

--prefetch=1

预取:基于假如文件的某一小段被应用读取,那么文件附近的区域也很可能会被读取的假设,当随机读取文件某个块(Block)的一小段时,客户端会异步将整个块下载下来,用以优化随机读性能。

该参数代表是否进行预取,默认为1,即开启预取,设为0可禁用该行为。

--initial-readahead

预读:通过预测客户端未来的读请求,提前将文件后续的内容下载下来,用以优化大文件顺序读性能。

该参数代表初始预读窗口大小,单位为MiB,更大的初始窗口能够加速大文件顺序读性能。该参数默认为4096字节。

--writeback

启用客户端写缓存,数据优先写到本地磁盘,然后在后台异步上传。

该参数默认为 false。写缓存仅推荐在大量小文件写入(比如解压包含大量小文件的压缩文件)时临时开启。

--cache-dir=CACHEDIR

本地缓存目录,默认为/var/jfsCache$HOME/.juicefs/cache。支持以下设置:

  1. 多缓存盘用:分割多个目录,目录可包含通配符*。例如:/data*/cache:/mydata*/cache

  2. 内存作为缓存目录。例如:--cache-dir=/dev/shm(大小默认为内存的一半)。

  3. 客户端进程内存作为缓存。例如:--cache-dir=memory

--cache-size=102400

本地缓存空间总容量,单位MiB,默认102400(100GiB)。当指定了多个缓存目录时,总容量会平均分配到各个目录。

该参数设为0则会禁用本地磁盘缓存,但会导致客户端额外尝试分配 100MB 的内存用于缓存。

--free-space-ratio=0.1

本地缓存目录的最少剩余空间占比,默认为0.1。该参数不支持设置为0,如果希望允许缓存尽可能写满磁盘,可以设置一个接近于 0 的值(比如 0.01)。

--cache-mode=0600

缓存目录的权限模式,默认是 0600。

--cache-partial-only

对于读缓存,仅缓存小于4MiB的数据块,例如小于一个4MiB的小文件、大文件末尾不足4MiB的数据块。

该参数默认为false,即所有读取的数据块都会被缓存。如果您的缓存盘吞吐不高或大文件仅顺序读一次,可将该参数设置为true

--verify-cache-checksum=extend

缓存数据一致性检查级别,默认为extend启用 Checksum 校验后,生成缓存数据块时会对数据切分做 Checksum 并记录于文件末尾,供读缓存时进行校验。支持以下级别:

  • none:禁用一致性检查,如果本地数据被篡改,将会读到错误数据;

  • full:读完整数据块时才校验,适合顺序读场景;

  • shrink:对读范围内的切片数据进行校验,校验范围不包含读边界所在的切片(可以理解为开区间),适合随机读场景;

  • extend(默认):对读范围内的切片数据进行校验,校验范围同时包含读边界所在的切片(可以理解为闭区间),因此将带来一定程度的读放大,适合对正确性有很高要求的随机读场景。

--cache-eviction=2-random

缓存淘汰算法,默认为2-random。支持以下策略:

  1. 2-random(默认):用 2-random 算法来淘汰缓存,也就是随机选取两个数据块,删除 atime(最近访问时间)较小者。对于大部分真实场景,该算法效果类似 LRU。

  2. none:禁用缓存淘汰,缓存空间写满即止,无法继续写入,需要手动管理缓存数据。

分布式缓存相关参数

参见通过分布式缓存提供多客户端缓存共享能力了解分布式缓存设计。

参数项

说明

--cache-group=CACHEGROUP

分布式缓存组的组名称,相同组的客户端之间可以相互共享缓存的数据,默认未启用。

--subgroups=0

一个缓存组中子组的数量,默认为 0。用子组来对缓存组做进一步拆分,实际上就是为缓存组名添加数字前缀。

--group-network

缓存组的监听网卡,默认的监听 IP 是网络设备列表中找到的第一个内网 IP,如果这样的策略不合适,可以使用该参数手动指定网络设备。

--group-ip=GROUPIP

手动设置缓存共享组的 IP 地址,在多网卡节点中,使用该参数来绑定特定网卡。除了指定 IP 地址,还可以直接传入 CIDR 前缀来自动匹配 IP,比如用 172.16.0.0 来匹配 172.16.0.0/16

--group-port

缓存组的监听端口,默认为随机端口。如果指定的端口不可用,则会自动 +1 直到绑定成功。

--group-weight=100

如果节点间缓存空间大小不一致,通过该值来调节节点各自的权重。建议取值范围为 10 到 1000。比如 1TiB 和 3TiB 的节点搭配成为缓存组,则可将 1TiB 节点设置权重 100,3TiB 节点设为 300。

--group-weight-unit=0

如果不希望手动设定 --group-weight,而是希望从 --cache-size 自动推算,那么可以指定该参数。单位为 MiB,以默认的 --cache-size=102400 为例,配合 --group-weight-unit=1024,后者含义是“将 1024MiB 记为 1 权重”,也就是说最终权重为 102400 / 1024 = 100

--no-sharing

加入缓存组时,从缓存集群获取缓存数据,但却不共享自身缓存数据(只索取、不付出)。该选项用于需要访问缓存集群数据,但自身却不断变动的节点(比如 Kubernetes Pod)。默认为 false。

--fill-group-cache

将客户端写入的数据块尽量发送给缓存组(不保证 100% 缓存),而不再写入本地缓存。如果客户端同时启用了 --no-sharing,便只会将小于数据块(默认4MiB)的写入数据发送给缓存组。特别地,如果启用了客户端写缓存,那么所有大小的写缓存数据一律会异步发送给缓存组,让组内成员有一定概率读到尚未持久化的数据。

--cache-group-size=0

单位 MiB。考虑到读文件时客户端会进行预读和预取,在开启分布式缓存时,对于小于该值的文件,客户端会尽量将该文件切分的数据块调度到一个节点上,以此来最大化利用缓存数据。

--cache-priority=0

缓存块的优先级,可选值为:0、1、2、3,数字越大优先级越高。缓存淘汰时会优先淘汰优先级更低的数据。

客户端缓存预热

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

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

预热命令不会重复下载本地已经存在的文件(会直接跳过),因此显示的下载速度可能会高于实际下载流量。如果开启了分布式缓存,那么在缓存组内任意节点执行该命令,都能获得相同效果。

指令

juicefs warmup [PATH] [options]

# 预热目录中的所有文件
juicefs warmup /datadir
# 预热挂载点某子目录中的所有文件
juicefs warmup /datadir/train-data
# 预热指定文件
echo '/datadir/file1
/datadir/file2
/datadir/file3' >/tmp/filelist.txt
juicefs warmup -file=/tmp/filelist.txt

参数

参数项

说明

--file=FILE
-f FILE
--listfile=FILE

将需要预热的文件名保存成文本文件,一行一个路径。当需要预热多个指定文件时,建议使用这种方法,效率高于拆分成多个 warmup 命令。

--threads=50
-p 50
-c 50
--concurrent=50

下载并发度,默认 50。增大并发以加速预热。对于分布式缓存场景,如果预热速度不够快,建议从 20 * [缓存组成员数] 来开始增加,逐渐调优来寻求最合适的并发度。

--cache-priority=0

缓存块的优先级,可选值为:0、1、2、3,数字越大优先级越高。缓存淘汰时会优先淘汰优先级更低的数据。

--io-retries=1

下载单个数据块的最大失败重试次数,默认为 1。在网络环境不佳的情况下可以降低并发、增加重试次数来更好地容错。

--max-failure=0

根据预热失败的数据块数量来决定命令返回值,默认允许的失败数量为 0,意味着如果有任何数据块下载失败,命令会返回失败状态(返回值为 1)。

--background
-b

后台运行。

--evict

主动删除给定路径的缓存内容。

--check

检查给定路径是否已被缓存。

客户端卸载

卸载文件系统。

指令

juicefs umount PATH [options]

参数

参数项

说明

PATH

挂载路径。

-f --force

强制卸载。

显示目录数摘要

直接使用du命令可能会出现重复计数情况,所以需要使用如下命令显示目录树摘要。另外,您也可以在KPFS控制台查看文件系统目录及文件情况。

指令

juicefs summary [command options] PATH

juicefs summary /datadir

# 显示最大深度为 5
juicefs summary --depth 5 datadir

# 显示前 20 个 entry
juicefs summary --entries 20 /datadir

参数

参数项

说明

--depth=2 -d 2

显示树的深度,0 表示只显示根,默认为 2。

--entries=10 -e 10

显示前 N 个 entry,按大小排序,默认为 10。

--csv

以 CSV 格式打印摘要。

显示文件或inode信息

直接使用du命令可能会出现重复计数情况,所以需要如下命令显示文件系统中文件或inode信息。另外,您也可以在KPFS控制台查看文件系统目录及文件情况。

指令

juicefs info [command options] PATH/INODE

# 查询文件
juicefs info /mnt/datadir

# 查询目录
juicefs info -r /mnt/datadir/

# 通过 inode 反查文件信息
cd /mnt/datadir
juicefs info -i 100

参数

参数项

说明

PATH/INODE

要查询的路径或 inode。

-i --inode

通过 inode 查询文件信息,注意当前目录必须在 挂载点 中。

-r --recursive

递归获取目录中所有子目录及文件的信息。

--raw

显示内部原始信息。

纯净模式常规模式

纯净模式

点击可全屏预览文档内容