Ceph 启用对象映射功能

shan

Hammer 版本带来了对 RBD 镜像的新功能的支持,称为对象映射。对象映射跟踪镜像中实际分配的块以及它们的位置。这对于克隆的操作(如调整大小、导入、导出、展平和大小计算)特别有用,因为客户端不需要计算每个对象的位置。客户端只需在该表中查找即可。

目前有几个可用功能

  • layering:分层支持,ID 为 1
  • striping:条带化 v2 支持,ID 为 2
  • exclusive-lock:独占锁支持,ID 为 4
  • object-map:对象映射支持(需要独占锁),ID 为 8

要启用一个功能,您有两种选择

  • 使用带有 rbd 命令的 CLI
  • 通过在 ceph.conf 中使用 rbd_default_features 标志

如果您只想使用单个选项,只需放置其 ID,如果您想要更多功能,则必须求和 ID。例如:要使用 exclusive-lock,只需执行

$ rbd create bar -s 1024 --image-format=2 --image-features=4
$ rbd info bar
rbd image 'bar':
        size 1024 MB in 256 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.5e7d2ae8944a
        format: 2
        features: exclusive
        flags:

同样在您的 ceph.conf 中使用 rbd_default_features = 4

要启用 object-map,您需要 exclusive-lock,因此您需要求和 4+8

$ rbd create bar -s 1024 --image-format=2 --image-features=12
$ rbd info bar
rbd info bar
rbd image 'bar':
        size 1024 MB in 256 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.5e962ae8944a
        format: 2
        features: exclusive, object map
        flags:

同样在您的 ceph.conf 中使用 rbd_default_features = 12

如果您想检查映射

$ rados -p rbd ls |grep 5ea22ae8944a
rbd_header.5ea22ae8944a
rbd_object_map.5ea22ae8944a

$ rados -p rbd get rbd_object_map.5ea22ae8944a rbd_object_map.5ea22ae8944a

未来的 CLI 版本会更容易,因为您不再需要使用数字。将使用功能的正确名称。在创建镜像后,您也可以添加更多功能。

$ rbd create leseb -s 1024 --image-format 2 --image-feature exclusive-lock
$ rbd feature enable leseb object-map

尽情享受吧!