v0.15.2

juicedata/juicefsv0.15.2Jul 7, 2021by chnliyong

AI Summary

A performance and tooling focused release featuring metadata backup/restore capabilities and significant kernel page cache improvements.

Key Highlights

  • Introduced `dump` and `load` commands for metadata backup and migration
  • Improved performance for read/write heavy workloads using kernel page cache
  • Added PostgreSQL as a supported meta engine
  • Enabled writeback cache in kernel via mount option

New Features

  • Metadata dump and load commands
  • Read-only mount option (`--read-only`)
  • Command auto-completion support
  • Parallel benchmarking (`-p N`)
  • PostgreSQL meta engine support
  • Sub-directory mounting (`--subdir`)
  • WebDAV as an object store
  • Kernel writeback cache
  • Background mode logging redirection

Full Release Notes

JuiceFS v0.15.2 arrived 1 month after v0.14.2, with more than 60+ changes from 8 contributors (@davies, @Sandy4999 , @xiaogaozi, @yuhr123, @Suave, @zzcclp , @tangyoupeng, @chnliyong, @yuhr123), thanks to them.

This release introduced new tool to backup and restore metadata, which can also be used to migrate metadata between different meta engines, check [Backup and Restore Metadata](https://github.com/juicedata/juicefs/blob/main/docs/en/metadata_dump_load.md) for details.

This release also improved the performance significantly for read/write heavy workload by utilizing page cache in kernel.

This release is backward-compatible with previous releases, should be safe to upgrade.

## New

* Added command `dump` and `load` to backup and restore metadata (#510, #521, #529, #535, #551). 
* Added an option (`--read-only`) to mount as read-only (#520).
* Support command auto-completion (#530, #534).
* Run benchmark in parallel (`-p N`) (#545).
* Support PostgreSQL as meta engine (#542).
* Added an option (`--subdir`) to mount a sub-directory (#550). 
* Support WebDAV as an object store (#573).
* Allow enable writeback cache in kernel by `-o writeback_cache` (#576).
* Added a option to redirect the logging into a file in background mode (#575).

## Changed

* Changed the batch size of LIST request to 1000 (some object storage may fail with 400 for larger limit) (1385587).
* Exclude log4j from Java SDK to avoid potential conflict (#501).
* Exit when unknown option found (d6a39f11db).
* Report type of meta engine and storage together with usage (#504).
* Changed the default configuration of Java SDK and S3 gateway to be consistent with `juicefs mount` (#517).
* Keep page cache in kernel when files opened without changes (#528, #537).
* Change REDIS-URL to META-URL in docs (#552). 

## Bugfix

* Fixed the memory leak in B2 client (#500).
* Handle BucketAlreadyExists error for all object storage (#561).
* Fixed a bug with SQLite and PostgreSQL engine when high bit of lock owner is 1 (#588)
* Fixed updating stats for MySQL engine (#590).
* Fixed case sensitivity for MySQL engine (#591).
* Fixed potential leak for files  overwritten by rename (#594, #495)