v10.0.2 发布
sage
此开发版本包含对 Jewel 的一系列更改和改进。主要新增功能包括 CephFS scrub/repair 改进、librados 的 AIX 和 Solaris 端口、许多 librbd 日志记录新增和修复、扩展的每池选项、用于 RBD 的 NBD 驱动程序 (rbd-nbd)(允许 librbd 在 Linux 上呈现内核级块设备)、RGW 多租户支持、RGW bucket 生命周期支持、RGW 对 Swift 静态大对象 (SLO) 的支持以及 RGW 对 Swift 批量删除的支持。
整个代码库中还有许多较小的优化和性能修复,特别是在 OSD 和公共代码中。
值得注意的更改 ¶
- auth: 如果轮换密钥丢失,则失败(不发送垃圾日志) (pr#6473, Qiankun Zheng)
- auth: 修复传递错误密钥环时崩溃的问题 (pr#6698, Dunrong Huang)
- auth: 使不含 mon 实体类型的密钥环返回 -EACCES (pr#5734, Xiaowei Chen)
- buffer: 使其再次可以在 ceph 源代码之外使用 (pr#6863, Josh Durgin)
- build: cmake 检查修复 (pr#6787, Orit Wasserman)
- build: 修复 bz2-dev 依赖项 (pr#6948, Samuel Just)
- build: Gentoo: _FORTIFY_SOURCE 修复。 (issue#13920, pr#6739, Robin H. Johnson)
- build/ops: systemd ceph-disk 单元不得假定 /bin/flock (issue#13975, pr#6803, Loic Dachary)
- ceph-detect-init: Ubuntu >= 15.04 使用 systemd (pr#6873, James Page)
- cephfs-data-scan: scan_frags (pr#5941, John Spray)
- cephfs-data-scan: scrub 标签过滤 (#12133 and #12145) (issue#12133, issue#12145, pr#5685, John Spray)
- ceph-fuse: 添加进程到 ceph-fuse –help (pr#6821, Wei Feng)
- ceph-kvstore-tool: 处理命令行中错误的输出文件 (pr#6093, Kefu Chai)
- ceph-mds: 添加 –help/-h (pr#6850, Cilang Zhao)
- ceph_objectstore_bench: 修复竞态条件、错误 (issue#13516, pr#6681, Igor Fedotov)
- ceph.spec.in: 添加 BuildRequires: systemd (issue#13860, pr#6692, Nathan Cutler)
- client: 更好地检查 MDS 可用性 (pr#6253, John Spray)
- client: 在 shutdown() 中关闭 mds 会话 (pr#6269, John Spray)
- client: 当 inode 不再使用时,不要使页面缓存失效 (pr#6380, Yan, Zheng)
- client: 修改日志中的一个词 (pr#6906, YongQiang He)
- cls/cls_rbd.cc: 修复 metadata_name_from_key 误用 (issue#13922, pr#6661, Xiaoxi Chen)
- cmake: 将 common/PluginRegistry.cc 添加到 CMakeLists.txt (pr#6805, Pete Zaitcev)
- cmake: 将 rgw_basic_types.cc 添加到 librgw.a (pr#6786, Orit Wasserman)
- cmake: 将 TracepointProvider.cc 添加到 libcommon (pr#6823, Orit Wasserman)
- cmake: 为 GNU 特定的 strerror_r 定义 STRERROR_R_CHAR_P (pr#6751, Ilya Dryomov)
- cmake: 更新最近的 librbd 更改 (pr#6715, John Spray)
- cmake: 更新最近的 rbd 更改 (pr#6818, Mykola Golub)
- common: 添加通用插件基础设施 (pr#6696, Sage Weil)
- common: 为 finisher 添加延迟性能计数器 (pr#6175, Xinze Chi)
- common: buffer: 将 cached_crc 和 cached_crc_adjust 计数添加到 perf dump (pr#6535, Ning Yao)
- common: buffer: 删除不必要的 list 析构函数 (pr#6456, Michal Jarzabek)
- common/ceph_context.cc: 修复初始化器顺序 (pr#6838, Michal Jarzabek)
- common: hobject_t hash 位为零时不反转 (pr#6653, Piotr Dałek)
- common: log: 为 syslog 调用分配 LOG_DEBUG 优先级 (issue#13993, pr#6815, Brad Hubbard)
- common: log: 预测日志消息缓冲区分配大小 (pr#6641, Adam Kupczyk)
- common: 优化调试日志代码 (pr#6441, Adam Kupczyk)
- common: bufferlist history total alloc 的性能计数器 (pr#6198, Xinze Chi)
- common: 通过使 stringify 函数中的 stringstream 线程本地化来减少 CPU 使用率 (pr#6543, Evgeniy Firsov)
- common: 重新启用回溯支持 (pr#6771, Jason Dillaman)
- common: SubProcess: 修复多重定义错误 (pr#6790, Yunchuan Wen)
- common: buffer 使用命名空间而不是子类 (pr#6686, Michal Jarzabek)
- configure.ac: 宏修复 (pr#6769, Igor Podoski)
- doc: admin/build-doc: 在 debian 上添加 lxml 依赖项 (pr#6610, Ken Dreyer)
- doc/cephfs/posix: 更新 (pr#6922, Sage Weil)
- doc: CodingStyle: 修复损坏的 URL (pr#6733, Kefu Chai)
- doc: 将错字“restared”更正为“restarted” (pr#6734, Yilong Zhao)
- doc/dev/index: 重构/重组 (pr#6792, Nathan Cutler)
- doc/dev/index.rst: 开始编写“Contributing to Ceph” (pr#6727, Nathan Cutler)
- doc/dev/index.rst: 修复标题 (pr#6780, Nathan Cutler)
- doc: dev: 测试简介 (pr#6910, Loic Dachary)
- doc: 文件必须为空,才能使用“setfattr”写入文件的布局字段 (pr#6848, Cilang Zhao)
- doc: 修复“List Multipart Upload Parts”响应实体的名称不正确 (issue#14003, pr#6829, Lenz Grimmer)
- doc: 修复拼写错误 (pr#6705, Jeremy Qian)
- doc: 修复 cephfs/quota 中的拼写错误 (pr#6745, Drunkard Zhang)
- doc: 修复开发者指南中的拼写错误 (pr#6943, Nathan Cutler)
- doc: INSTALL 重定向到在线文档 (pr#6749, Loic Dachary)
- doc: 针对 scrub 问题排查的一些小改进 (pr#6827, Mykola Golub)
- doc: 修改 rbd-snapshot 文档中的注释部分。 (pr#6908, Nilamdyuti Goswami)
- doc: 注意到 cephfs auth 功能在 jewel 中是新的 (pr#6858, John Spray)
- doc: osd: s/schedued/scheduled/ (pr#6872, Loic Dachary)
- doc: 删除标题中不必要的句点 (pr#6775, Marc Koderer)
- doc: pools 文档的 rst 样式修复 (pr#6816, Drunkard Zhang)
- doc: 更新 admin/build-doc 依赖项列表 (issue#14070, pr#6934, Nathan Cutler)
- init-ceph: 如果路径存在则执行 umount。 (pr#6866, Xiaoxi Chen)
- journal: 观察错误后断开观察 (issue#14168, pr#7113, Jason Dillaman)
- journal: 在读取最后一个对象后触发重放完成事件 (issue#13924, pr#6762, Jason Dillaman)
- journal: 支持重放超过跳过的 splay 对象 (pr#6687, Jason Dillaman)
- librados: aix gcc librados 端口 (pr#6675, Rohan Mars)
- librados: 避免 malloc(0)(在某些平台上可能返回 NULL) (issue#13944, pr#6779, Dan Mick)
- librados: 清理 Objecter.h (pr#6731, Jie Wang)
- librados: include/rados/librados.h: 修复拼写错误 (pr#6741, Nathan Cutler)
- librbd: 在阻塞写入操作后自动刷新 IO (issue#13913, pr#6742, Jason Dillaman)
- librbd: 更好地处理排他锁转换期 (pr#7204, Jason Dillaman)
- librbd: 在尝试删除之前检查日志是否存在 (issue#13912, pr#6737, Jason Dillaman)
- librbd: 当较旧的 OSD 不支持镜像标志时清除错误 (issue#14122, pr#7035, Jason Dillaman)
- librbd: 修复 RenameRequest.h 中的 include guard (pr#7143, Jason Dillaman)
- librbd: 修复 teuthology 测试期间发现的问题 (issue#14108, issue#14107, pr#6974, Jason Dillaman)
- librbd: 修复禁用缓存时发现的问题 (issue#14123, pr#6979, Jason Dillaman)
- librbd: 修复单元测试期间发现的竞态条件 (issue#14060, pr#6923, Jason Dillaman)
- librbd: 当不是排他锁所有者时禁用按读复制 (issue#14167, pr#7129, Jason Dillaman)
- librbd: 不要忽略自我管理快照释放结果 (issue#14170, pr#7043, Jason Dillaman)
- librbd: 确保按读复制请求在关闭父镜像之前完成 (pr#6740, Jason Dillaman)
- librbd: 确保 librados 回调在销毁之前刷新 (issue#14092, pr#7040, Jason Dillaman)
- librbd: 修复日志 iohint (pr#6917, Jianpeng Ma)
- librbd: 修复已知的测试用例竞态条件失败 (issue#13969, pr#6800, Jason Dillaman)
- librbd: 修复大于 2GB diff-files 的 merge-diff (issue#14030, pr#6889, Yunchuan Wen)
- librbd: 修复日志记录操作的测试用例竞态条件 (pr#6877, Jason Dillaman)
- librbd: 修复 diff_iterate 中的 tracepoint 参数 (pr#6892, Yunchuan Wen)
- librbd: 镜像刷新代码路径转换为异步状态机 (pr#6859, Jason Dillaman)
- librbd: 包含 bool 类型缺失的头文件 (pr#6798, Mykola Golub)
- librbd: 状态机单元测试的初始集合 (pr#6703, Jason Dillaman)
- librbd: 集成维护操作的日志记录 (pr#6625, Jason Dillaman)
- librbd: 日志记录相关的锁依赖清理 (pr#6777, Jason Dillaman)
- librbd: 释放 snap id 时不需要持有 owner_lock (issue#13914, pr#6736, Jason Dillaman)
- librbd: 仅在 AIO 完成队列为空时发送信号 (pr#6729, Jianpeng Ma)
- librbd: 可选地验证新 RBD 池是否支持快照 (issue#13633, pr#6925, Jason Dillaman)
- librbd: 部分恢复提交 9b0e359 (issue#13969, pr#6789, Jason Dillaman)
- librbd: 正确处理 snap remove RPC 消息的重放 (issue#14164, pr#7042, Jason Dillaman)
- librbd: 减少常见错误条件日志记录的详细程度 (issue#14234, pr#7114, Jason Dillaman)
- librbd: 简化 32 位环境的 IO 方法签名 (pr#6700, Jason Dillaman)
- librbd: 支持 eventfd 用于 AIO 完成通知 (pr#5465, Haomai Wang)
- mailmap: 添加 UMCloud 关联 (pr#6820, Jiaying Ren)
- mailmap: Jewel 更新 (pr#6750, Abhishek Lekshmanan)
- makefiles: 从依赖项中删除 bz2-dev (issue#13981, pr#6939, Piotr Dałek)
- mds: 在 auth caps 中添加 'p' 标志以控制布局中的池设置 (pr#6567, John Spray)
- mds: 修复重新连接期间的客户端功能(client.XXXX 没有响应 mclientcaps(revoke)) (issue#11482, pr#6432, Yan, Zheng)
- mds: 修复 setvxattr (a536d114 中损坏) (issue#14029, pr#6941, John Spray)
- mds: 修复命令选项“–hot-standby” (pr#6454, Wei Feng)
- mds: 拆除 tell 命令的连接 (issue#14048, pr#6933, John Spray)
- mon: 修复 0 权重 OSD 的 ceph df 池可用性计算 (pr#6660, Chengyuan Li)
- mon: 修复 routed_request_tids 泄漏 (pr#6102, Ning Yao)
- mon: 按子树级别支持 min_down_reporter(默认为 host) (pr#6709, Xiaoxi Chen)
- mount.ceph: 内存泄漏 (pr#6905, Qiankun Zheng)
- osd: 添加 osd op 队列延迟性能计数器 (pr#5793, Haomai Wang)
- osd: 允许使用配置修复 history.last_epoch_started (pr#6793, David Zafman)
- osd: 避免在 ReplicatedBackend 中重复 op->mark_started (pr#6689, Jacek J. Łakis)
- osd: 如果重新绑定网络失败,则取消故障报告 (pr#6278, Xinze Chi)
- osd: 正确处理小的 osd_scrub_interval_randomize_ratio (pr#7147, Samuel Just)
- osd: 推迟解码 MOSDRepOp/MOSDRepOpReply (pr#6503, Xinze Chi)
- osd: 如果不需要,则不更新 epoch 和 rollback_info 对象 attrs (pr#6555, Ning Yao)
- osd: 使用 pg query 为每个 peer dump 缺失对象数 (pr#6058, Guang Yang)
- osd: 在分片工作队列互斥锁上启用 perfcounters (pr#6455, Jacek J. Łakis)
- osd: FileJournal: 在 write_aio_bl 中减少锁定范围 (issue#12789, pr#5670, Zhi Zhang)
- osd: FileStore: 删除 __SWORD_TYPE 依赖项 (pr#6263, John Coyle)
- osd: 修复 FileStore::_destroy_collection 错误返回代码 (pr#6612, Ruifeng Yang)
- osd: 修复 WBThrottle 中不正确的节流 (pr#6713, Zhang Huan)
- osd: 修复 replica_scrub 中 MOSDRepScrub 引用计数器 (pr#6730, Jie Wang)
- osd: 修复 index() 之前的 rollback_info_trimmed_to (issue#13965, pr#6801, Samuel Just)
- osd: 修复琐碎的 scrub 错误 (pr#6533, Li Wang)
- osd: KeyValueStore: 不要将 NULL context 排队 (pr#6783, Haomai Wang)
- osd: 使后端和块设备代码更加通用 (pr#6759, Sage Weil)
- osd: 将 MOSDOp 和 MOSDOpReply 的最新解码版本移到前面 (pr#6642, Jacek J. Łakis)
- osd: pg_pool_t: 为 pool 选项添加字典 (issue#13077, pr#6081, Mykola Golub)
- osd: 减少某些结构体的内存消耗 (pr#6475, Piotr Dałek)
- osd: 注销 OpRequest 时释放消息节流阀 (issue#14248, pr#7148, Samuel Just)
- osd: 删除 __SWORD_TYPE 依赖项 (pr#6262, John Coyle)
- osd: 稍微减小 pg_log_entry_t 的实际大小 (pr#6690, Piotr Dałek)
- osd: 支持 pool 级别的 recovery_priority 和 recovery_op_priority (pr#5953, Guang Yang)
- osd: 引用 PG 时使用 pg id(不带 shard) (pr#6236, Guang Yang)
- packaging: 添加 python devel 包的构建依赖项 (pr#7205, Josh Durgin)
- pybind/cephfs: 添加 symlink 及其单元测试 (pr#6323, Shang Ding)
- pybind: 在 conf_parse_argv() 中正确解码空字符串 (pr#6711, Josh Durgin)
- pybind: rados_ioctx_snapshot_rollback 的实现 (pr#6878, Florent Manens)
- pybind: 将 rbd 绑定移植到 Cython (issue#13115, pr#6768, Hector Martin)
- pybind: 支持 ioctx:exec (pr#6795, Noah Watkins)
- qa: erasure-code benchmark 插件选择 (pr#6685, Loic Dachary)
- qa/krbd: Expunge generic/247 (pr#6831, Douglas Fuller)
- qa/workunits/cephtool/test.sh: /tmp/obj1. 假阳性失败。 (pr#6837, Robin H. Johnson)
- qa/workunits/cephtool/test.sh: 没有 ./ (pr#6748, Sage Weil)
- qa/workunits/rbd: rbd-nbd test should use sudo for map/unmap ops (issue#14221, pr#7101, Jason Dillaman)
- rados: bench: 修复 off-by-one 以避免写入超出 object_size (pr#6677, Tao Chang)
- rbd: 添加 –object-size 选项,弃用 –order (issue#12112, pr#6830, Vikhyat Umrao)
- rbd: 添加 RBD 池镜像配置 API + CLI (pr#6129, Jason Dillaman)
- rbd: 修复使用“–without-rbd”构建失败 (issue#14058, pr#6899, Piotr Dałek)
- rbd: journal: 通过 conf、cli、api 进行配置和一些修复 (pr#6665, Mykola Golub)
- rbd: merge_diff test 应使用新的 –object-size 参数而不是 –order (issue#14106, pr#6972, Na Xie, Jason Dillaman)
- rbd-nbd: RBD 的网络块设备 (NBD) 支持 (pr#6657, Yunchuan Wen, Li Wang)
- rbd: 输出格式化程序在出错时可能未关闭 (issue#13711, pr#6706, xie xingguo)
- rgw: 添加缺失的 cap 类型 (pr#6774, Yehuda Sadeh)
- rgw: 分配用户功能时添加对类型字段的检查 (pr#6051, Kongming Wu)
- rgw: 添加 LifeCycle 功能 (pr#6331, Ji Chen)
- rgw: 添加对 Swift API 静态大对象 (SLO) 的支持 (issue#12886, issue#13452, pr#6643, Yehuda Sadeh, Radoslaw Zarzynski)
- rgw: 修复明显的语法错误 (pr#6888, Pavan Rallabhandi)
- rgw: 修复构建失败 (pr#6927, Kefu Chai)
- rgw: 多租户支持 (pr#6784, Yehuda Sadeh, Pete Zaitcev)
- rgw: 删除 PutMetadataAccount:execute 中未使用的代码 (pr#6668, Pete Zaitcev)
- rgw: 删除 RGWPutMetadataBucket::execute 中未使用的变量 (pr#6735, Radoslaw Zarzynski)
- rgw/rgw_resolve: 当未实现 res_nquery 时回退到 res_query (pr#6292, John Coyle)
- rgw: 静态大对象 (Radoslaw Zarzynski, Yehuda Sadeh)
- rgw: swift 批量删除 (Radoslaw Zarzynski)
- systemd: 按守护程序类型启动/停止/重新启动 ceph 服务 (issue#13497, pr#6276, Zhi Zhang)
- sysvinit: 允许自定义集群名称 (pr#6732, Richard Chan)
- test/encoding/readable.sh 修复 (pr#6714, Igor Podoski)
- test: 修复 osd-scrub-snaps.sh (pr#6697, Xinze Chi)
- test/librados/test.cc: 也清理 EC pools 的 crush rules (issue#13878, pr#6788, Loic Dachary, Dan Mick)
- tests: 允许 object corpus readable 测试跳过特定的不兼容实例 (pr#6932, Igor Podoski)
- tests: ceph-helpers 断言成功获取 backfills (pr#6699, Loic Dachary)
- tests: ceph_test_keyvaluedb_iterators: 修复损坏的测试 (pr#6597, Haomai Wang)
- tests: 修复 osd-scrub-snap.sh 的失败 (issue#13986, pr#6890, Loic Dachary, Ning Yao)
- tests: 修复测试自动 scrub 的竞态条件 (issue#13592, pr#6724, Xinze Chi, Loic Dachary)
- tests: 在销毁 MockImageCtx 之前刷新 op 工作队列 (issue#14092, pr#7002, Jason Dillaman)
- tests: –osd-scrub-load-threshold=2000 以获得更高的一致性 (issue#14027, pr#6871, Loic Dachary)
- tests: osd-scrub-snaps.sh 在错误时显示完整的 osd 日志 (issue#13986, pr#6857, Loic Dachary)
- test: 为对象缓存器测试使用顺序 journal_tid (issue#13877, pr#6710, Josh Durgin)
- tools: 添加 cephfs-table-tool ‘take_inos’ (pr#6655, John Spray)
- tools: 修复 cephfs-data-scan 中的布局处理 (#13898) (pr#6719, John Spray)
- tools: 支持以可读方式打印部分集群图 (issue#13079, pr#5921, Bo Cai)
- vstart.sh: 添加 mstart、mstop、mrun 包装器,用于在 src 树外运行多个 vstart 样式测试集群 (pr#6901, Yehuda Sadeh)
获取 Ceph ¶
- Git 在 git://github.com/ceph/ceph.git
- Tarball 下载地址: https://ceph.net.cn/download/ceph-10.0.2.tar.gz
- 有关软件包,请参阅 https://ceph.net.cn/docs/master/install/get-packages
- 有关 ceph-deploy,请参阅 https://ceph.net.cn/docs/master/install/install-ceph-deploy