Comment 0 for bug 1728739

Revision history for this message
Billy Olsen (billy-olsen) wrote :

[Impact]

Attempting to map an rbd image using the 4.4 LTS (Xenial) kernel client from a Jewel or Luminous Ceph cluster with optimal tunables fails due to feature set mismatch.

The Jewel release of Ceph introduced a new set of CRUSH tunables. These tunables were first introduced in the 4.5 Linux kernel and are thus not available in the 16.04 LTS 4.4 Linux Kernel. Attempting to map RBD images as block devices will fail due to not being able to understand these new tunables:

(from kern.log)

Oct 30 21:19:05 ceph-7 kernel: [ 815.674075] Key type ceph registered
Oct 30 21:19:05 ceph-7 kernel: [ 815.676862] libceph: loaded (mon/osd proto 15/24)
Oct 30 21:19:05 ceph-7 kernel: [ 815.678970] rbd: loaded (major 251)
Oct 30 21:19:05 ceph-7 kernel: [ 815.689556] libceph: mon0 10.5.0.19:6789 feature set mismatch, my 106b84a842a42 < server's 40106b84a842a42, missing 400000000000000
Oct 30 21:19:05 ceph-7 kernel: [ 815.692897] libceph: mon0 10.5.0.19:6789 missing required protocol features

Support for the new CRUSH tunables were added in upstream kernel 4.5 in http://www.spinics.net/lists/ceph-devel/msg28421.html.

[Test Case]

1. Deploy a Jewel or Luminous Ceph cluster.
2. Create rbd image suitable for the kernel client:
  $ rbd create --pool rbd --image-feature layering --size 1G test
3. Map the rbd image to the local server:
  $ rbd map --pool rbd test

[Regression Potential]

Minimal. Code is limited to kernel rbd driver and new code should primarily affect clients connecting to clusters with the new tunables options.

[Additional Info]

A workaround is to change the crush tunables configured for the Ceph cluster to a legacy version (hammer or lower) via:

$ ceph osd crush tunables hammer

However, changing the tunables to hammer fails to allow the cluster to take advantage of newer placement strategies which reduces the amount of data movement throughout the cluster.