v1.1.0
This is the second major release of JuiceFS, and is an LTS version as well that will be maintained for 24 months.
Starting from v1.0 it has 876 commits from 62 contributors, thanks to @SandyXSD @zhijian-pro @davies @zhoucheng361 @Hexilee @yuhr123 @tangyoupeng @timfeirg @sanwan @xiaogaozi @Suave @solracsf @tcodehuber @zyfjeff @kyungwan-nam @zwwhdls @Ziy1-Tan @pigletfly @qingyunha @rfyiamcool @201341 @rayw000 @shichanglin5 @AIXjing @Vigor-jpg @baifachuan @yongxie09 @tisonkun @neocxf @molei20021 @luohy15 @leoliulei @jomenxiao @divinerapier @cuishuang @cmmp6 @xiedeyantu @xyb @karitham @aronsky @yqlbu @JoyLiuc @sjp00556 @shjwudp @jzcruiser @hamidzr @ggicci @gdams @eryugey @guaneryu @Erisa @p1u3o @CodeRusher @CaitinChen @dugusword @Arvintian @AChangFeng @T-TRz879 @arnoldberlin @CaitinChen @leemingzixxoo @wzhallright !
Highlights
- Supports setting quotas on directory level
- Supports fast copying a tree with
clonecommand - Supports using FoundationDB as metadata engine
- Supports using GlusterFS as object storage
New
- Added a new command
quotato manage directory quotas (#3268, #3371, #3374, etc.) - Added a new command
cloneto fast clone a directory tree (#3279, #3366, #3369, etc.) - Added a new command
debugto collect a bunch of client information used for diagnosing problems (#2360, #2815, #2857, etc.) - Added a new command
restoreto batch restore files in trash (#3657) - Added a new command
summaryto show tree summary under a directory (#3381) - Supports using FoundationDB as metadata engine (#2581, #2824)
- Supports using GlusterFS as object storage (#3840, #3869)
- Supports using GETFLAGS & SETFLAGS in
ioctl(#2346, #2859) - Supports using
jfs://as schema for thesynccommand (#3161) - cmd/mount: add a new option
--update-fstabto add/update fstab (#2462, #2997) - cmd/mount: add a new option
--verify-cache-checksumto adjust the checksum strategy for cache files (#2626) - cmd/mount: add a new option
--cache-scan-intervalto customize the interval for large cache directories (#2692) - cmd/mount: add a new option
--skip-dir-nlinkto reduce transaction conflicts in certain cases (#3285, #3322) - cmd/mount: add a new option
--cache-evictionto specify the eviction policy (#3478) - cmd/mount: add a new option
--prefix-internalto prefix internal files by.jfs(#3567) - cmd/mount: add a new option
--root-squashto map root user to an unprivileged one (#3575, #3579) - cmd/mount: add a new option
--atime-modeto specify the atime update policy (#3521, #3585, #3591) - cmd/umount: add a new option
--flushto wait for all staging chunks to be flushed (#3224) - cmd/webdav: add new options
--cert-fileand--key-fileto support basic authentication and TLS (#3146, #3156) - cmd/format: add a new option
--encrypt-algoto specify the encryption algorithm (aes256 or chacha20) for data objects (#2330) - cmd/format&mount: add a new option
--storage-classto specify the storage class used for the object storage (#3534, #3588) - cmd/config: add a new option
--dir-statsto enable constantly track of directory usage (#3257, #3276, #3277, etc.) - cmd/config: add new options
--upload-limitand--download-limitto set default bandwidth limits for the volume (#3574, #3589) - cmd/fsck: add a new option
--repairto repaire broken directories (#2654, #2785) - cmd/dump: add a new option
--keep-secret-keyto keep secret key intact during dumping (#2699) - cmd/status: add a new option
--moreto show information about trash files/slices and pending deleted files/slices (#2977, #3085, #3145) - cmd/sync: add a new option
--manager-addrto customize the IP and port of the manager node (#3912) - cmd/sync: add a new option
--existingto skip creating new files on the destination (#3566) - cmd/sync: add a new option
--ignore-existingto skip updating files that already exist on the destination (#3566) - meta/redis: support specifying
tls-cert-file,tls-key-fileandtls-ca-cert-filein the META-URL query string (#3388, #3403) - meta/postgres: support specifying one schema by
search_pathin the META-URL query string to replace the default one (#2663) - chunk: add upload delay metrics (#2713)
- object: support listing with delimiter (#2813)
- object: add the Copy interface to copy an object within the object storage (#3581)
- object/hdfs: support configuring the number of replications by
dfs.replication(#2680) - object/hdfs: support more formats of bucket path (#3517, #3528, #3577, #3713)
- hadoop: add an option
no-sessionto disable session management (#3750)
Changed
- cmd/format: add default MinClientVersion to prevent old clients (#3871)
- cmd/mount: don't mount again if the mount point is already mounted by the same juicefs volume (#2979, #3059)
- cmd/mount: allow setting heartbeat to 0 (used for embedded metadata engines) (#3471)
- cmd/mount: make the format configuration reloadable without re-mount (#2994)
- cmd/mount: remove gops agent (#2884)
- cmd/status: show detailed plock records for sessions (#2627)
- cmd/status: add IP addresses to the session info (#3464)
- cmd/info: show locks of a certain file (#3001)
- cmd/info: support fast mode to get recursive stats of a directory more quickly (#3296, #3317, #3340, #3423)
- cmd/gc: support cleaning expired trash files, delfiles and delslices (#3022)
- cmd/fsck: ignore chunks of deleted files (#3832)
- cmd/dump&load: support dumping to or loading from a gzip compressed JSON file (#2908)
- cmd/wamrup: warm up metadata as well when open cache is enabled (#3185)
- cmd/rmr: skip trash directories when removing entries (#3179)
- cmd/sync: read large file from sftp in parallel (#3933)
- cmd/sync: list file systems in parallel (#3769, #3782)
- meta/redis: skip setting
maxmemory_policyif this field does not exist (#3888) - meta/sql: add index to column refs in sliceRef to speed up the
doCleanupSlicesfunction (#3842) - chunk: disable refreshCacheKeys if interval < 0 (#2865)
- object/hdfs: support using base64 encoded keytab for hdfs (#3818, #3874)
- object/sftp: try public keys before interactive password (#3886)
- utils: write syslog in background (#3967)
- hadoop: reduce memory usage (#2580, #2592, #2620)
- hadoop: treat user 'root' as an unprivileged user (#3213)
- hadoop: print go log messages to the Java log (#3420)
Bugfix
- cmd: fix the issue that some commands (e.g. info) may fail if internal data is very large (#3850)
- cmd: set the correct GOMAXPROCS value when running inside container (#2935)
- cmd/mount: fix the issue that go-fuse log may not be printed when running in daemon mode (#3206)
- cmd/gateway: fix the issue that List may fail if there's a symlink pointing to a file in another file system (#3879)
- cmd/sync: fix the issue that for
jfsschema customized endpoint is not passed to the worker (#3922) - cmd/sync: fix the issue that
--linksdoes not work for symlinks pointing to a directory (#3942) - cmd/sync: fix the issue that umask is not correctly applied (#3784)
- cmd/sync: fix the issue that environments are not properly shared in cluster mode (#3254)
- meta: fix the issue that baseMeta.fmt is not atomically updated (#3956)
- meta: fix the issue that files may be created under a directory that is already in trash (#3864)
- meta: fix the issue that mtime is not correctly updated during writing (#3552)
- meta: fix the issue that file attribute may be overwritten in some cases (#3766)
- meta/redis: pass all gids to the LUA script to check permission (#3902)
- meta/tkv: fix the issue that attr may be nil during dumping if the inode key is missing (#3833)
- meta/memkv: fix the conflict between scan and write operations (#3838)
- vfs: fix ioctl result and newly support the
FS_IOC_FSGETXATTRcommand (#3936) - vfs: fix the deadlock under concurrent truncate and release (#3457)
- fs: limit the maximum resolve depth for symlinks (#3896)
- object/sql: fix the issue that MySQL may not properly handle some special characters (#3299, #3303)
- object/ceph: fix the error handling to put empty file, range get and get non-exist object (#3835, #3855)
- metrics: fix the issue that sometimes object metrics may be missing (#3853)
- hadoop: fix the method to obtain jarPath on Windows (#3907)
- hadoop: fix the issue that the generated uid/gid may overflow int32 when using SQL metadata engines (#3680)
Note: all bug fixes in v1.0.2, v1.0.3 and v1.0.4 are also included in this release.