Ceph luminous rbd map永远挂了

Ceph luminous rbd map hangs forever

运行 一个 1 节点的 ceph 集群,并使用来自另一个节点的 ceph-client。 Qemu 在 RBD 安装上运行良好。当我尝试在 ceph 客户端上挂载 RBD 块设备时,出现无限期挂起且没有输出。如何诊断问题?

系统是 ubuntu 16.04 服务器和 Ceph Luminous。

sudo ceph tell osd.* version
{
    "version": "ceph version 12.2.2 (cf0baeeeeba3b47f9427c6c97e2144b094b7e5ba) luminous (stable)"
}


ceph -s
  cluster:
    id:     4bfcc109-e432-4ac0-ba9d-bf81243aea
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum gcmaster
    mgr: gcmaster(active)
    osd: 1 osds: 1 up, 1 in

  data:
    pools:   1 pools, 128 pgs
    objects: 1512 objects, 5879 MB
    usage:   7356 MB used, 216 GB / 223 GB avail
    pgs:     128 active+clean

rbd info gcbase
rbd image 'gcbase':
    size 512 MB in 128 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.376974b0dc51
    format: 2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
    flags: 
    create_timestamp: Fri Dec 29 17:58:02 2017

这永远挂起

rbd map gcbase --pool rbd

也是如此

rbd map typo_gcbase --pool rbd

dmesg 显示

Dec 29 13:27:32 cephclient1 kernel: [85798.195468] libceph: mon0 192.168.1.55:6789 feature set mismatch, my 106b84a842a42 < server's 40106b84a842a42, missing 400000000000000
Dec 29 13:27:32 cephclient1 kernel: [85798.222070] libceph: mon0 192.168.1.55:6789 missing required protocol features

dmesg 的输出表明发生了什么:集群需要一个 libceph 内核模块不支持的功能位。

有问题的功能位是 CEPH_FEATURE_CRUSH_TUNABLES5、CEPH_FEATURE_NEW_OSDOPREPLY_ENCODING 或 CEPH_FEATURE_FS_FILE_LAYOUT_V2(它们是重叠的,因为它们是同时引入的)仅在内核 4.5 上可用,而 Ubuntu 16.04 使用 4.4 内核。

一个类似的问题(尽管与 CephFS 相关)came up on the mailing list 以及可能的解决方案:

Yes, you should be able to set your CRUSH tunables profile to hammer with "ceph osd crush tunables hammer".

这将禁用一些功能,但应该使旧内核与集群兼容。

或者,您可以升级到主线内核或更新的 OS 版本。