Please enable Javascript to view the contents

如何预热 Juicefs 数据

 ·  ☕ 1 分钟

1. 关于 JuiceFS 的缓存

在主机上,预热的缓存是直接放在主机上的。

在集群中,分为两级缓存:

  • Worker,提供集群级别共享的缓存
  • Fuse,提供仅当前节点级别的缓存

2. 使用 JuiceFS 客户端预热数据

  • 指定目录
1
juicefs warmup /mnt/jfs/dataset-1
  • 批量指定目录
1
juicefs warmup -f warm.txt

其中 warm.txt 为预热目录列表,每行一个目录

1
2
3
/mnt/jfs/dataset-1
/mnt/jfs/dataset-2
/mnt/jfs/pics

3. 使用 Fluid 预热数据

  • 预热指定的目录
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
  name: juicefs-dataload
spec:
  dataset:
    name: my-dataset
    namespace: default
  options:
    timeout: 120m
  target:
    - path: /jfs/dataset-1
    - path: /jfs/dataset-2
    - path: /jfs/pics

默认的超时时间为 20 分钟,但由于预热时没有配置并发 -c 200,导致预热速度很慢,因此设置为 120 分钟。

如果需要修改并发,可以修改同命名空间下 *-loader-data-load-script 脚本中的预热命令,然后直接 kill Pod 即可。

  • 预热整个数据集
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cat <<EOF > dataload.yaml
apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
  name: juicefs-dataload
spec:
  dataset:
    name: juicefs
    namespace: default
EOF

4. 挂载 PVC 预热数据

  • 创建 Pod 挂载 PVC
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
export NAMESPACE=
export PVC_NAME=
export DEMO_IMAGE=
export NODE_NAME=

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: $PVC_NAME
  namespace: $NODE_NAME
spec:
  nodeName: $HOSTNAME
  containers:
    - name: demo
      image: $DEMO_IMAGE
      volumeMounts:
        - mountPath: /data/jfs
          name: data
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: $PVC_NAME
EOF
  • 进入 Pod
1
2
3
kubectl -n $NAMESPACE get pod $PVC_NAME

kubectl -n $NAMESPACE exec -it $PVC_NAME -- bash
  • 预热数据

需要注意,如果使用的是企业版就用企业版的 JuiceFS 客户端,如果是社区版就用社区版的。这里以社区版为例:

1
curl -sSL https://d.juicefs.com/install | sh -

预热命令和上面一样

1
juicefs warmup /data/jfs/dataset-1

微信公众号
作者
微信公众号