如何部署 JuiceFS
JuiceFS 的部署非常简单,只需完成下列步骤:
在 juicefs 网站控制台上创建文件系统
下载 juicefs 命令行工具
挂载 juicefs 文件系统
这几个步骤既可以手动完成,也可以通过脚本或 DevOps 工具自动化处理。
手动
依次执行下列几个命令下载并挂载 juicefs
curl -L juicefs.com/static/juicefs -o juicefs && chmod +x juicefs
sudo ./juicefs auth --token $JFS_TOKEN --accesskey $ACCESSKEY --secretkey $SECRETKEY $JFS_NAME
sudo ./juicefs mount $JFS_NAME $JFS_MOUNTPONT
在 etc/fstab
中增加配置项以便能在系统启动时自动加载,例如:
JFS_NAME /jfs juicefs _netdev 0 0
其中 _netdev 表示 juicefs 需要在网络设备之后挂载。
注解
在默认情况下,CentOS 6 不会 在启动后自动挂载网络文件系统,需要运行 sudo chkconfig --add netfs
来使能。
使用 Shell 脚本
#!/bin/sh
cd /tmp
curl -L juicefs.com/static/juicefs -o juicefs && chmod +x juicefs
sudo ./juicefs auth "$1" --token "$2" --accesskey "$3" --secretkey "$4"
sudo ./juicefs mount "$1" "$5"
将上述内容保存到 shell 脚本中,如 setup-juicefs.sh
,然后使用下面的命令一次性完成挂载:
./setup-juicefs.sh $JFS_NAME $JFS_TOKEN $ACCESSKEY $SECRETKEY $JFS_MOUNTPONT
注解
accesskey 和 secretkey 在某些环境中不是必需的,例如在 AWS 中可以采用 IAM role 来完 成认证。在这种情况下,需要给命令行提供占位符 ''
作为参数
使用 Salt
下面是使用 Salt 部署 juicefs 的代码样例:
/root/juicefs:
file.managed:
- source: https://juicefs.com/static/juicefs
- mode: 0755
- skip_verify: True
juicefs auth:
cmd.run:
- name: /root/juicefs auth {{jfs_name}} --token {{jfs_token}} --accesskey={{accesskey}} --secretkey={{secretkey}}
- creates: /root/.juicefs/{{jfs_name}}.conf
require:
- file: /root/juicefs
/jfs:
mount.mounted:
- device: {{jfs_name}}
- fstype: juicefs
- mkmnt: True
- opts: _netdev
- device_name_regex:
- JuiceFS:{{jfs_name}}
require:
- cmd: juicefs auth
注解
使用 juicefs 命令行工具挂载文件系统时,设备名称会自动添加 JuiceFS:
前缀。因此,需要 使用正则表达式进行匹配。
使用 Ansible
使用 Ansible 在本机挂载 juicefs 文件系统的 playbook 样例如下:
- hosts: localhost
tasks:
- set_fact:
jfs_bin: /usr/local/bin/juicefs
- get_url:
url: https://juicefs.com/static/juicefs
mode: 0755
dest: "{{jfs_bin}}"
- command: {{jfs_bin}} auth {{jfs_name}} --token {{jfs_token}} --accesskey={{accesskey}} --secretkey={{secretkey}}
args:
creates: /root/.juicefs/{{jfs_name}}.conf
- mount:
path: "{{jfs_path}}"
src: "{{jfs_name}}"
fstype: juicefs
opts: _netdev
state: mounted
注解
对于使用腾讯云的文件系统,--bucket
是 juicefs auth
的必要参数,请使用带有 APPID 的完整 endpoint 作为值。