开放 SQL 数据库支持,JuiceFS v0.13 正式发布!

于鸿儒 2021.05.21

历时 1 个月,涉及 80 多项变化,JuiceFS v0.13 终于和大家见面了!🎉

下面就让我们一起来看一看新版本发生了哪些变化吧:

开放支持 SQL 元数据引擎

本次升级除了常规的 BUG 修复,带来的最大变化是开始支持使用 SQL 数据库作为元数据引擎,以下为 JuiceFS 现已支持的元数据引擎:

  • Redis
  • MySQL
  • MariaDB
  • TiDB
  • SQLite

相比之下 ,关系型数据库要比 Redis 数据库的性能略低 ,但关系型数据库能够提供更好的数据持久化和扩容能力,因此更适合那些对数据的总量和安全性更敏感的场景,比如文件备份。

在功能性上,MySQL、MariaDB 以及 TiDB 都能提供与 Redis 数据库几乎一致的功能特征,比如多客户端共享存储、数据强一致性等。而且 MySQL 及其协议兼容的数据库产品都有庞大的用户基础和完善的配套生态,可以非常容易的上手使用和管理。

值得一提的是,对 SQLite 数据库的支持,让 JuiceFS 进一步扩大了适配的应用场景。作为全球最流行的单文件数据库,SQLite 简单易用,使用前无需配置,非常适合单设备或个人的小规模使用。比如,你可以用“SQLite + 对象存储”的组合快速创建一个 JuiceFS 存储,挂载到本地电脑当做私有网盘来使用。

新增子命令

JuiceFS 本次版本升级还新增了一系列实用的子命令:

  • profile
  • status
  • warmup

profile

该命令被设计用来监测 JuiceFS 的工作状况,基本用法如下:

$ juicefs profile MOUNTPOINT/LOGFILE

假设 JuiceFS 存储挂载在 /jfs 文件夹,则可以使用以下命令实时监测该该目录上的操作:

$ juicefs profile /jfs

也可以指定 JuiceFS 存储根目录下的 .accesslog 日志文件,从而对历史操作进行重放:

$ cat /jfs/.accesslog > /tmp/jfs-oplog
# later
$ juicefs profile /tmp/jfs-oplog

status

该命令可以用来查看一个 JuiceFS 存储的详细信息,比如名称、元数据地址、存储类型、Bucket、压缩算法等。基本用法如下:

$ juicefs status [command options] Metadata-database-URL

例如:

$ juicefs status mysql://user:passwd@(localhost:3306)/juicefs

2021/05/20 14:50:38.500683 juicefs[3259538] <INFO>: Meta address: mysql://user@(localhost:3306)/juicefs
[xorm] [info]  2021/05/20 14:50:38.503441 PING DATABASE mysql
2021/05/20 14:50:38.504942 juicefs[3259538] <WARNING>: The latency to database is too high: 1.504649ms
{
  "Name": "juice-test",
  "UUID": "1324d1bf-98f0-4e97-a4c1-60bd7c04debf",
  "Storage": "minio",
  "Bucket": "https://192.168.1.8/mybucket",
  "AccessKey": "minioadmin",
  "BlockSize": 4096,
  "Compression": "none",
  "Shards": 0,
  "Partitions": 0
}

warmup

该命令可以手动指定为特定的目录或文件创建本地缓存,这样就可以有针对性的加快 JuiceFS 存储中特定数据的访问速度。

$ juicefs warmup -h
NAME:
   juicefs warmup - build cache for target directories/files

USAGE:
   juicefs warmup [command options] [PATH ...]

OPTIONS:
   --file value, -f value     file containing a list of paths
   --threads value, -p value  number of concurrent workers (default: 50)
   --background, -b           run in background (default: false)
   --help, -h                 show help (default: false)

其他变化

除了前面介绍的内容之外,JuiceFS v0.13 还带来了以下新功能:

  • Windows 版本的 Java SDK
  • JuiceFS 存储支持分片(shards),可将文件块分散存储在多个 Bucket 。
  • 添加 /.stats 虚拟文件,统计存储量。
  • 新增最小化编译选项 make juicefs.lite,让客户端仅支持本地和 S3 存储,编译后的客户端体积可减少 2/3。

更多变化可以查看 GitHub release 页面。