注意
本文档适用于 Ceph 开发版本。
Squid
Squid 是 Ceph 的第 19 个稳定版本。
v19.2.2 Squid
这是 Squid 系列的第二个热修复版本。
值得注意的变化
这个热修复版本解决了在使用 CopyObject 将对象复制到自身时出现的 RGW 数据丢失问题。https://tracker.ceph.com/issues/66286,与这些对象相关联的任何尾对象都被错误地标记为垃圾回收。
更改日志
squid: rgw: 复制对象到自身时保留尾部 (pr#62711, cbodley)
v19.2.1 Squid
这是 Squid 系列的第一个回滚版本。
值得注意的变化
CephFS: 命令fs subvolume create现在允许通过提供选项--earmark与 NFS 或 SMB 服务所需的唯一标识符一起进行标记子卷。子卷的标记字符串默认为空。要删除已存在的标记,可以将其分配为空字符串。此外,已添加命令ceph fs subvolume earmark set, ceph fs subvolume earmark get, and ceph fs subvolume earmark rm来从给定子卷设置、获取和删除标记。
CephFS: 扩展了 CephFS 虚拟扩展属性的 removexattr 支持。
RADOS: 已修复 balancer mgr 模块中的性能瓶颈。
RADOS: 基于在基于 HDD 的 Ceph 集群上进行的规模测试,发现使用 mClock 进行调度在多个 OSD 片段的情况下不是最优的。例如,在具有多个 OSD 节点故障的测试集群中,发现客户端吞吐量在多次测试运行中不一致,并报告了多个慢请求。然而,在具有单个 OSD 片段和多个工作线程的相同测试中,在多个测试运行中客户端和恢复吞吐量的一致性明显更好。
osd_op_num_shards_hdd = 1(之前为 5)
osd_op_num_threads_per_shard_hdd = 5(之前为 1)
mgr/REST: REST 管理器模块将根据“max_requests”选项修剪请求。
更改日志
doc/rgw/notification: 添加缺失的管理员命令 (pr#60609, Yuval Lifshitz)
squid: [RGW] 修复不符合 RFC 标准的 HEAD 请求的处理 (pr#59123, liubingrun)
squid: 对内核设备丢弃进行一系列优化 (pr#59065, Adam Kupczyk, Joshua Baergen, Gabriel BenHanokh, Matt Vandermeulen)
squid: 添加 Containerfile 和 build.sh 来构建它 (pr#60229, Dan Mick)
squid: AsyncMessenger: 如果它是负数,则不要减少 l_msgr_active_connections (pr#60447, Mohit Agrawal)
squid: blk/aio: 修复长批处理(64+K 条目)提交 (pr#58676, Yingxin Cheng, Igor Fedotov, Adam Kupczyk, Robin Geuze)
squid: blk/KernelDevice: 使用 join() 来等待线程结束更安全 (pr#60616, Yite Gu)
squid: bluestore/bluestore_types: 以另一种方式避免堆缓冲区溢出以保持代码一致性 (pr#58816, Rongqi Sun)
squid: ceph-bluestore-tool: 修复多个 bdev 标签 (pr#59967, Adam Kupczyk, Igor Fedotov)
squid: ceph-volume: 添加对ceph-bluestore-tool zap-device (pr#59968, Guillaume Abrioux)
squid: ceph-volume: 添加新的类 UdevData (pr#60091, Guillaume Abrioux)
squid: ceph-volume: 为加密 OSD 添加 TPM2 令牌注册支持 (pr#59196, Guillaume Abrioux)
squid: ceph-volume: 不要将 LV 的符号链接转换为真实路径 (pr#58954, Guillaume Abrioux)
squid: ceph-volume: 如果它们被分离,则执行源设备 zapping (pr#58964, Guillaume Abrioux, Igor Fedotov)
squid: ceph-volume: 取消不必要的对get_single_lv() (pr#60353, Guillaume Abrioux)
squid: ceph-volume: 修复 dmcrypt 激活回归 (pr#60734, Guillaume Abrioux)
squid: ceph-volume: 修复使用原始 osds 的通用激活 (pr#59598, Guillaume Abrioux)
squid: ceph-volume: 修复 OSD lvm/tpm2 激活 (pr#59953, Guillaume Abrioux)
squid: ceph-volume: 将 self.osd_id 传递给 create_id() 调用 (pr#59622, Guillaume Abrioux)
squid: ceph-volume: 切换到新的磁盘排序行为 (pr#59623, Guillaume Abrioux)
squid: ceph.spec.in: 我们需要为所有发行版使用 jsonnet 来进行 make check (pr#60075, Kyr Shatskyy)
squid: cephadm/services/ingress: 修复 keepalived 配置错误 (pr#58381, Bernard Landon)
Squid: cephadm: bootstrap 不应该有“这是 cephadm 的开发版本”消息 (pr#60880, Shweta Bhosale)
squid: cephadm: 如果守护进程的镜像不可用,则发出警告 (pr#59929, Matthew Vernon)
squid: cephadm: 修复名称中包含空格的 apparmor 配置 (pr#58542, John Mulligan)
squid: cephadm: 从 quay.io 拉取容器镜像 (pr#60354, Guillaume Abrioux)
squid: cephadm: 支持 Docker Live Restore (pr#59933, Michal Nasiadka)
squid: cephadm: 更新默认镜像和最新稳定版本 (pr#59827, Adam King)
squid: cephfs,mon: 修复与更新 MDS 标签相关的问题 (pr#59672, Rishabh Dave)
squid: cephfs-shell: 执行“rmdir_helper”命令报告错误 (pr#58810, teng jie)
squid: cephfs: 修复 readdir_cache_cb 函数中的错误,该错误可能会导致我们…pr#58804, Tod Chen)
squid: cephfs_mirror: 提供最后成功快照同步的指标 (pr#59070, Jos Collin)
squid: cephfs_mirror: 更新远程快照中无效元数据的对等状态 (pr#59406, Jos Collin)
squid: cephfs_mirror: 使用 snapdiff api 进行增量同步 (pr#58984, Jos Collin)
squid: 客户端: 对 _ll_fh_exists() 的调用应该持有客户端锁 (pr#59487, Venky Shankar)
squid: 客户端: 在从 mdsmap 获取 mds_gid_t 之前检查 mds 下线状态 (pr#58587, Yite Gu, Dhairya Parmar)
squid: cls/user: 重置统计只返回标记当截断时 (pr#60164, Casey Bodley)
squid: cmake: 使用 ExternalProjects 来构建 isa-l 和 isa-l_crypto 库 (pr#60107, Casey Bodley)
squid: common,osd: 如果测量的 IOPS 不切实际,则使用最后一个有效的 OSD IOPS 值 (pr#60660, Sridhar Seshasayee)
squid: common/dout: 修复 GCC 14 上的 FTBFS (pr#59055, Radoslaw Zarzynski)
squid: common/options: 更改 HDD OSD 片段配置的默认值用于 mClock (pr#59973, Sridhar Seshasayee)
squid: corpus: 使用 mark cls_rgw_reshard_entry forward_inco… 更新子模块 (pr#58923, NitzanMordhai)
squid: crimson/os/seastore/cached_extent: 为 lba 映射添加“刷新”功能 (pr#58957, Xuehan Xu)
squid: crimson/os/seastore/lba_manager: 在重新映射多个映射时执行批量映射分配 (pr#58820, Xuehan Xu)
squid: crimson/os/seastore/onode: 将 hobject_t 添加到 Onode (pr#58830, Xuehan Xu)
squid: crimson/os/seastore/transaction_manager: 在清理段时考虑 backrefs 和 lbas 之间的不一致性是可以接受的 (pr#58837, Xuehan Xu)
squid: crimson/os/seastore: 为 RBM 添加校验和卸载 (pr#59298, Myoungwon Oh)
squid: crimson/os/seastore: 为 RBM 添加写入级别统计 (pr#58828, Myoungwon Oh)
squid: crimson/os/seastore: 定期跟踪事务/冲突/未完成 (pr#58835, Yingxin Cheng)
squid: crimson/osd/pg_recovery: 在启动主恢复时,在找到未找到的对象后推动迭代 (pr#58958, Xuehan Xu)
squid: crimson: 在外星 tp 下使用锁访问 coll_map (pr#58841, Samuel Just)
squid: crimson: 审计并更正 IOInterruptCondition 捕获的时期 (pr#58839, Samuel Just)
squid: crimson: 通过锁定 excl 来简化 obc 加载,并降级为所需的锁 (pr#58905, Matan Breizman, Samuel Just)
squid: debian pkg: 为 ceph-volume 记录 python3-packaging 依赖关系 (pr#59202, Kefu Chai, Thomas Lamprecht)
squid: doc,mailmap: 更新我的电子邮件 / 与 ibm 的关联 (pr#60338, Patrick Donnelly)
squid: doc/ceph-volume: 添加溢出修复程序 (pr#59540, Zac Dover)
squid: doc/cephadm: 添加损坏的 JSON 移除说明 (pr#59663, Zac Dover)
squid: doc/cephadm: 澄清“部署新集群” (pr#60809, Zac Dover)
squid: doc/cephadm: 清理“高级 OSD 服务规范” (pr#60679, Zac Dover)
squid: doc/cephadm: 修正“ceph orch apply”命令 (pr#60432, Zac Dover)
squid: doc/cephadm: 如何从设备获取确切的 size_spec (pr#59430, Zac Dover)
squid: doc/cephadm: 链接到“主机模式”匹配 sect (pr#60644, Zac Dover)
squid: doc/cephadm: 更新 operations.rst (pr#60637, rhkelson)
squid: doc/cephfs: 添加缓存压力信息 (pr#59148, Zac Dover)
squid: doc/cephfs: 添加禁用 mgr/volumes 插件的文档 (pr#60496, Rishabh Dave)
squid: doc/cephfs: 编辑“禁用卷插件” (pr#60467, Zac Dover)
squid: doc/cephfs: 编辑“布局字段”文本 (pr#59021, Zac Dover)
squid: doc/cephfs: 编辑使用内核驱动程序的挂载的第三个 3rd (pr#61080, Zac Dover)
squid: doc/cephfs: 改进“布局字段”文本 (pr#59250, Zac Dover)
squid: doc/cephfs: 改进 cache-configuration.rst (pr#59214, Zac Dover)
squid: doc/cephfs: 重新排列子卷组信息 (pr#60435, Indira Sawant)
squid: doc/cephfs: s/mountpoint/mount point/ (pr#59294, Zac Dover)
squid: doc/cephfs: s/mountpoint/mount point/ (pr#59289, Zac Dover)
squid: doc/cephfs: 使用‘p’标志来设置布局或配额 (pr#60482, TruongSinh Tran-Nguyen)
squid: doc/dev/peering: 更改作用集 num (pr#59062, qn2060)
squid: doc/dev/release-checklist: 检查遥测验证 (pr#59813, Yaarit Hatuka)
squid: doc/dev/release-checklists.rst: 为 squid 启用 rtd (pr#59812, Neha Ojha)
squid: doc/dev/release-process.rst: 新的容器构建/发布过程 (pr#60971, Dan Mick)
squid: doc/dev: 添加“激活最新版本” RTD 步骤 (pr#59654, Zac Dover)
squid: doc/dev: 指示开发人员回滚 (pr#61063, Zac Dover)
squid: doc/dev: 移除“稳定发布和回滚” (pr#60272, Zac Dover)
squid: doc/glossary.rst: 添加“仪表板插件” (pr#60896, Zac Dover)
squid: doc/glossary: 添加“ceph-ansible” (pr#59007, Zac Dover)
squid: doc/glossary: 添加“flapping OSD” (pr#60864, Zac Dover)
squid: doc/glossary: 添加“对象存储” (pr#59424, Zac Dover)
squid: doc/glossary: 在词汇表中添加“PLP” (pr#60503, Zac Dover)
squid: doc/governance: 添加执行委员会责任 (pr#60139, Zac Dover)
squid: doc/governance: 添加 Zac Dover 的更新电子邮件 (pr#60134, Zac Dover)
squid: doc/install: 保持创建的用户的名字字段与 … 一致 (pr#59756, hejindong)
squid: doc/man: 编辑 ceph-bluestore-tool.rst (pr#59682, Zac Dover)
squid: doc/mds: 改进措辞 (pr#59585, Piotr Parczewski)
squid: doc/mgr/dashboard: 修复 TLS 错误 (pr#59031, Mindy Preston)
squid: doc/rados/operations: 改进 health-checks.rst (pr#59582, Anthony D’Atri)
squid: doc/rados/troubleshooting: 改进 log-and-debug.rst (pr#60824, Anthony D’Atri)
squid: doc/rados: 添加“pgs 没有在规定时间内深度清理”信息 (pr#59733, Zac Dover)
squid: doc/rados: 添加 blaum_roth 编码指导 (pr#60537, Zac Dover)
squid: doc/rados: 在 health-checks 中添加 confval 指令 (pr#59871, Zac Dover)
squid: doc/rados: 在 mon-lookup-dns.rst 中添加到 v2 消息的链接 (pr#59794, Zac Dover)
squid: doc/rados: 添加 osd_deep_scrub_interval 设置操作 (pr#59802, Zac Dover)
squid: doc/rados: 修正“完整比率”注释 (pr#60737, Zac Dover)
squid: doc/rados: 记录未找到对象缓存分层场景 (pr#59380, Zac Dover)
squid: doc/rados: 编辑“放置组永远不会清理” (pr#60046, Zac Dover)
squid: doc/rados: 修复 health-checks 中的句子(x 的 2 次) (pr#60931, Zac Dover)
squid: doc/rados: 修复 health-checks 中的句子(x 的 3 次) (pr#60949, Zac Dover)
squid: doc/rados: 使 health-checks.rst 中的句子一致 (pr#60920, Zac Dover)
squid: doc/rados: 标准化“清理”的标记 (pr#60500, Zac Dover)
squid: doc/radosgw/multisite: 修复配置二级区域 -> 更新周期 (pr#60332, Casey Bodley)
squid: doc/radosgw/qat-accel: 更新和添加 QATlib 信息 (pr#58874, Feng, Hualong)
squid: doc/radosgw: 改进 archive-sync-module.rst (pr#60852, Anthony D’Atri)
squid: doc/radosgw: 进一步改进 archive-sync-module.rst (pr#60867, Anthony D’Atri)
squid: doc/radosgw: 改进 config-ref.rst (pr#59578, Anthony D’Atri)
squid: doc/radosgw: 改进 qat-accel.rst (pr#59179, Anthony D’Atri)
squid: doc/radosgw: s/Poliicy/Policy/ (pr#60707, Zac Dover)
squid: doc/radosgw: 更新 rgw_dns_name 文档 (pr#60885, Zac Dover)
squid: doc/rbd: 为镜像命令添加命名空间信息 (pr#60269, N Balachandran)
squid: doc/README.md - 添加有序列表 (pr#59798, Zac Dover)
squid: doc/README.md: 创建可选命令 (pr#59834, Zac Dover)
squid: doc/README.md: 编辑“构建先决条件” (pr#59637, Zac Dover)
squid: doc/README.md: 改进格式 (pr#59785, Zac Dover)
squid: doc/README.md: 改进格式 (pr#59700, Zac Dover)
squid: doc/rgw/account: 在将现有用户迁移到帐户时处理通知主题 (pr#59491, Oguzhan Ozmen)
squid: doc/rgw/d3n: 将缓存目录卷传递给 extra_container_args (pr#59767, Mark Kogan)
squid: doc/rgw/notification: 澄清在升级时通知_v2 的行为 (pr#60662, Yuval Lifshitz)
squid: doc/rgw/notification: 持久性通知队列满的行为 (pr#59233, Yuval Lifshitz)
squid: doc/start: 添加支持的 Squid 发行版 (pr#60557, Zac Dover)
squid: doc/start: 添加 vstart 安装指南 (pr#60461, Zac Dover)
squid: doc/start: 修复“are are”拼写错误 (pr#60708, Zac Dover)
squid: doc/start: 将软件包图表与容器图表分开 (pr#60698, Zac Dover)
squid: doc/start: 更新 os-recommendations.rst (pr#60766, Zac Dover)
squid: doc: 更正指向 Prometheus 文档的链接 (pr#59559, Matthew Vernon)
squid: doc: 记录 Windows CI 作业 (pr#60033, Lucian Petrut)
squid: doc: 记录 mClock 禁用的选项 (pr#60671, Niklas Hambüchen)
squid: doc: 记录清除损坏条目的功能…pr#59078, Neeraj Pratap Singh)
squid: doc: 解释通过监控配置启用镜像的后果 … (pr#60525, Jos Collin)
squid: doc: 修复电子邮件 (pr#60233, Ernesto Puerta)
squid: doc: 修复拼写错误 (pr#59991, N Balachandran)
squid: doc: 调和 ‘mountpoint’ (pr#59291, Anthony D’Atri)
squid: doc: s/Whereas,/Although/ (pr#60593, Zac Dover)
squid: doc: SubmittingPatches-backports - 移除回滚团队 (pr#60297, Zac Dover)
squid: doc: 更新“入门”以链接到 start 而不是 install (pr#59907, Matthew Vernon)
squid: doc: 更新 cephfs-mirroring.rst 中的 Key Idea (pr#60343, Jos Collin)
squid: doc: 更新 Kerberos 设置的 ganesha 在 Ceph 中的 nfs 文档 (pr#59939, Avan Thakkar)
squid: doc: 更新 tests-integration-testing-teuthology-workflow.rst (pr#59548, Vallari Agrawal)
squid: doc: 更新 e-mail 地址治理 (pr#60084, Tobias Fischer)
squid: docs/rados/operations/stretch-mode: 警告设备类不受支持 (pr#59099, Kamoltat Sirivadhna)
squid: global: 在堆上使用 64KiB 缓冲区调用 getnam_r (pr#60127, Adam Emerson)
squid: librados: 使用 CEPH_OSD_FLAG_FULL_FORCE for IoCtxImpl::remove (pr#59284, Chen Yuanrun)
squid: librbd/crypto/LoadRequest: 迁移源镜像的克隆格式 (pr#60171, Ilya Dryomov)
squid: librbd/crypto: 修复从加密导出进行 live-migrating 时的問題 (pr#59145, Ilya Dryomov)
squid: librbd/migration/HttpClient: 避免在关闭后重用 ssl_stream (pr#61095, Ilya Dryomov)
squid: librbd/migration: 在 RawFormat::list_snaps() 中修剪快照范围 (pr#59661, Ilya Dryomov)
squid: librbd: 避免在扁平化时数据损坏(当对象映射不一致时) (pr#61168, Ilya Dryomov)
squid: log: 保存/获取线程名称基础设施 (pr#60279, Milind Changire)
squid: 使 mon 添加地址与 mon 信息一致 (pr#60751, shenjiatong)
squid: mds/QuiesceDbManager: 在迭代之前获取成员请求的状态 (pr#58912, junxiang Mu)
squid: mds: CInode::item_caps 用于两个不同的列表 (pr#56887, Dhairya Parmar)
squid: mds: 按需编码 quiesce 负载 (pr#59517, Patrick Donnelly)
squid: mds: 当头部死亡时,为批量操作找到新的头部 (pr#57494, Xiubo Li)
squid: mds: 修复会话/客户端驱逐命令 (pr#58727, Neeraj Pratap Singh)
squid: mds: 仅在不是本地锁时在 wrlock 上进行 authpin (pr#59097, Patrick Donnelly)
squid: mgr/balancer: 优化 ‘balancer 状态详情’ (pr#60718, Laura Flores)
squid: mgr/cephadm/services/ingress Fix HAProxy 以监听 IPv4 和 IPv6 (pr#58515, Bernard Landon)
squid: mgr/cephadm: 为 OSD 类添加“原始_weight”参数 (pr#59410, Adam King)
squid: mgr/cephadm: 为 cert-store cert/key get 添加 --no-exception-when-missing 标志 (pr#59935, Adam King)
squid: mgr/cephadm: 添加命令以暴露所有守护进程的 systemd 单元 (pr#59931, Adam King)
squid: mgr/cephadm: 提高监控堆栈版本 (pr#58711, Nizamudeen A)
squid: mgr/cephadm: 使 ssh keepalive 设置可配置 (pr#59710, Adam King)
squid: mgr/cephadm: 当某些依赖守护进程被添加/移除时重新部署 (pr#58383, Redouane Kachach)
squid: mgr/cephadm: 在在 rgw 服务 create 上部署守护进程之前更新多站点配置 (pr#60321, Aashish Sharma)
squid: mgr/cephadm: 在更新 rgw 区域端点时使用主机地址 (pr#59948, Aashish Sharma)
squid: mgr/client: 在发送之前验证连接 (pr#58887, NitzanMordhai)
squid: mgr/dashboard: 添加 cephfs 重命名 REST API (pr#60620, Yite Gu)
squid: mgr/dashboard: 在 nvmeof 服务表单中添加组字段 (pr#59446, Afreen Misbah)
squid: mgr/dashboard: 为 nvmeof api 添加 gw_groups 支持 (pr#59751, Nizamudeen A)
squid: mgr/dashboard: 为所有 nvmeof 端点添加 gw_groups (pr#60310, Nizamudeen A)
squid: mgr/dashboard: 添加创建类型为“erasure”的 crush 规则的 restful api (pr#59139, sunlan)
squid: mgr/dashboard: 签出文本更改为登录出 (pr#58988, Prachi Goel)
Squid: mgr/dashboard: 克隆子卷不会列出 _nogroup 如果没有子卷 (pr#59951, Dnyaneshwari talwekar)
squid: mgr/dashboard: 为 kcli bootstrap 脚本提供自定义镜像 (pr#59879, Pedro Gonzalez Gomez)
squid: mgr/dashboard: 仪表板未正确显示 Object/Overview (pr#59038, Aashish Sharma)
squid: mgr/dashboard: 修复添加监听器和 null 问题对于组 (pr#60078, Afreen Misbah)
squid: mgr/dashboard: 修复 s3 账户拥有的桶的桶获取 (pr#60466, Nizamudeen A)
squid: mgr/dashboard: 修复 ceph-users api 文档 (pr#59140, Nizamudeen A)
squid: mgr/dashboard: 修复 rgw-multisite 中的文档链接 (pr#60154, Pedro Gonzalez Gomez)
squid: mgr/dashboard: 修复网关部分错误:“404 - 未找到 RGW 守护进程:无” (pr#60231, Aashish Sharma)
squid: mgr/dashboard: 修复 nvmeof API 中的组名错误 (pr#60348, Nizamudeen A)
squid: mgr/dashboard: 修复仪表板图表中的 NaN 值 (pr#59961, Aashish Sharma)
squid: mgr/dashboard: 修复生命周期问题 (pr#60378, Pedro Gonzalez Gomez)
squid: mgr/dashboard: 修复监听器删除 (pr#60292, Afreen Misbah)
squid: mgr/dashboard: 在编辑 rgw 区域时修复设置压缩类型 (pr#59970, Aashish Sharma)
Squid: mgr/dashboard: 禁止快照名称“.” 和任何包含“/”的内容 (pr#59995, Dnyaneshwari Talwekar)
squid: mgr/dashboard: 处理池的无限值 (pr#61096, Afreen)
squid: mgr/dashboard: 忽略在未找到 cert/key 时引发的异常 (pr#60311, Nizamudeen A)
squid: mgr/dashboard: 将最大命名空间计数增加到 1024 (pr#59717, Afreen Misbah)
squid: mgr/dashboard: 为 osds 引入服务器端分页 (pr#60294, Nizamudeen A)
squid: mgr/dashboard: mgr/dashboard: 在 EC 配置中默认选择不设备 (pr#59811, Afreen Misbah)
Squid: mgr/dashboard: 多站点同步策略改进 (pr#59965, Naman Munet)
Squid: mgr/dashboard: NFS 导出表单修复 (pr#59900, Dnyaneshwari Talwekar)
squid: mgr/dashboard: Nvme mTLS 支持和服务名称更改 (pr#59819, Afreen Misbah)
squid: mgr/dashboard: 在创建池时提供启用基于池的镜像模式的选项 (pr#58638, Aashish Sharma)
squid: mgr/dashboard: 移除 cherrypy_backports.py (pr#60632, Nizamudeen A)
Squid: mgr/dashboard: 从主机 UI 路由(列表)中移除 orch required 装饰器 (pr#59851, Naman Munet)
squid: mgr/dashboard: 在 rbd 创建表单中重新表述专用池帮助程序 (pr#59721, Aashish Sharma)
Squid: mgr/dashboard: RGW 多站点同步移除区域修复 (pr#59825, Naman Munet)
squid: mgr/dashboard: 基于 daemon 名称的 nvmeof 配置 (pr#60604, Nizamudeen A)
Squid: mgr/dashboard: 服务表单主机选择仅显示最多 10 条记录 (pr#59760, Naman Munet)
squid: mgr/dashboard: 在 rgw 概览页面上显示非默认领域同步状态 (pr#60232, Aashish Sharma)
squid: mgr/dashboard: 显示 CEPHADM_FAILED_DAEMON 健康检查中失败的守护进程 (pr#59597, Aashish Sharma)
Squid: mgr/dashboard: 在 Object >> Multi-site >> Sync-policy 中,同步策略不显示所属区域组 (pr#60346, Naman Munet)
Squid: mgr/dashboard: “创建 NFS 导出”页面上的下拉菜单中缺少子卷 (pr#60356, Dnyaneshwari Talwekar)
Squid: mgr/dashboard: 无法编辑桶级别策略的桶的管道配置 (pr#60293, Naman Munet)
squid: mgr/dashboard: 更新 nvmeof 微副本 (pr#59718, Afreen Misbah)
squid: mgr/dashboard: 在迁移到多站点后更新周期 (pr#59964, Aashish Sharma)
squid: mgr/dashboard: 更新 squid 的翻译 (pr#60367, Nizamudeen A)
squid: mgr/dashboard: 使用 grafana 服务器而不是 grafana-server 在 grafana 10.4.0 中 (pr#59722, Aashish Sharma)
Squid: mgr/dashboard: 当通过 cli 创建的用户名包含 $ 时,仪表板中观察到错误的(一半)uid (pr#59693, Dnyaneshwari Talwekar)
squid: mgr/dashboard: 区域详细信息显示数据池值和存储类压缩信息的错误数据 (pr#59596, Aashish Sharma)
Squid: mgr/dashboard: 在主区域创建的区域组级别策略未同步到非主区域 (pr#59892, Naman Munet)
squid: mgr/nfs: 为 apply_export(CephFS) 生成用户_id & access_key (pr#59896, Avan Thakkar, avanthakkar, John Mulligan)
squid: mgr/orchestrator: 修复 orch 守护进程添加 osd 中的加密标志处理 (pr#59473, Yonatan Zaken)
squid: mgr/rest: 修剪请求数组和限制大小 (pr#59372, Nitzan Mordechai)
squid: mgr/rgw: 添加调用 zone_create() 时的重试配置 (pr#59138, Kritik Sachdeva)
squid: mgr/rgwam: 使用 realm/zonegroup/zone 方法参数来更新周期 (pr#59945, Aashish Sharma)
squid: mgr/volumes: 为子卷添加标记 (pr#59894, Avan Thakkar)
squid: 修改容器/软件以支持发布容器和预发布容器的提升 (pr#60962, Dan Mick)
squid: mon/ElectionLogic: 捆绑者 mon 忽略标记为下线的 mon 的提议 (pr#58669, Kamoltat)
squid: mon/MonClient: 处理 ms_handle_fast_authentication 返回 (pr#59306, Patrick Donnelly)
squid: mon/OSDMonitor: 添加 force-remove-snap mon 命令 (pr#59402, Matan Breizman)
squid: mon: 在删除池时移除任何 pg_upmap_primary 映射 (pr#55865, Matan Breizman)
squid: mon: Remove any pg_upmap_primary mapping during remove a pool (pr#58914, Mohit Agrawal)
squid: msg: 在排序位置插入 PriorityDispatchers (pr#58991, Casey Bodley)
squid: node-proxy: 修复处理 RedFish API 时的回归 (pr#59997, Guillaume Abrioux)
squid: node-proxy: 使守护进程发现端点 (pr#58482, Guillaume Abrioux)
squid: objclass: 取消 cls_cxx_gather (pr#57819, Nitzan Mordechai)
squid: orch: 磁盘替换增强 (pr#60486, Guillaume Abrioux)
squid: orch: 重构驱动组规范中的布尔处理 (pr#59863, Guillaume Abrioux)
squid: os/bluestore: 启用异步手动压缩 (pr#58740, Igor Fedotov)
squid: os/bluestore: 修复 BlueFS 分配 bdev 标签保留位置 (pr#59969, Adam Kupczyk)
squid: os/bluestore: 修复 ceph-bluestore-tool allocmap 命令 (pr#60335, Adam Kupczyk)
squid: os/bluestore: 修复多标签修复与 BlueFS 冲突 (pr#60336, Adam Kupczyk)
squid: os/bluestore: 改进 #57722 引入的文档 (pr#60893, Anthony D’Atri)
squid: os/bluestore: 主块设备上的多个 bdev 标签 (pr#59106, Adam Kupczyk)
squid: os/bluestore: 静默警告 (pr#59217, Adam Kupczyk)
squid: os/bluestore: 为慢操作和停滞读取添加警告 (pr#59464, Md Mahamudur Rahaman Sajib)
squid: osd/scheduler: 添加 mclock 队列长度性能计数器 (pr#59035, zhangjianwei2)
squid: osd/scrub: 减少默认深度清理块大小 (pr#59791, Ronen Friedman)
squid: osd/scrub: 仅对操作员清理排除 max_scrubs 限制 (pr#59020, Ronen Friedman)
squid: osd/scrub: 减少 osd_requested_scrub_priority 默认值 (pr#59885, Ronen Friedman)
squid: osd: 修复 require_min_compat_client 处理 msr 规则 (pr#59492, Samuel Just, Radoslaw Zarzynski)
squid: PeeringState.cc: 仅当 num_osds < bucket_max 时才填充 want_acting (pr#59083, Kamoltat)
squid: qa/cephadm: 扩展 iscsi teuth 测试 (pr#59934, Adam King)
squid: qa/cephfs: 修复 TestRenameCommand 并在失败前卸载客户端 (pr#59398, Xiubo Li)
squid: qa/cephfs: 忽略 MDS_UP_LESS_THAN_MAX 的变体 (pr#58788, Patrick Donnelly)
squid: qa/distros: 在 centos 9 节点上重新安装 nvme-cli (pr#59471, Adam King)
squid: qa/rgw/multisite: 为 ‘account create’ 指定 realm/zonegroup/zone 参数 (pr#59603, Casey Bodley)
squid: qa/rgw: 从 2023.1 提高到 2024.1 (pr#61023, Casey Bodley)
squid: qa/rgw: 通过强制 gradle 在 Java 8 上运行来修复 s3 java 测试 (pr#61053, J. Eric Ivancich)
squid: qa/rgw: 强制 Hadoop 在 Java 1.8 下运行 (pr#61120, J. Eric Ivancich)
squid: qa/rgw: 从镜像而不是 archive.apache.org 拉取 Apache 工件 (pr#61101, J. Eric Ivancich)
squid: qa/standalone/scrub: 修复 snaps decode 错误的搜索文本 (pr#58967, Ronen Friedman)
squid: qa/standalone/scrub: 增加状态更新频率 (pr#59974, Ronen Friedman)
squid: qa/standalone/scrub: 移除 TEST_recovery_scrub_2 (pr#60287, Ronen Friedman)
squid: qa/suites/crimson-rados/perf: 添加 ssh 密钥 (pr#61109, Nitzan Mordechai)
squid: qa/suites/rados/thrash-old-clients: 在忽略列表中添加 noscrub, nodeep-scrub (pr#58629, Kamoltat)
squid: qa/suites/rados/thrash-old-clients: 在 centos 9 上使用 N-2 发布进行测试 (pr#58607, Laura Flores)
squid: qa/suites/rados/verify/validater: 增加心跳宽限期 (pr#58785, Sridhar Seshasayee)
squid: qa/suites/rados: 取消 injectfull 以允许清理 (pr#59156, Brad Hubbard)
squid: qa/suites/rbd/iscsi: 启用所有支持的容器主机 (pr#60089, Ilya Dryomov)
squid: qa/suites: 从 fs:valgrind 测试中删除 --show-reachable=yes (pr#59068, Jos Collin)
squid: qa/task: 更新 alertmanager 端点版本 (pr#59930, Nizamudeen A)
squid: qa/tasks/mgr/test_progress.py: 处理预存在的池 (pr#58263, Kamoltat)
squid: qa/tasks/nvme_loop: 更新任务以与新 nvme 列表格式一起工作 (pr#61026, Adam King)
squid: qa/upgrade: 修复确保升级仍在进行的检查 (pr#59472, Adam King)
squid: qa: 调整 krbd_discard_granularity.t 中的预期 io_opt (pr#59232, Ilya Dryomov)
squid: qa: 忽略与容器检查点/恢复相关的 selinux 拒绝 (issue#66640, issue#67117, pr#58808, Venky Shankar)
squid: qa: 在测试 altname 恢复之前加载所有 dirfrags (pr#59521, Patrick Donnelly)
squid: qa: 在设备上删除所有 bluestore 签名 (pr#60021, Guillaume Abrioux)
squid: qa: 抑制 __trans_list_add valgrind 警告 (pr#58790, Patrick Donnelly)
squid: RADOS: 将扩展模式 pg 临时处理泛化以可用于无需扩展模式 (pr#59084, Kamoltat)
squid: rbd-mirror: 使用正确的 ioctx 为命名空间 (pr#59771, N Balachandran)
squid: rbd: “rbd bench”始终写入相同的字节 (pr#59502, Ilya Dryomov)
squid: rbd: 修正 “rbd {group,} rename” 和 “rbd mirror pool” 命令描述 (pr#59602, Ilya Dryomov)
squid: rbd: 处理 --{group,image}-namespace 在 “rbd group image {add,rm}” 中 (pr#61172, Ilya Dryomov)
squid: rgw/beast: 在遇到监听错误时优化 accept (pr#60244, Mingyuan Liang, Casey Bodley)
squid: rgw/http: 记录错误后 finish_request() (pr#59439, Casey Bodley)
squid: rgw/kafka: 重构主题创建以避免 rd_kafka_topic_name() (pr#59754, Yuval Lifshitz)
squid: rgw/lc: 修复桶版本控制暂停时生命周期不起作用 (pr#61138, Trang Tran)
squid: rgw/multipart: 使用 cls_version 避免在部分上传和 multipart 完成之间竞争 (pr#59678, Jane Zhu)
squid: rgw/multisite: 基于未修改的 mdlog_marker 的元数据轮询事件 (pr#60792, Shilpa Jagannath)
squid: rgw/notifications: 修复 radosgw-admin 通知 json (pr#59302, Yuval Lifshitz)
squid: rgw/notifications: 使用 unique_ptr 释放完成指针 (pr#59671, Yuval Lifshitz)
squid: rgw/notify: visit() 返回所有者字符串的副本 (pr#59226, Casey Bodley)
squid: rgw/rados: 不要依赖 IoCtx::get_last_version() 用于异步操作 (pr#60065, Casey Bodley)
squid: rgw: 添加 s3select 使用到日志使用 (pr#59120, Seena Fallah)
squid: rgw: 在错误时减少 qlen/qactive 性能计数器 (pr#59670, Mark Kogan)
squid: rgw: 在加密时解密 multipart get 部分 (pr#60130, sungjoon-koh)
squid: rgw: 忽略未配置的默认区域 (pr#59445, Casey Bodley)
squid: rgw: 在 putobj 中加载复制源桶属性 (pr#59413, Seena Fallah)
squid: rgw: 优化桶列表以跳过命名空间条目的区域 (pr#61070, J. Eric Ivancich)
squid: rgw: 还原与 get_iam_policy_from_attr() 相关的帐户相关更改 (pr#59221, Casey Bodley)
squid: RGWAccessKey::decode_json() 保留“active”的默认值 (pr#60823, Casey Bodley)
squid: rgw: 切换回 boost::asio 用于 spawn() 和 yield_context (pr#60133, Casey Bodley)
squid: rgwlc: getlc (ObjectSizeGreaterThan) 中的拼写错误 (pr#59223, Matt Benjamin)
squid: RGW|BN: 修复生命周期测试问题 (pr#59010, Ali Masarwa)
squid: RGW|Bucket 通知: 修复 v2 主题 rgw-admin 列表操作 (pr#60774, Oshrey Avraham, Ali Masarwa)
squid: seastar: 更新子模块 (pr#58955, Matan Breizman)
squid: src/ceph_release, doc: 标记 squid 稳定 (pr#59537, Neha Ojha)
squid: src/crimson/osd/scrub: 修复空指针错误 (pr#58885, junxiang Mu)
squid: src/mon/ConnectionTracker.cc: 修正转储函数 (pr#60003, Kamoltat)
squid: suites/upgrade/quincy-x: 更新忽略列表 (pr#59624, Nitzan Mordechai)
squid: suites: 添加 stray 守护进程的忽略列表 (pr#58267, Nitzan Mordechai)
squid: suites: 测试应忽略 osd_down 警告 (pr#59147, Nitzan Mordechai)
squid: test/neorados: 移除过时的 RemoteReads cls 测试 (pr#58144, Laura Flores)
squid: test/rgw/notification: 修复测试中的回滚问题 (pr#60545, Yuval Lifshitz)
squid: test/rgw/notifications: 不要检查如果主题过期则队列已满 (pr#59303, Yuval Lifshitz)
squid: test/rgw/notifications: don’t check for full queue if topics expired (pr#59917, Yuval Lifshitz)
squid: test/rgw/notifications: 修复测试回归 (pr#61119, Yuval Lifshitz)
squid: Test: osd-recovery-space.sh 扩展“recovery toofull”的等待时间 (pr#59041, Nitzan Mordechai)
upgrade/cephfs/mds_upgrade_sequence: 忽略 osds 下 (pr#59865, Kamoltat Sirivadhna)
squid: rgw: 不要在从池列表的异常中崩溃 (pr#61306, Adam Emerson)
squid: container/Containerfile: 替换 CEPH_VERSION 标签以进行向后兼容 (pr#61583, Dan Mick)
squid: container/build.sh: 修复 org vs. repo 命名 (pr#61584, Dan Mick)
squid: container/build.sh: 在 NO_PUSH 上不要要求 repo 凭证 (pr#61585, Dan Mick)
v19.2.0 Squid
注意
iSCSI 用户被建议在 Ceph 19.1.1 到 Ceph 19.2.0 的升级过程中遇到一个错误。阅读追踪器问题在尝试升级到 19.2.0 之前。
一些用户在升级到 Ceph 19.2.0 时遇到了 Ceph 管理器 balancer 模块问题。如果您遇到此问题,通过运行命令ceph balancer off
禁用 balancer追踪器问题在尝试升级。
突出显示
RADOS
BlueStore 已针对快照密集型工作负载进行了优化。
BlueStore RocksDB LZ4 压缩现在默认启用以改善平均性能和“快速设备”空间使用。
其他改进包括更灵活的 EC 配置、一个 OpTracker 来帮助调试 mgr 模块问题,以及更好的清理调度。
仪表板
改进导航布局
支持管理 CephFS 快照和克隆,以及快照计划管理
管理 CephFS 资源的授权功能
挂载 CephFS 卷的辅助程序
RBD
diff-iterate 现在可以在本地执行,为 QEMU live 磁盘同步和备份用例带来了显著的性能提升。
添加了从非用户类型快照克隆的支持。
rbd-wnbd 驱动程序获得了多路复用图像映射的能力。
RGW
用户帐户功能解锁了几个新的 AWS 兼容的 IAM API,用于自助管理用户、密钥、组、角色、策略等。
Crimson/Seastore
Crimson 的第一个技术预览版本!支持在复制池上使用 RBD 工作负载。更多信息请访问:https://ceph.io/en/news/crimson
Ceph
ceph: 新的--daemon-output-file开关可用于ceph tell命令将输出转储到守护进程本地文件。对于产生大量输出的命令,这避免了守护进程上内存使用的潜在峰值,允许更快地将流写入守护进程本地的文件,并减少执行命令所需的任何锁的持有时间。要进行分析,必须手动从运行守护进程的主机检索该文件。目前,仅
--format=json|json-pretty
支持的。cls_cxx_gather
已标记为过时。追踪:blkin 追踪功能(见https://docs.ceph.com/en/reef/dev/blkin/)现在已弃用,改为使用https://docs.ceph.com/en/reef/dev/developer_guide/jaegertracing/) 和将在此后的版本中删除。
PG 转储:PG 转储的默认输出已更改。
ceph pg dump --format json
has changed. The default JSON format produces a rather massive output in large clusters and isn’t scalable, so we have removed the ‘network_ping_times’ section from the output. Details in the tracker: https://tracker.ceph.com/issues/57460
CephFS
CephFS: 现在可以使用新的子卷静止命令套件在文件系统树中的某个位置暂停写 I/O 和元数据变更。
CephFS: MDS 会驱逐那些没有推进其请求 tids 的客户端,这会导致会话元mds_session_metadata_threshold config controls the maximum size that a (encoded) session metadata can grow.
CephFS: A new “mds last-seen” command is available for querying the last time an MDS was in the FSMap, subject to a pruning threshold.
CephFS: For clusters with multiple CephFS file systems, all the snap-schedule commands now expect the ‘--fs’ argument.
CephFS: The period specifier
m
now implies minutes and the period specifierM
now implies months. This has been made consistent with the rest of the system.CephFS: Running the command “ceph fs authorize” for an existing entity now upgrades the entity’s capabilities instead of printing an error. It can now also change read/write permissions in a capability that the entity already holds. If the capability passed by user is same as one of the capabilities that the entity already holds, idempotency is maintained.
CephFS: Two FS names can now be swapped, optionally along with their IDs, using “ceph fs swap” command. The function of this API is to facilitate file system swaps for disaster recovery. In particular, it avoids situations where a named file system is temporarily missing which would prompt a higher level storage operator (like Rook) to recreate the missing file system. See https://docs.ceph.com/en/latest/cephfs/administration/#file-systems docs for more information.
CephFS: Before running the command “ceph fs rename”, the filesystem to be renamed must be offline and the config “refuse_client_session” must be set for it. The config “refuse_client_session” can be removed/unset and filesystem can be online after the rename operation is complete.
CephFS: Disallow delegating preallocated inode ranges to clients. Config mds_client_delegate_inos_pct defaults to 0 which disables async dirops in the kclient.
CephFS: MDS log trimming is now driven by a separate thread which tries to trim the log every second (mds_log_trim_upkeep_interval config). Also, a couple of configs govern how much time the MDS spends in trimming its logs. These configs are mds_log_trim_threshold和mds_log_trim_decay_rate.
CephFS: Full support for subvolumes and subvolume groups is now available
CephFS: The subvolume snapshot clone command now depends on the config option snapshot_clone_no_wait which is used to reject the clone operation when all the cloner threads are busy. This config option is enabled by default which means that if no cloner threads are free, the clone request errors out with EAGAIN. The value of the config option can be fetched by using: ceph config get mgr mgr/volumes/snapshot_clone_no_wait and it can be disabled by using: ceph config set mgr mgr/volumes/snapshot_clone_no_wait false for snap_schedule Manager module.
CephFS: Commands
ceph mds fail
和ceph fs fail
now require a confirmation flag when some MDSs exhibit health warning MDS_TRIM or MDS_CACHE_OVERSIZED. This is to prevent accidental MDS failover causing further delays in recovery.CephFS: fixes to the implementation of the
root_squash
mechanism enabled via cephxmds
caps on a client credential require a new client feature bit,client_mds_auth_caps
. Clients using credentials withroot_squash
without this feature will trigger the MDS to raise a HEALTH_ERR on the cluster, MDS_CLIENTS_BROKEN_ROOTSQUASH. See the documentation on this warning and the new feature bit for more information.CephFS: Expanded removexattr support for cephfs virtual extended attributes. Previously one had to use setxattr to restore the default in order to “remove”. You may now properly use removexattr to remove. You can also now remove layout on root inode, which then will restore layout to default layout.
CephFS: cephfs-journal-tool is guarded against running on an online file system. The ‘cephfs-journal-tool --rank <fs_name>:<mds_rank> journal reset’ and ‘cephfs-journal-tool --rank <fs_name>:<mds_rank> journal reset --force’ commands require ‘--yes-i-really-really-mean-it’.
CephFS: “ceph fs clone status” command will now print statistics about clone progress in terms of how much data has been cloned (in both percentage as well as bytes) and how many files have been cloned.
CephFS: “ceph status” command will now print a progress bar when cloning is ongoing. If clone jobs are more than the cloner threads, it will print one more progress bar that shows total amount of progress made by both ongoing as well as pending clones. Both progress are accompanied by messages that show number of clone jobs in the respective categories and the amount of progress made by each of them.
cephfs-shell: The cephfs-shell utility is now packaged for RHEL 9 / CentOS 9 as required python dependencies are now available in EPEL9.
The CephFS automatic metadata load (sometimes called “default”) balancer is now disabled by default. The new file system flag balance_automate can be used to toggle it on or off. It can be enabled or disabled via ceph fs set <fs_name> balance_automate <bool>.
CephX
cephx: key rotation is now possible using ceph auth rotate. Previously, this was only possible by deleting and then recreating the key.
仪表板
Dashboard: Rearranged Navigation Layout: The navigation layout has been reorganized for improved usability and easier access to key features.
Dashboard: CephFS Improvments * Support for managing CephFS snapshots and clones, as well as snapshot schedule management * Manage authorization capabilities for CephFS resources * Helpers on mounting a CephFS volume
Dashboard: RGW Improvements * Support for managing bucket policies * Add/Remove bucket tags * ACL Management * Several UI/UX Improvements to the bucket form
MGR
MGR/REST: The REST manager module will trim requests based on the ‘max_requests’ option. Without this feature, and in the absence of manual deletion of old requests, the accumulation of requests in the array can lead to Out Of Memory (OOM) issues, resulting in the Manager crashing.
MGR: An OpTracker to help debug mgr module issues is now available.
Monitoring
Monitoring: Grafana dashboards are now loaded into the container at runtime rather than building a grafana image with the grafana dashboards. Official Ceph grafana images can be found in quay.io/ceph/grafana
Monitoring: RGW S3 Analytics: A new Grafana dashboard is now available, enabling you to visualize per bucket and user analytics data, including total GETs, PUTs, Deletes, Copies, and list metrics.
The
mon_cluster_log_file_level
和mon_cluster_log_to_syslog_level
options have been removed. Henceforth, users should use the new generic optionmon_cluster_log_level
to control the cluster log level verbosity for the cluster log file as well as for all external entities.
RADOS
RADOS:
A POOL_APP_NOT_ENABLED
health warning will now be reported if the application is not enabled for the pool irrespective of whether the pool is in use or not. Always tag a pool with an application usingceph osd pool application enable
command to avoid reporting of POOL_APP_NOT_ENABLED health warning for that pool. The user might temporarily mute this warning usingceph health mute POOL_APP_NOT_ENABLED
.RADOS: get_pool_is_selfmanaged_snaps_mode C++ API has been deprecated due to being prone to false negative results. Its safer replacement is pool_is_in_selfmanaged_snaps_mode.
RADOS: For bug 62338 (https://tracker.ceph.com/issues/62338), we did not choose to condition the fix on a server flag in order to simplify backporting. As a result, in rare cases it may be possible for a PG to flip between two acting sets while an upgrade to a version with the fix is in progress. If you observe this behavior, you should be able to work around it by completing the upgrade or by disabling async recovery by setting osd_async_recovery_min_cost to a very large value on all OSDs until the upgrade is complete:
ceph config set osd osd_async_recovery_min_cost 1099511627776
RADOS: A detailed version of the balancer status CLI command in the balancer module is now available. Users may run ceph balancer status detail to see more details about which PGs were updated in the balancer’s last optimization. See https://docs.ceph.com/en/latest/rados/operations/balancer/ for more information.
RADOS: Read balancing may now be managed automatically via the balancer manager module. Users may choose between two new modes:
upmap-read
, which offers upmap and read optimization simultaneously, orread
, which may be used to only optimize reads. For more detailed information see https://docs.ceph.com/en/latest/rados/operations/read-balancer/#online-optimization.RADOS: BlueStore has been optimized for better performance in snapshot-intensive workloads.
RADOS: BlueStore RocksDB LZ4 compression is now enabled by default to improve average performance and “fast device” space usage.
RADOS: A new CRUSH rule type, MSR (Multi-Step Retry), allows for more flexible EC configurations.
RADOS: Scrub scheduling behavior has been improved.
Crimson/Seastore
Crimson’s first tech preview release! Supporting RBD workloads on Replicated pools. For more information please visit: https://ceph.io/en/news/crimson
RBD
RBD: When diffing against the beginning of time (fromsnapname == NULL) in fast-diff mode (whole_object == true with
fast-diff
image feature enabled and valid), diff-iterate is now guaranteed to execute locally if exclusive lock is available. This brings a dramatic performance improvement for QEMU live disk synchronization and backup use cases.RBD: The
try-netlink
mapping option for rbd-nbd has become the default and is now deprecated. If the NBD netlink interface is not supported by the kernel, then the mapping is retried using the legacy ioctl interface.RBD: The option
--image-id
has been added to rbd children CLI command, so it can be run for images in the trash.RBD: Image::access_timestamp和Image::modify_timestamp Python APIs now return timestamps in UTC.
RBD: Support for cloning from non-user type snapshots is added. This is intended primarily as a building block for cloning new groups from group snapshots created with rbd group snap create command, but has also been exposed via the new --snap-id option for rbd clone command.
RBD: The output of rbd snap ls --all command now includes the original type for trashed snapshots.
RBD: RBD_IMAGE_OPTION_CLONE_FORMAT option has been exposed in Python bindings via clone_format optional parameter to clone, deep_copy和migration_prepare methods.
RBD: RBD_IMAGE_OPTION_FLATTEN option has been exposed in Python bindings via flatten optional parameter to deep_copy和migration_prepare methods.
RBD: rbd-wnbd driver has gained the ability to multiplex image mappings. Previously, each image mapping spawned its own rbd-wnbd daemon, which lead to an excessive amount of TCP sessions and other resources being consumed, eventually exceeding Windows limits. With this change, a single rbd-wnbd daemon is spawned per host and most OS resources are shared between image mappings. Additionally, ceph-rbd service starts much faster.
RGW
RGW: GetObject and HeadObject requests now return a x-rgw-replicated-at header for replicated objects. This timestamp can be compared against the Last-Modified header to determine how long the object took to replicate.
RGW: S3 multipart uploads using Server-Side Encryption now replicate correctly in multi-site. Previously, the replicas of such objects were corrupted on decryption. A new tool,
radosgw-admin bucket resync encrypted multipart
, can be used to identify these original multipart uploads. TheLastModified
timestamp of any identified object is incremented by 1ns to cause peer zones to replicate it again. For multi-site deployments that make any use of Server-Side Encryption, we recommended running this command against every bucket in every zone after all zones have upgraded.RGW: Introducing a new data layout for the Topic metadata associated with S3 Bucket Notifications, where each Topic is stored as a separate RADOS object and the bucket notification configuration is stored in a bucket attribute. This new representation supports multisite replication via metadata sync and can scale to many topics. This is on by default for new deployments, but is not enabled by default on upgrade. Once all radosgws have upgraded (on all zones in a multisite configuration), the
notification_v2
zone feature can be enabled to migrate to the new format. See https://docs.ceph.com/en/squid/radosgw/zone-features for details. The “v1” format is now considered deprecated and may be removed after 2 major releases.RGW: New tools have been added to radosgw-admin for identifying and correcting issues with versioned bucket indexes. Historical bugs with the versioned bucket index transaction workflow made it possible for the index to accumulate extraneous “book-keeping” olh entries and plain placeholder entries. In some specific scenarios where clients made concurrent requests referencing the same object key, it was likely that a lot of extra index entries would accumulate. When a significant number of these entries are present in a single bucket index shard, they can cause high bucket listing latencies and lifecycle processing failures. To check whether a versioned bucket has unnecessary olh entries, users can now run
radosgw-admin bucket check olh
. If the--fix
flag is used, the extra entries will be safely removed. A distinct issue from the one described thus far, it is also possible that some versioned buckets are maintaining extra unlinked objects that are not listable from the S3/ Swift APIs. These extra objects are typically a result of PUT requests that exited abnormally, in the middle of a bucket index transaction - so the client would not have received a successful response. Bugs in prior releases made these unlinked objects easy to reproduce with any PUT request that was made on a bucket that was actively resharding. Besides the extra space that these hidden, unlinked objects consume, there can be another side effect in certain scenarios, caused by the nature of the failure mode that produced them, where a client of a bucket that was a victim of this bug may find the object associated with the key to be in an inconsistent state. To check whether a versioned bucket has unlinked entries, users can now runradosgw-admin bucket check unlinked
. If the--fix
flag is used, the unlinked objects will be safely removed. Finally, a third issue made it possible for versioned bucket index stats to be accounted inaccurately. The tooling for recalculating versioned bucket stats also had a bug, and was not previously capable of fixing these inaccuracies. This release resolves those issues and users can now expect that the existingradosgw-admin bucket check
command will produce correct results. We recommend that users with versioned buckets, especially those that existed on prior releases, use these new tools to check whether their buckets are affected and to clean them up accordingly.RGW: The User Accounts feature unlocks several new AWS-compatible IAM APIs for the self-service management of users, keys, groups, roles, policy and more. Existing users can be adopted into new accounts. This process is optional but irreversible. See https://docs.ceph.com/en/squid/radosgw/account和https://docs.ceph.com/en/squid/radosgw/iam for details.
RGW: On startup, radosgw and radosgw-admin now validate the
rgw_realm
config option. Previously, they would ignore invalid or missing realms and go on to load a zone/zonegroup in a different realm. If startup fails with a “failed to load realm” error, fix or remove thergw_realm
option.RGW: The radosgw-admin commands
realm create
和realm pull
no longer set the default realm without--default
.RGW: Fixed an S3 Object Lock bug with PutObjectRetention requests that specify a RetainUntilDate after the year 2106. This date was truncated to 32 bits when stored, so a much earlier date was used for object lock enforcement. This does not effect PutBucketObjectLockConfiguration where a duration is given in Days. The RetainUntilDate encoding is fixed for new PutObjectRetention requests, but cannot repair the dates of existing object locks. Such objects can be identified with a HeadObject request based on the x-amz-object-lock-retain-until-date response header.
S3
Get/HeadObject
now supports the query parameterpartNumber
to read a specific part of a completed multipart upload.RGW: The SNS CreateTopic API now enforces the same topic naming requirements as AWS: Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long.
RGW: Notification topics are now owned by the user that created them. By default, only the owner can read/write their topics. Topic policy documents are now supported to grant these permissions to other users. Preexisting topics are treated as if they have no owner, and any user can read/write them using the SNS API. If such a topic is recreated with CreateTopic, the issuing user becomes the new owner. For backward compatibility, all users still have permission to publish bucket notifications to topics owned by other users. A new configuration parameter,
rgw_topic_require_publish_policy
, can be enabled to denysns:Publish
permissions unless explicitly granted by topic policy.RGW: Fix issue with persistent notifications where the changes to topic param that were modified while persistent notifications were in the queue will be reflected in notifications. So if the user sets up topic with incorrect config (password/ssl) causing failure while delivering the notifications to broker, can now modify the incorrect topic attribute and on retry attempt to delivery the notifications, new configs will be used.
RGW: in bucket notifications, the
principalId
insideownerIdentity
now contains the complete user ID, prefixed with the tenant ID.
Telemetry
The
basic
channel in telemetry now captures pool flags that allows us to better understand feature adoption, such as Crimson. To opt in to telemetry, runceph telemetry on
.
Upgrading from Quincy or Reef
Before starting, make sure your cluster is stable and healthy (no down or recovering OSDs). (This is optional, but recommended.) You can disable the autoscaler for all pools during the upgrade using the noautoscale flag.
Note
You can monitor the progress of your upgrade at each stage with the ceph versions
command, which will tell you what ceph version(s) are running for each type of daemon.
Upgrading cephadm clusters
If your cluster is deployed with cephadm (first introduced in Octopus), then the upgrade process is entirely automated. To initiate the upgrade,
ceph orch upgrade start --image quay.io/ceph/ceph:v19.2.0
The same process is used to upgrade to future minor releases.
Upgrade progress can be monitored with
ceph orch upgrade status
Upgrade progress can also be monitored with ceph -s (which provides a simple progress bar) or more verbosely with
ceph -W cephadm
The upgrade can be paused or resumed with
ceph orch upgrade pause # to pause ceph orch upgrade resume # to resume
or canceled with
ceph orch upgrade stop
Note that canceling the upgrade simply stops the process; there is no ability to downgrade back to Quincy or Reef.
Upgrading non-cephadm clusters
Note
If your cluster is running Quincy (17.2.x) or later, you might choose to first convert it to use cephadm so that the upgrade to Squid is automated (see above). For more information, see https://docs.ceph.com/en/squid/cephadm/adoption/.
If your cluster is running Quincy (17.2.x) or later, systemd unit file names have changed to include the cluster fsid. To find the correct systemd unit file name for your cluster, run following command:
systemctl -l | grep <daemon type>
Example:
systemctl -l | grep mon | grep active
ceph-6ce0347c-314a-11ee-9b52-000af7995d6c@mon.f28-h21-000-r630.service loaded active running Ceph mon.f28-h21-000-r630 for 6ce0347c-314a-11ee-9b52-000af7995d6c
Set the noout flag for the duration of the upgrade. (Optional, but recommended.)
ceph osd set noout
Upgrade monitors by installing the new packages and restarting the monitor daemons. For example, on each monitor host
systemctl restart ceph-mon.target
Once all monitors are up, verify that the monitor upgrade is complete by looking for the squid string in the mon map. The command
ceph mon dump | grep min_mon_release
should report:
min_mon_release 19 (squid)
If it does not, that implies that one or more monitors hasn’t been upgraded and restarted and/or the quorum does not include all monitors.
Upgrade ceph-mgr daemons by installing the new packages and restarting all manager daemons. For example, on each manager host,
systemctl restart ceph-mgr.target
Verify the ceph-mgr daemons are running by checking ceph -s:
ceph -s
... services: mon: 3 daemons, quorum foo,bar,baz mgr: foo(active), standbys: bar, baz ...
Upgrade all OSDs by installing the new packages and restarting the ceph-osd daemons on all OSD hosts
systemctl restart ceph-osd.target
Upgrade all CephFS MDS daemons. For each CephFS file system,
Disable standby_replay:
ceph fs set <fs_name> allow_standby_replay false
Reduce the number of ranks to 1. (Make note of the original number of MDS daemons first if you plan to restore it later.)
ceph status # ceph fs set <fs_name> max_mds 1
Wait for the cluster to deactivate any non-zero ranks by periodically checking the status
ceph status
Take all standby MDS daemons offline on the appropriate hosts with
systemctl stop ceph-mds@<daemon_name>
Confirm that only one MDS is online and is rank 0 for your FS
ceph status
Upgrade the last remaining MDS daemon by installing the new packages and restarting the daemon
systemctl restart ceph-mds.target
Restart all standby MDS daemons that were taken offline
systemctl start ceph-mds.target
Restore the original value of max_mds for the volume
ceph fs set <fs_name> max_mds <original_max_mds>
Upgrade all radosgw daemons by upgrading packages and restarting daemons on all hosts
systemctl restart ceph-radosgw.target
Complete the upgrade by disallowing pre-Squid OSDs and enabling all new Squid-only functionality
ceph osd require-osd-release squid
If you set noout at the beginning, be sure to clear it with
ceph osd unset noout
Consider transitioning your cluster to use the cephadm deployment and orchestration framework to simplify cluster management and future upgrades. For more information on converting an existing cluster to cephadm, see https://docs.ceph.com/en/squid/cephadm/adoption/.
Post-upgrade
Verify the cluster is healthy with ceph health. If your cluster is running Filestore, and you are upgrading directly from Quincy to Squid, a deprecation warning is expected. This warning can be temporarily muted using the following command
ceph health mute OSD_FILESTORE
Consider enabling the telemetry module to send anonymized usage statistics and crash information to the Ceph upstream developers. To see what would be reported (without actually sending any information to anyone),
ceph telemetry preview-all
If you are comfortable with the data that is reported, you can opt-in to automatically report the high-level cluster metadata with
ceph telemetry on
The public dashboard that aggregates Ceph telemetry can be found at https://telemetry-public.ceph.com/.
Upgrading from pre-Quincy releases (like Pacific)
You must first upgrade to Quincy (17.2.z) or Reef (18.2.z) before upgrading to Squid.
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.