This is a major release that includes a range of code improvements and stability
fixes along with a few features as noted below.
A selection of the key features and changes are documented in this page.
A full list of bugs that have been addressed is included further below.
Releases that receive maintenance updates post release 6 are, 4.1 and 5
(reference)
Release 6 will receive maintenance updates around the 30th of every month
for the first 3 months post release (i.e Mar'19, Apr'19, May'19). Post the
initial 3 months, it will receive maintenance updates every 2 months till EOL.
(reference)
A series of features/xlators have been deprecated in release 6 as follows,
for upgrade procedures from volumes that use these features to release 6 refer
to the release 6 upgrade guide.
This deprecation was announced at the gluster-users list here.
Features deprecated:
--auto-invalidation
during mount.Features are categorized into the following sections,
Stability improvements for brick-mux usecases.
GlusterD2 (or GD2, in short) was planned as a GenNext management service for Gluster project. At present, GD2's main focus is not replacing GD1 (or current glusterd
) entirely, but be a thin layer in Gluster's Container story.
With this glusterfs release, there is no specific update we will provide about GD2.
gluster-ansible project is implemented to deploy glusterfs using ansible and is the recommended way of deploying glusterfs, as it gives consistency in your deployment.
It is not mandatory to only depend on ansible playbooks, as community has many users who use different mechanism, but plan is to make sure every one would follow best practice guidelines, which is implemented in gluster-ansible
already.
A FUSE mount's inode cache can now be limited to a maximum number, thus reducing
the memory footprint of FUSE mount processes.
See the lru-limit option in man 8 mount.glusterfs
for details.
NOTE: Setting this to a low value (say less than 4000), will evict inodes from
FUSE and Gluster caches at a much faster rate, and can cause performance
degrades. The setting has to be determined based on the available client memory and required
performance.
glusterfind tool has an added option "–type", to be used with the "–full"
option. The option supports finding and listing files or directories only, and
defaults to both if not specified.
Example usage with the pre and query commands are given below,
Lists both files and directories in OUTFILE:
glusterfind pre SESSION_NAME VOLUME_NAME OUTFILE
Lists only files in OUTFILE:
glusterfind pre SESSION_NAME VOLUME_NAME OUTFILE --type f
Lists only directories in OUTFILE:
glusterfind pre SESSION_NAME VOLUME_NAME OUTFILE --type d
Lists both files and directories in OUTFILE:
glusterfind query VOLUME_NAME --full OUTFILE
Lists only files in OUTFILE:
glusterfind query VOLUME_NAME --full --type f OUTFILE
Lists only directories in OUTFILE:
glusterfind query VOLUME_NAME --full --type d OUTFILE
FUSE mounts are enhanced to handle interrupts to blocked locks.
For example, scripts using the flock (man 1 flock
) utility without the -n(nonblock)
option against files on a FUSE based gluster mount, can now be interrupted when
the lock is not granted in time or using the -w option with the same utility.
NOTE: There are no user controllable changes with this feature
The distribute xlator now skips unnecessary checks and operations when the
distribute count is one for a volume, resulting in improved performance.
For workloads, where multiple FUSE client mounts do not concurrently operate on
any files in the volume, it is now possible to maintain a longer duration kernel
page cache using the following options in conjunction,
--auto-invalidation
option to "no" on the glusterfs FUSE mountperformance.global-cache-invalidation
This enables better performance as the data is served from the kernel page cache
where possible.
Previously all GlusterFS volumes were being exported by default via smb.conf in
a Samba-CTDB setup. This includes creating a share section for CTDB lock volume
too which is not recommended. Along with few syntactical errors these scripts
failed to execute in a non-Samba setup in the absence of necessary configuration
and binary files.
Hereafter newly created GlusterFS volumes are not exported as SMB share via
Samba unless either of 'user.cifs' or 'user.smb' volume set options are enabled
on the volume. The existing GlusterFS volume share sections in smb.conf will
remain unchanged.
The ctime features which maintains (c/m) time consistent across replica and disperse subvolumes is enabled by default now.
Also with this release, single option is provided to enable/disable ctime feature.
#gluster vol set <volname> ctime <on/off>
In previous releases, to enable the ctime feature, it was required to enable following two options.
#gluster vol set <volname> utime on
#gluster vol set <volname> ctime on
Pre-requisite:
The times are taken from client. Hence it's required that clients are NTP configured.
Limitations:
The existing limitations still holds good. Mounting gluster volume with time attribute
options (noatime, realatime…) is not supported with this feature - Certain entry
operations (with differing creation flags) would reflect an eventual consistency w.r.t
the time attributes - This feature does not guarantee consistent time for directories
if hashed sub-volume for the directory is down - readdirp (or directory listing) is not
supported with this feature- Older files created before upgrade, would witness update
of ctime upon accessing after upgrade BUG:1593542
While configuring the sources for a build use the extra option --enable-tsan
to enable thread sanitizer based builds.
A set of apis have been enhanced to return pre/post gluster_stat information.
Applications using gfapi would need to adapt to the newer interfaces to compile
against release-6 apis. Pre-compiled applications, or applications using the
older API SDK will continue to work as before.
Bugs addressed since release-5 are listed below.
<TODO>
Finish the following:
space-efficient userspace implementation of reflink (with some
limitations) #377
[RFE] Improve IPv6 support in GlusterFS #192
Production-level TLS support #293
gfapi: New apis as FOPS return the associated (iattr/pre/post)
attributes #389
Add support for statx #273
Improve SOS report plugin maintainance #224
revisit all the options' ranges again. #194
Changes to options tables in xlators #302
storage/posix: cache stat info in the inode context #285
Add an additional field to xlator struct to tag the support level #430
Move unsupported xlators to experimental status #399
Implement proper cleanup sequence #404
Heal performance improvements
Move fields from xdata into protocol definition #67
Test and fix bugs encountered when cluster.lookup-optimize is set to
on #118
Fix or eliminate synctasks #144
Improve the ability to scale gluster volumes by 1 (disk/brick) #169
[RFE] GFID2 - File type in GFID #207
Small file performance on Gluster #340
Posix framework to serve iatt information from extended attribute. #442
Tests and code sanity: