JuiceFS 云服务快速上手指南

版本提示

这是一份针对 JuiceFS 云服务 编写的快速上手指南。如果你使用的是 JuiceFS 社区版,请访问社区版文档

概念速览

JuiceFS 是由对象存储和数据库组合驱动的分布式文件系统,「对象存储」用于数据存储,「数据库」用于元数据存储,由此而组成的文件系统支持在任何联网的服务器上共享挂载使用。

JuiceFS 云服务提供开箱即用的自研数据库,因此你「只需准备对象存储」。

准备

  • 对象存储:你的所有数据都会存储在你自己的对象存储中,JuiceFS 云服务会在创建文件系统时自动帮你创建并绑定对象存储 Bucket,你需要提前准备目标平台的 对象存储 API 访问秘钥
  • Python:请确保已经安装了 Python,建议使用 Python 3.5+,最低支持 Python 2.5+。
  • 操作系统:JuiceFS 支持 Linux、macOS 和 Windows 系统,通过 FUSE 实现对 POSIX 的兼容,使用前请确保已经安装了 FUSE。大多数 Linux 发行版已经内置了 FUSE 模块。macOS 系统请安装 macFUSE 实现对 FUSE 的支持。Windows 系统请安装 WinFsp 实现对 FUSE 的支持。
注意

JuiceFS 云服务 Windows 客户端暂未开放下载,如有使用需求,请联系我们

创建文件系统

JuiceFS 云服务在官网控制台创建文件系统,新用户请先访问 JuiceFS 官网注册。登录到控制台,点击「创建文件系统」按钮。

image

其中,服务器区域是你的对象存储所在的平台及区域,JuiceFS 会根据你的选择为你匹配速度最快的元数据存储节点。

注意

如果列表中没有你想要的云平台或区域,请参照提示信息提交反馈,我们的工程师会在 72 小时内支持所需的平台,24 小时内支持所需的区域。

你可以创建任意数量的文件系统,每个文件系统需要绑定一个对象存储 Bucket。默认由 JuiceFS 云服务客户端自动创建和绑定 Bucket,你也可以在「创建文件系统」时点击「高级选项」绑定一个已创建好的 Bucket。

注意

如果你使用的是腾讯云的 COS 对象存储,必须点击「高级选项」修改自动生成的 Bucket 名,为其带上 APPID 后缀,完整的格式为 <bucket>-<APPID>。点击「这里」查看如何获取腾讯云的 APPID。

创建完成,页面会跳转到文件系统的设置界面。请特别留意页面中加粗显示的 Token,每个文件系统有唯一的 Token,挂载文件系统时需要使用。

image

挂载文件系统

已创建的文件系统可以在任何联网的计算机上挂载,像本地磁盘一样使用。

一般而言,我们的用户大多会在与对象存储同平台同区域的云服务器上挂载 JuiceFS,一方面可以使用云平台的内网通道获得更快的速度和更低的时延,另一方面也能节约对象存储公网访问的流量开销。

安装客户端

Linux 和 macOS 系统执行以下命令将下载 JuiceFS 云服务客户端到当前目录:

  1. curl -L https://juicefs.com/static/juicefs -o juicefs && chmod +x juicefs
注意

「云服务客户端」不同于「社区版客户端」,如果需要同时使用二者,为了避免名称冲突,请修改程序名称进行区分。例如,可以将云服务客户端改名为 juicefs-cloud

执行命令,即可看到客户端的帮助信息。

  1. $ ./juicefs
  2. juicefs COMMAND [options]
  3. COMMAND could be:
  4. auth authorize a filesystem
  5. mount mount a filesystem
  6. umount umount a filesystem
  7. info show information of file or directory
  8. lsof list recent opened files
  9. import import files from existing object storage
  10. rmr remove all files/directories recursively
  11. snapshot create or remove snapshots
  12. grep parallelized file pattern searcher
  13. profile analyze log (Experimental)
  14. benchmark run benchmark
  15. warmup build cache for target directories/files
  16. version show the version
提示

