3.7. RADOS 块设备 (RBD)
改进了 librbd small I/O 性能
在以前的版本中,在基于 NVMe 的 Ceph 集群中,内部线程架构存在限制,导致单个 librbd 客户端难以达到 20K 4KiB IOPS。
在这个版本中,librbd 切换到新的基于 ASIO 的 neorados API 上的异步响应器模型,从而潜在地将小 I/O 吞吐量增加几倍并降低延迟。
构建用于清除过期 RBD 镜像的调度
在以前的版本中,存储管理员可以为 rbd trash purge
命令设置类似 cron 的作业。
在这个版本中,内置的计划可用于清除过期的 RBD 镜像。rbd trash purge schedule add
和相关的命令可用于配置 RBD 垃圾箱,以根据定义的调度自动清除过期的镜像。
如需更多信息,请参阅 Red Hat Ceph Storage 块设备指南中的定义自动垃圾回收调度一节。
使用新的 ceph-immutable-object-cache
守护进程提供不可变对象的读取
在这个版本中,新的 ceph-immutable-object-cache
守护进程可以部署到虚拟机监控程序节点上,为不可变对象(如父镜像快照)的读取提供服务。新的 parent_cache
librbd 插件在每个从父镜像读取时与 守护进程协调,根据需要将结果添加到缓存中。如果多个虚拟机同时共享金级镜像,这可以减少延迟。
如需更多信息,请参阅 Red Hat Ceph Storage Block device 指南 中的管理 `ceph-immutable-object-cache` 守护进程一章。
支持在基于 librbd 的客户端中发送压缩或不可压缩的提示
在以前的版本中,无论数据是压缩还是不可压缩,都无法提示底层 OSD 对象存储后端。
在这个版本中,可以使用 rbd_compression_hint
配置选项向底层 OSD 对象存储后端提示数据是压缩还是不压缩。这可以按镜像、每个池或全局方式完成。
如需更多信息,请参阅 Red Hat Ceph Storage 块设备指南中的块设备输入和输出选项部分。
支持覆盖 librbd 客户端中的 read-from-replica 策略
在以前的版本中,无法限制DC/AZ 网络流量,因为当集群跨越数据中心扩展时,Primary OSD 可能会与 PG 中的其他 OSD 相比具有较高的延迟和成本链接。
在这个版本中,rbd_read_from_replica_policy
配置选项现已可用,可用于发送读取到随机 OSD 或 PG 中最接近的 OSD,如 CRUSH map 以及 CRUSH 层次结构中的客户端位置所定义。这可以按镜像、每个池或全局方式完成。
如需更多信息,请参阅 Red Hat Ceph Storage 块设备指南中的块设备输入和输出选项部分。
在线重新解析 RBD 镜像
在以前的版本中,为在底层 OSD 对象存储中分配为零且已完全分配的镜像扩展回收空间非常繁琐,容易出错。在这个版本中,新的 rbd sparsify
命令可用于扫描镜像的零数据区块,并在底层 OSD 对象存储中取消分配对应的范围。
ocf:ceph:rbd 集群资源代理支持命名空间
在以前的版本中,无法将 ocf:ceph:rbd 集群资源代理用于命名空间中存在的镜像。
在这个版本中,新的 pool_namespace
资源代理参数可用于处理命名空间中的镜像。
RBD 镜像可以立即导入
使用 rbd import
命令时,新镜像仅可在完全填充后使用。
在这个版本中,镜像实时迁移功能被扩展为支持外部数据源,并可用作 rbd import
的替代选择。新镜像可以链接到本地文件、通过 HTTP(S) 或远程 Amazon S3 兼容存储桶以 raw
、qcow
或 qcow2
格式提供的远程文件,并可以立即使用。镜像填充为后台操作,可以在处于活动状态时使用时运行。
支持 librbd 中的 LUKS 加密
librbd 上的 QEMU LUKS 加密或 dm-crypt 内核模块的分层存在一个主要限制,即写时复制克隆镜像必须使用与其父镜像相同的加密密钥。在这个版本中,在 librbd 中包含了对 LUKS 加密的支持。新的"rbd encryption format"命令现在可以用于将镜像格式化为一个 luks1
或 luks2
加密格式。