v0.87 Giant released

This release will form the basis for the stable release Giant, v0.87.x.  Highlights for Giant include:

RADOS Performance: a range of improvements have been made in the OSD and client-side librados code that improve the throughput on flash backends and improve parallelism and scaling on fast machines. 

CephFS: we have fixed a raft of bugs in CephFS and built some basic journal recovery and diagnostic tools.  Stability and performance of single-MDS systems is vastly improved in Giant.  Although we do not yet recommend CephFS for production deployments, we do encourage testing for non-critical workloads so that we can better guage the feature, usability, performance, and stability gaps. 

Local Recovery Codes: the OSDs now support an erasure-coding scheme that stores some additional data blocks to reduce the IO required to recover from single OSD failures. 

Degraded vs misplaced: the Ceph health reports from ‘ceph -s’ and related commands now make a distinction between data that is degraded (there are fewer than the desired number of copies) and data that is misplaced (stored in the wrong location in the cluster).  The distinction is important because the latter does not compromise data safety. 

Tiering improvements: we have made several improvements to the cache tiering implementation that improve performance.  Most notably, objects are not promoted into the cache tier by a single read; they must be found to be sufficiently hot before that happens. 

Monitor performance: the monitors now perform writes to the local data store asynchronously, improving overall responsiveness. 

Recovery tools: the ceph_objectstore_tool is greatly expanded to allow manipulation of an individual OSDs data store for debugging and repair purposes.  This is most heavily used by our QA infrastructure to exercise recovery code. 

UPGRADE SEQUENCING

If your existing cluster is running a version older than v0.80.x Firefly, please first upgrade to the latest Firefly release before moving on to Giant.  We have not tested upgrades directly from Emperor, Dumpling, or older releases. 

We have tested:

Firefly to Giant

Dumpling to Firefly to Giant

Please upgrade daemons in the following order:

Monitors

OSDs

MDSs and/or radosgw

Note that the relative ordering of OSDs and monitors should not matter, but we primarily tested upgrading monitors first. 

UPGRADING FROM V0.80X FIREFLY

The client-side caching for librbd is now enabled by default (rbd cache = true).  A safety option (rbd cache writethrough until flush = true) is also enabled so that writeback caching is not used until the library observes a ‘flush’ command, indicating that the librbd users is passing that operation through from the guest VM.  This avoids potential data loss when used with older versions of qemu that do not support flush. 

The ‘rados getxattr …’ command used to add a gratuitous newline to the attr value; it now does not. 

The *_kb perf counters on the monitor have been removed.  These are replaced with a new set of *_bytes counters (e.g., cluster_osd_kbis replaced by cluster_osd_bytes). 

The rd_kb and wr_kb fields in the JSON dumps for pool stats (accessed via the ceph df detail -f json-pretty and related commands) have been replaced with corresponding *_bytes fields.  Similarly, the total_space, total_used, and total_avail fields are replaced with total_bytes, total_used_bytes, and total_avail_bytes fields. 

The rados df --format=json output read_bytes and write_bytes fields were incorrectly reporting ops; this is now fixed. 

The rados df --format=json output previously included read_kb and write_kb fields; these have been removed.  Please useread_bytes and write_bytes instead (and divide by 1024 if appropriate). 

The experimental keyvaluestore-dev OSD backend had an on-disk format change that prevents existing OSD data from being upgraded.  This affects developers and testers only. 

mon-specific and osd-specific leveldb options have been removed.  From this point onward users should use the leveldb_* generic options and add the options in the appropriate sections of their configuration files.  Monitors will still maintain the following monitor-specific defaults:

CephFS support for the legacy anchor table has finally been removed.  Users with file systems created before firefly should ensure that inodes with multiple hard links are modified prior to the upgrade to ensure that the backtraces are written properly.  For example:

sudo find /mnt/cephfs -type f -links +1 -exec touch \{\} \;

We disallow nonsensical ‘tier cache-mode’ transitions.  From this point onward, ‘writeback’ can only transition to ‘forward’ and ‘forward’ can transition to 1) ‘writeback’ if there are dirty objects, or 2) any if there are no dirty objects.