summaryrefslogtreecommitdiffstats
path: root/doc/release-notes/6.0.md
blob: cbfa8a877e322962cd612605b091de5dc181cc21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Release notes for Gluster 6.0

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.

- [Announcements](#announcements)
- [Major changes and features](#major-changes-and-features)
- [Major issues](#major-issues)
- [Bugs addressed in the release](#bugs-addressed)

## Announcements

1. Releases that receive maintenance updates post release 6 are, 4.1 and 5
([reference](https://www.gluster.org/release-schedule/))

2. Release 6 will receive maintenance updates around the 10th of every month
for the first 3 months post release (i.e Apr'19, May'19, Jun'19). Post the
initial 3 months, it will receive maintenance updates every 2 months till EOL.
([reference](https://lists.gluster.org/pipermail/announce/2018-July/000103.html))

3. 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](https://docs.gluster.org/en/latest/Upgrade-Guide/upgrade_to_6/).

This deprecation was announced at the gluster-users list [here](https://lists.gluster.org/pipermail/gluster-users/2018-July/034400.html).

Features deprecated:

- Block device (bd) xlator
- Decompounder feature
- Crypt xlator
- Symlink-cache xlator
- Stripe feature
- Tiering support (tier xlator and changetimerecorder)

## Major changes and features

### Highlights

- Several stability fixes addressing,
  - coverity, clang-scan, address sanitizer and valgrind reported issues
  - removal of unused and hence, deprecated code and features
- Client side inode garbage collection
  - This release addresses one of the major concerns regarding FUSE mount
  process memory footprint, by introducing client side inode garbage collection
  - See [standalone](#standalone) section for more details
- Performance Improvements
  - `--auto-invalidation` on FUSE mounts to leverage kernel page cache more
  effectively

Features are categorized into the following sections,

- [Management](#management)
- [Standalone](#standalone)
- [Developer](#developer)

### Management

**NOTE:** There have been several stability improvements around the brick
multiplexing feature

#### GlusterD2

GlusterD2 (or GD2, in short) was planned as the next generation management
service for Gluster project.

Currently, GD2s main focus is not replacing `glusterd`, but to serve as a thin
management layer when using gluster with container orchestration systems.

There is no specific update around GD2 provided as a part of this release.

### Standalone

#### 1. client-side inode garbage collection via LRU list

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.

#### 2. Glusterfind tool enhanced with a filter option

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,

1. Pre command ([reference](https://docs.gluster.org/en/latest/GlusterFS%20Tools/glusterfind/#pre-command)):
- 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`

2. Query command:
- 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`

#### 3. FUSE mounts are enhanced to handle interrupts to blocked lock requests

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.

#### 4. Optimized/pass-through distribute functionality for 1-way distributed volumes

**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.

#### 5. Options introduced to disable invalidations of kernel page cache

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,

- Setting `--auto-invalidation` option to "no" on the glusterfs FUSE mount
process
- Disabling the volume option `performance.global-cache-invalidation`

This enables better performance as the data is served from the kernel page cache
where possible.

#### 6. Changes to gluster based SMB share management

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.

#### 7. ctime feature is enabled by default

The ctime feature which maintains (c/m) time consistency across replica and
disperse subvolumes is enabled by default.

Also, with this release, a single option is provided to enable/disable ctime
feature,

```
#gluster vol set <volname> ctime <on/off>
```

**NOTE:** The time information used is from clients, hence it's required that
clients are synced with respect to their times, using NTP or other such means.

**Limitations:**
- Mounting gluster volume with time attribute options (noatime, realatime...)
  is not supported with this feature
- This feature does not guarantee consistent time for directories if the hashed
  sub-volume for the directory is down
- Directory listing is not supported with this feature, and may report
  inconsistent time information
- Older files created before upgrade, would witness update of ctime upon
  accessing after upgrade [BUG:1593542](https://bugzilla.redhat.com/show_bug.cgi?id=1593542)

### Developer

#### 1. Gluster code can be compiled and executed using [TSAN](https://clang.llvm.org/docs/ThreadSanitizer.html)

While configuring the sources for a build use the extra option `--enable-tsan`
to enable thread sanitizer based builds.

#### 2. gfapi: A class of APIs have been enhanced to return pre/post gluster_stat information

A set of [apis](https://github.com/gluster/glusterfs/blob/release-6/api/src/gfapi.map#L245) 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.

## Major issues

**None**

## Bugs addressed

Bugs addressed since release-5 are listed below.
<TODO>