上述方法只是将客户端下载到了当前目录,在其他位置使用时需要指定完整的程序路径。你可以参考《安装和部署》文档,将客户端安装到系统的可执行路径。

挂载

挂载文件系统的命令格式如下:

  1. $ sudo ./juicefs mount NAME-OF-JUICEFS /jfs

请将其中的 NAME-OF-JUICEFS 替换成「创建文件系统」时设置的文件系统名称。

首次挂载文件系统时,客户端会交互式地询问一系列信息。

例如,将名为 quick 的文件系统挂载到 /jfs 目录,程序会依次询问文件系统的 Token,以及对象存储 API 访问密钥。

  1. $ sudo ./juicefs mount quick /jfs
  2. Token for quick: 4bc1xxxxxxxxx9591dec66
  3. Access key ID for oss://juicefs-quick: LTxxxxxxxxxxxxVWL
  4. Access key secret for oss://juicefs-quick: Xl7DpxxxxxxxxxxxxxxxDMhfUUa
  5. OK, quick is ready at /jfs.
说明

只有首次挂载文件系统时需要提供 Token 等秘钥信息,这些信息会被保存在 $HOME/.juicefs 目录下的配置文件中。再次挂载时,客户端会从配置文件中自动读取,无需重复输入。

请确保你的对象存储 API 访问秘钥对 Bucket 有完全操控权限。

验证无误后会自动完成文件系统挂载,客户端会以守护进程的形式运行在后台,相关日志会记录到 syslog (Facility: LOG_USER)/var/log/juicefs.log,具体请参考「故障诊断和分析」

导入文件

如果文件系统绑定的是一个全新的 bucket,可以通过 Juicesync 工具(或任意的数据同步工具)将数据从其它地方导入到 JuiceFS 中。

如果文件系统绑定的是预先创建且已存储了文件的对象存储,也可以使用 JuiceFS 云服务客户端的 import 命令将这些文件的元数据导入 JuiceFS。

命令格式如下:

  1. sudo ./juicefs import BUCKET-NAME/PREFIX TARGET-DIR-IN-JUICEFS

比如,将 my-bucket 中所有以 my-files 开头的文件导入到 /jfs/my-files 文件夹中:

  1. sudo ./juicefs import my-bucket/my-files /jfs/my-files
说明

import 命令导入的本质是将目标文件的元数据信息写入 JuiceFS 的元数据存储引擎,从而纳入 JuiceFS 的管辖,该操作并不会实际复制任何文件,文件仍保存在原来的位置。

换言之,对于导入的文件,在文件系统中更改文件名、权限等属性并不会被同步到对象存储中的源文件。同样的,在文件系统中删除「导入的文件」也只会删除这些文件的元数据,并不会删除对象存储中的源文件。

建议将数据完全导入到 JuiceFS 以获得最好的性能效果以及完整的产品功能体验。

卸载文件系统

注意

卸载文件系统存在一定的操作风险,强制卸载使用中的文件系统可能导致数据丢失。执行操作前,请确认你已经备份了重要数据。

使用 umount 命令卸载文件系统:

  1. sudo umount /jfs

如果命令行返回 umount: /jfs: target is busy.,说明文件系统正在使用,建议用 lsof MOUNTPOINT 找到并结束相关应用的进程后再执行卸载。

对于 Linux 发行版,可以使用 -l 选项执行延迟卸载(立即卸载文件系统,但会等到设备不再繁忙时才清理资源):

  1. sudo umount /jfs -l

对于 macOS 系统,可以使用 force 选项进行强制卸载:

  1. sudo diskutil unmount force /jfs

然后你可以手动杀掉 juicefs 客户端进程,也可以等它自己退出。

删除文件系统

如果你需要删除云服务中创建的文件系统,出于数据安全的考虑,删除时应严格遵循以下步骤:

  1. 备份文件系统中所有数据;
  2. 在主机上卸载文件系统;
  3. 在官网控制台中删除文件系统;
  4. 在主机的 $HOME/.juicefs 目录中找到并删除文件系统的配置文件,通常是以 <YOUR-FS-NAME>.conf 形式命名。