注意
本文档适用于 Ceph 的开发版本。
Cuttlefish
Cuttlefish 是 Ceph 的第 3 个稳定版本。它以一种头足纲动物(乌贼目 Sepiida)命名,这种动物以其独特的内壳——海螵蛸而闻名,海螵蛸用于控制浮力。
v0.61.9 “Cuttlefish”
此小版本解决了代码库中的几个低到中等影响的错误,并修复了 radosgw 的性能问题(CPU 利用率)。我们建议所有 Cuttlefish 生产用户升级。
值得注意的变更
ceph, ceph-authtool: 修复帮助信息 (Danny Al-Gaaf)
ceph-disk: 创建 journal 分区后进行 partprobe
ceph-disk: 挂载时指定 fs 类型 (Alfredo Deza)
ceph-fuse: 修复针对旧版本编译时的错误
ceph-fuse: 修复缓存代码中的 use-after-free 错误 (Yan, Zheng)
ceph-fuse: 杂项缓存错误
ceph.spec: 删除不正确的 mod_fcgi 依赖 (Gary Lowell)
crush: 修复名称缓存
librbd: 修复取消暂停集群时的错误 (Josh Durgin)
mds: 修复 LAZYIO 锁挂起问题
mds: 修复文件大小恢复中的错误(在客户端崩溃后)
mon: 修复 paxos 恢复中的极端情况
osd: 修复慢请求警告的指数退避 (Loic Dachary)
osd: 修复 readdir_r 使用
osd: 修复长时间停止的 OSD 启动问题
rgw: 避免 std::list::size() 以避免浪费 CPU 周期 (Yehuda Sadeh)
rgw: 在写入期间清空待处理请求(修复数据安全问题) (Yehuda Sadeh)
rgw: 修复已认证用户组 ACL 检查 (Yehuda Sadeh)
rgw: 修复 POST 中的错误 (Yehuda Sadeh)
rgw: 修复 sysvinit 脚本的 'status' 命令,返回值 (Danny Al-Gaaf)
rgw: 降低默认日志级别 (Yehuda Sadeh)
有关更多详细信息,请参阅完整的更新日志。
v0.61.8 “Cuttlefish”
此版本包含一些重要问题修复,包括 OSD 中罕见的竞争条件、一些监视器错误以及 RBD flush 行为的修复。我们建议生产用户在方便时升级。
值得注意的变更
librados: 修复 async aio completion 唤醒
librados: 修复 aio 完成锁定
librados: 修复关闭期间罕见的死锁
osd: 修复恢复操作排队时的竞争条件
osd: 修复恢复期间可能的竞争条件
osd: 可选地在启动时预加载 rados 类(默认为禁用)
osd: 修复 journal 重放的极端情况
osd: 限制对等工作队列批量大小(以加快对等连接)
mon: 修复 paxos 恢复中的极端情况
mon: 修复选举期间 monmap 更新时罕见的挂起
mon: 使 ‘osd pool mksnap …’ 避免暴露未提交状态
mon: 使 ‘osd pool rmsnap …’ 不发生竞争,避免暴露未提交状态
mon: 修复监视器集群扩展期间的错误
rgw: 修复多重删除操作期间的崩溃
msgr: 修复 osd 网络重新初始化期间的竞争条件
ceph-disk: 重新挂载时应用挂载选项
有关更多详细信息,请参阅完整的更新日志。
v0.61.7 “Cuttlefish”
此版本修复了另一个阻止监视器在经历某些升级序列后启动的回归问题,以及 Paxos 的一些极端情况和 ceph-disk/ceph-deploy 中对不寻常设备名称的支持。
值得注意的变更
mon: 修复最新完整 osdmap 检索中的回归问题
mon: 修复 paxos 极端情况中的一个长期存在的错误
ceph-disk: 改进了对不寻常设备名称的支持(例如, /dev/cciss/c0d0)
有关更多详细信息,请参阅完整的更新日志。
v0.61.6 “Cuttlefish”
此版本修复了 v0.61.5 中的一个回归问题,该问题可能会阻止监视器重新启动。这会影响从早期版本的 Ceph 升级(而不是使用 v0.61.5 新创建)的任何集群。
强烈建议所有用户升级。
值得注意的变更
mon: 记录最新的完整 osdmap
mon: 解决先前未记录最新完整 osdmap 的错误
mon: 更新时避免 scrubbing
有关更多详细信息,请参阅完整的更新日志。
v0.61.5 “Cuttlefish”
此版本主要提高了监视器的稳定性,并修复了 ceph-disk 实用程序(ceph-deploy 使用)的一些错误。我们建议所有 v0.61.x 用户升级。
升级
此版本修复了功能位中的 32 位与 64 位算术错误。修复的一个不幸后果是 0.61.4(或更早版本)ceph-mon 守护程序无法与 0.61.5(或更高版本)监视器形成仲裁。为避免服务中断的可能性,我们建议您一次性升级所有监视器。
值得注意的变更
mon: 杂项同步改进(更快、更可靠、更好的调整)
mon: 默认启用 leveldb 缓存(大幅提高性能)
mon: 新的 scrubbing 功能(主要用于诊断、测试目的)
mon: 修复启动时偶尔出现的 leveldb 断言
mon: 在初始状态提交之前阻止读取
mon: 改进了修剪旧 osdmaps 的逻辑
mon: 修复扩展 mon 集群时的 pick_addresses 错误
mon: 几个小的 paxos 修复和改进
mon: 修复 osdmap 修剪行为错误
osd: 修复 PG stat 报告的几个错误
osd: 限制与对等方共享的 map 数量(可能导致多米诺故障)
rgw: 修复 radosgw-admin buckets list(列出所有桶)
mds: 修复客户端偶尔无法重新连接的问题
mds: 修复 unlink 后不正确的列表遍历
mds: 修复 dentry 清理(mds 重启后偶尔崩溃)
libcephfs, ceph-fuse: 修复 umount 时偶尔出现的挂起
libcephfs, ceph-fuse: 修复 O_LAZY 与 O_NOATIME 混淆的旧错误
ceph-disk: 在 RHEL/CentOS 上更健壮的 journal 设备检测
ceph-disk: 更好、更简单的锁定
ceph-disk: 不要无意中挂载到现有 osd 挂载点上
ceph-disk: 更好地处理不寻常的设备名称
sysvinit, upstart: 处理 /var/lib/ceph/* 中的符号链接
有关更多详细信息,请参阅完整的更新日志。
v0.61.4 “Cuttlefish”
此版本解决了使用 XFS 时可能发生的电源循环数据损坏问题、一些未解决的监视器同步问题、ceph-disk 和 ceph-deploy 操作的几个问题,以及 scrubbing 期间 OSD 内存使用问题。
升级
无已知问题。
显著更改
mon: 修复启动时遇到错误时守护程序的退出行为
mon: 更健壮的同步行为
osd: 不使用 sync_file_range(2), posix_fadvise(…DONTNEED)(可能导致 XFS 上的电源丢失数据损坏)
osd: 避免不必要的日志重写(提高对等连接速度)
osd: 修复 scrubbing 效率错误(对旧集群有问题)
rgw: 修复列出以下划线开头的对象的问题
rgw: 修复深层 URI 资源, CORS 错误
librados python binding: 修复 32 位架构上的 truncate
ceph-disk: 修复 udev 规则
rpm: 在软件包安装时安装 sysvinit 脚本
ceph-disk: 修复 Debian wheezy 上机器重启时的 OSD 启动问题
ceph-disk: 当 journal 设备出现在第二个时激活 OSD
ceph-disk: 修复 RHEL/CentOS 6.3 上的各种错误
ceph-disk: 添加 ‘zap’ 命令
ceph-disk: 添加 ‘[un]suppress-activate’ 命令以准备备用磁盘
upstart: 在 runlevel [2345] 启动(而不是在第一个网络接口启动后)
ceph-fuse, libcephfs: 在会话打开期间处理 mds 会话重置
ceph-fuse, libcephfs: 修复两个 capability 撤销错误
ceph-fuse: 修复启动时的线程创建
所有守护程序: 如果缺少,则在启动时创建 /var/run/ceph 目录
有关更多详细信息,请参阅完整的更新日志。
v0.61.3 “Cuttlefish”
此版本解决了用户遇到的许多监视器和 leveldb 问题。请升级。
升级
从 bobtail 升级 mon 时有一个已知问题。如果在启动时中止或因某种原因失败 ceph-mon 转换,我们不会正确报错,而是在某些情况下继续运行,并产生奇怪的结果。如果您必须在升级期间重新启动 mons,请务必小心。修复程序将在 0.61.4 版本中很快发布。
同时,对于当前的 Cuttlefish 用户,v0.61.3 可以安全使用。
Notable Changes
mon: paxos 状态修剪修复(解决了磁盘使用失控问题)
mon: 修剪时进行更细粒度的 compaction
mon: 丢弃来自断开连接客户端的消息(降低负载)
mon: leveldb compaction 和其他统计信息可通过 admin socket 获取
mon: 异步 compaction(更低的开销)
mon: 修复错误标记 osds down 而失败报告不足的错误
osd: 修复 pg request map 中的小错误
osd: 避免在每个 osdmap 上重写 pg info
osd: scrubbing 超大对象时避免内部心跳超时
osd: 修复 journal 重放的狭窄竞争条件
mon: 修复狭窄的 pg split 竞争条件
rgw: 修复复制对象时泄漏的空间
rgw: 修复对大型/未修剪使用日志的迭代
rgw: 修复 ops log socket 的锁定问题
rgw: 要求匹配版本的 librados
librbd: 使镜像创建默认值可配置(例如,通过 qemu-img 创建 format 2 镜像)
修复 ‘ceph df’ 输出中的单位
debian: 修复 prerm/postinst 钩子以适当启动/停止守护程序
upstart: 允许大写守护程序名称(以及主机名)
sysvinit: 修复按类型枚举本地守护程序
sysvinit: 使用 -a 时修复 osd 权重计算
修复无符号 char 平台上的构建(例如, arm)
有关更多详细信息,请参阅完整的更新日志。
v0.61.2 “Cuttlefish”
此版本禁用了一个消耗磁盘空间的监视器调试日志,并修复了从 bobtail 升级某些监视器到 cuttlefish 时的错误。
值得注意的变更
mon: 修复具有重复 GV 值存储的转换
mon: 默认禁用 ‘mon debug dump transactions’
有关更多详细信息,请参阅完整的更新日志。
v0.61.1 “Cuttlefish”
此版本修复了将具有快照的 bobtail 集群升级到 cuttlefish 时遇到的问题。
显著更改
osd: 存在旧版快照集合时处理升级;从以前失败的重启中修复
ceph-create-keys: 修复与 ceph-mon 启动的竞争条件(它破坏了 ‘ceph-deploy gatherkeys …’)
ceph-create-keys: 优雅处理来自 ceph-osd 的错误响应
sysvinit: 自动加权 OSD 时不假设默认 osd_data
osd: 避免使用 getomapvals 的不当类引起的崩溃
debian: 修复 squeeze 依赖
mon: 调试选项以记录或转储 leveldb 事务
有关更多详细信息,请参阅完整的更新日志。
v0.61 “Cuttlefish”
从 v0.60 升级
ceph-deploy 工具现在是配置新集群的首选方法。对于希望过渡到新工具的通过 mkcephfs 创建的现有集群,存在一个迁移路径,记录在过渡到 ceph-deploy。
sysvinit 脚本 (/etc/init.d/ceph) 现在将在启动时验证(并在必要时更新)OSD 在 CRUSH map 中的位置。(upstart 脚本一直以这种方式工作。)默认情况下,这确保 OSD 位于名称与主机名匹配(
hostname -s)的 'host' 下。使用 mkcephfs 创建的旧版集群默认这样做,因此这不应引起任何问题,但具有定制 CRUSH map 和替代结构的旧版集群应设置osd crush update on start = false。radosgw-admin 现在使用术语 zone 而不是 cluster 来描述 radosgw 数据存储的每个实例(以及相应的 radosgw 守护程序集合)。radosgw-admin 命令的使用和 ‘rgw zone root pool’ 配置选项已相应更改。
rbd 进度指示现在转到标准错误而不是标准输出。(您可以使用 --no-progress 禁用进度。)
‘rbd resize …’ 命令现在在调整为较小大小时需要 --allow-shrink 选项。扩展镜像到较大大小没有改变。
如果您要从 bobtail 升级,请查看追溯到 0.56.4 的更改。
旧的 ‘ceph stop_cluster’ 命令已被删除。
sysvinit 脚本现在在使用 ‘-a’ 选项启动远程守护程序时使用远程主机上的 ceph.conf 文件。请注意,如果 ‘-a’ 与 ‘-c path’ 一起使用,则 path 也必须存在于远程主机上(它不会像以前那样复制到临时文件)。
从 v0.56.4 “Bobtail” 升级
有关详细信息,请参阅从 Bobtail 升级到 Cuttlefish。
ceph-deploy 工具现在是配置新集群的首选方法。对于希望过渡到新工具的通过 mkcephfs 创建的现有集群,存在一个迁移路径,记录在过渡到 ceph-deploy。
sysvinit 脚本 (/etc/init.d/ceph) 现在将在启动时验证(并在必要时更新)OSD 在 CRUSH map 中的位置。(upstart 脚本一直以这种方式工作。)默认情况下,这确保 OSD 位于名称与主机名匹配(
hostname -s)的 'host' 下。使用 mkcephfs 创建的旧版集群默认这样做,因此这不应引起任何问题,但具有定制 CRUSH map 和替代结构的旧版集群应设置osd crush update on start = false。radosgw-admin 现在使用术语 zone 而不是 cluster 来描述 radosgw 数据存储的每个实例(以及相应的 radosgw 守护程序集合)。radosgw-admin 命令的使用和 ‘rgw zone root pool’ 配置选项已相应更改。
rbd 进度指示现在转到标准错误而不是标准输出。(您可以使用 --no-progress 禁用进度。)
‘rbd resize …’ 命令现在在调整为较小大小时需要 --allow-shrink 选项。扩展镜像到较大大小没有改变。
如果您要从 bobtail 升级,请查看追溯到 0.56.4 的更改。
旧的 ‘ceph stop_cluster’ 命令已被删除。
sysvinit 脚本现在在使用 ‘-a’ 选项启动远程守护程序时使用远程主机上的 ceph.conf 文件。请注意,如果 ‘-a’ 与 ‘-c path’ 一起使用,则 path 也必须存在于远程主机上(它不会像以前那样复制到临时文件)。
监视器正在使用全新的存储策略和集群内协议。这意味着 cuttlefish 和 bobtail 监视器不能相互通信。当您升级每一个时,它会将其本地数据存储转换为新格式。一旦您升级多数,仲裁将使用新协议形成,旧监视器将被阻止,直到它们也升级。因此,我们建议不要运行混合版本集群太久。
ceph-mon 现在需要先创建其数据目录,然后再执行 --mkfs,类似于 ceph-osd 上的情况。此目录不再自动创建,自定义脚本应进行相应调整。
监视器现在强制 MDS 名称唯一。如果多个守护程序以相同的 id 启动(例如,
mds.a),第二个将隐式将第一个标记为失败。这使得事情不那么混乱,并使守护程序重启更快(我们不再等待停止的守护程序超时),但现有的 multi-mds 配置可能需要相应调整以赋予守护程序唯一的名称。‘ceph osd pool delete <poolname>’ 和 ‘rados rmpool <poolname>’ 现在具有安全联锁,带有响亮的警告,让您确认删除池。目前依赖于这些功能在没有确认的情况下清除数据的任何脚本都需要相应调整。
v0.60 值得注意的变更
rbd: 增量备份
rbd: 仅当条带化参数与旧版本不兼容时才设置 STRIPINGV2 功能
rbd: 调整镜像大小时需要 --allow-shrink
librbd: 许多错误修复
rgw: 管理 REST API
rgw: 修复 COPY 到自身时的对象损坏
rgw: 基于 rpm 系统的新的 sysvinit 脚本
rgw: 允许带有 ‘_’ 的桶
rgw: CORS 支持
mon: 许多修复
mon: 改进的修剪行为
mon: 修复数据转换/升级问题(从 bobtail)
mon: 调整 leveldb 的能力
mon: config-keys 服务用于在监视器上存储任意数据
mon: ‘osd crush add|link|unlink|add-bucket …’ 命令
mon: 在修剪时触发 leveldb compaction
osd: 每个 rados pool 的配额(对象、字节)
osd: 用于从单个 OSD 数据存储导出、导入和删除 PG 的工具
osd: 在干净关闭时通知 mon 以避免 IO 停滞
osd: 改进的损坏 journal 检测
osd: 调整 leveldb 的能力
osd: 改进客户端请求节流
osd, librados: LIST_SNAPS 操作的修复
osd: scrubbing 错误修复的改进
osd: 更好地防止 OSD 出现 ENOSPC 错误
osd: 许多小修复
mds: 修复根 inode 上的 xattr 处理
mds: 修复 journal 重放中的错误
mds: 许多修复
librados: 清理快照常量定义
libcephfs: 查询 CRUSH 拓扑的调用(Hadoop 使用)
ceph-fuse, libcephfs: 对 mds 会话管理的杂项修复
ceph-fuse: 禁用缓存失效(再次)因为可能与内核死锁
sysvinit: 尝试启动所有守护程序,尽管早期失败
ceph-disk: 新的 ‘list’ 命令
ceph-disk: RHEL/CentOS 的热插拔修复
ceph-disk: 修复在 >2TB 磁盘上创建 OSD 数据分区
osd: 修复 RHEL/CentOS 系统的 udev 规则
修复初始启动期间的守护程序日志记录
v0.56 “Bobtail” 值得注意的变更
始终使用已安装的系统 leveldb (Gary Lowell)
auth: 能够在消息上要求新的 cephx 签名(默认为关闭)
buffer 单元测试 (Loic Dachary)
ceph tool: 一些 CLI 接口清理
ceph-disk: 改进多集群支持、错误处理 (Sage Weil)
ceph-disk: 支持 dm-crypt (Alexandre Marangone)
ceph-disk: 支持 sysvinit、目录或分区(而非整个磁盘)
ceph-disk: 修复旧发行版上的 mkfs args (Alexandre Marangone)
ceph-disk: 修复在 >2TB 磁盘上创建 OSD 数据分区
ceph-disk: RHEL/CentOS 的热插拔修复
ceph-disk: 新的 ‘list’ 命令
ceph-fuse, libcephfs: 对 mds 会话管理的杂项修复
ceph-fuse: 禁用缓存失效(再次)因为可能与内核死锁
ceph-fuse: 启用内核缓存失效 (Sam Lang)
ceph-fuse: 修复 statfs(2) 报告
ceph-fuse: 会话处理清理、错误修复 (Sage Weil)
crush: 能够通过 CLI 创建、删除规则
crush: 更新项目的所有实例的权重,而不仅仅是第一个 (Sage Weil)
修复初始启动期间的守护程序日志记录
修复日志轮换 (Gary Lowell)
init-ceph, mkcephfs: 使用 -a 关闭一些安全漏洞 (Sage Weil)
libcephfs: 查询 CRUSH 拓扑的调用(Hadoop 使用)
libcephfs: 许多修复,Java bindings 清理
libcephfs: Hadoop 的新 topo API 请求 (Noah Watkins)
librados: 清理快照常量定义
librados: 修复 linger 错误 (Josh Durgin)
librbd: 修复 flatten 死锁 (Josh Durgin)
librbd: 修复 flatten 的一些锁定问题 (Josh Durgin)
librbd: 许多错误修复
librbd: 可选地等待 flush,然后启用 writeback (Josh Durgin)
许多许多清理 (Danny Al-Gaaf)
mds, ceph-fuse: 修复 MDS 重启后重放请求的错误 (Sage Weil)
mds, ceph-fuse: 通过 xattrs 管理布局
mds: 允许根上的 xattrs
mds: MDS 之间快速故障转移(强制 mds 名称唯一)
mds: 修复根 inode 上的 xattr 处理
mds: 修复 journal 重放中的错误
mds: 改进会话清理 (Sage Weil)
mds: 许多修复 (Yan Zheng)
mds: 杂项错误修复,涉及集群 MDS 和故障恢复
mds: readdir 的杂项错误修复
mds: 所有数据类型的新编码(允许向前/向后兼容性) (Greg Farnum)
mds: 在目录、文件对象上存储和更新 backpointers/traces (Sam Lang)
mon: ‘osd crush add|link|unlink|add-bucket …’ 命令
mon: 调整 leveldb 的能力
mon: 近似恢复,IO 工作负载统计
mon: 避免将整个 CRUSH 子树标记为 out(例如, 如果整个机架离线)
mon: config-keys 服务用于在监视器上存储任意数据
mon: 通过 ‘ceph osd crush tunables …’ 轻松调整 crush tunables
mon: 通过 ‘ceph osd rule …’ 轻松创建 crush 规则
mon: 修复数据转换/升级问题(从 bobtail)
mon: 改进的修剪行为
mon: 许多修复
mon: 新的 ‘ceph df [detail]’ 命令
mon: 用于识别和报告时钟漂移的新检查
mon: 重新架构以利用单个 paxos 实例和键/值存储 (Joao Luis)
mon: 池删除的安全检查
mon: 如果磁盘接近满,安全关闭 (Joao Luis)
mon: 在修剪时触发 leveldb compaction
msgr: 修复 IPv6 地址比较(修复通过 ceph-deploy, chef 启动监视器)
msgr: 修复连接重置中的竞争条件
msgr: 可选地调整 TCP 缓冲区大小以避免吞吐量崩溃 (Jim Schutt)
大量代码清理和优化 (Danny Al-Gaaf)
osd, librados: 能够列出 watchers (David Zafman)
osd, librados: LIST_SNAPS 操作的修复
osd, librados: 新的 listsnaps 命令 (David Zafman)
osd: 一些 journal 错误修复
osd: 调整 leveldb 的能力
osd: 添加 ‘noscrub’, ‘nodeepscrub’ osdmap 标志 (David Zafman)
osd: 更好地防止 OSD 出现 ENOSPC 错误
osd: ceph-filestore-dump 工具用于调试
osd: 连接处理错误修复
osd: deep-scrub omap 键/值
osd: 默认使用 libaio 作为 journal(一些性能提升)
osd: 修复 ‘journal aio = true’ 模式下的挂起 (Sage Weil)
osd: 修复 pg log 修剪(避免降级集群上的内存膨胀)
osd: 修复 RHEL/CentOS 系统的 udev 规则
osd: 修复 journal checksums 中的错误 (Sam Just)
osd: 改进客户端请求节流
osd: 改进磁盘满时的处理 (David Zafman)
osd: 改进 journal 损坏检测 (Sam Just)
osd: 改进的损坏 journal 检测
osd: scrubbing 错误修复的改进
osd: 使对象快照元数据跟踪更有效 (Sam Just)
osd: 许多小修复
osd: PG split 的杂项修复 (Sam Just)
osd: 将 pg info, log 移动到 leveldb (== 更好的性能) (David Zafman)
osd: 在干净关闭时通知 mon 以避免 IO 停滞
osd: 每个 rados pool 的配额(对象、字节)
osd: 重构 watch/notify 基础设施(修复协议,消除许多错误) (Sam Just)
osd: 支持通过 HASHPSPOOL pool 标志和功能改进 PG 在 OSD 上的散列
osd: 用于从单个 OSD 数据存储导出、导入和删除 PG 的工具
osd: 更积极地修剪日志,避免出现内存泄漏
osd: 启动时验证快照集合
osd: 启动时验证快照集合 (Sam Just)
radosgw: headers 中的 ACL 授权 (Caleb Miles)
radosgw: 能够通过端口监听 fastcgi (Guilhem Lettron)
radosgw: 修复对象复制到自身 (Yehuda Sadeh)
radosgw: 杂项修复
rbd-fuse: 新工具、包
rbd: 从文件导入时避免 FIEMAP(它可能有错误)
rbd: 增量备份
rbd: 仅当条带化参数与旧版本不兼容时才设置 STRIPINGV2 功能
rbd: 调整镜像大小时需要 --allow-shrink
rbd: map/unmap 上的 udevadm settle 以避免各种竞争条件 (Dan Mick)
rbd: 在策略性位置等待 udev settle(避免虚假错误、失败)
rgw: CORS 支持
rgw: 允许带有 ‘_’ 的桶
rgw: 修复 32 位机器上的 Content-Length (Jan Harkes)
rgw: 修复日志轮换
rgw: 修复 COPY 到自身时的对象损坏
rgw: 修复 >4MB 范围请求 (Jan Harkes)
rgw: 基于 rpm 系统的新的 sysvinit 脚本
rpm/deb: purge 时不删除 /var/lib/ceph(v0.59 是唯一这样做的版本)
sysvinit: 尝试启动所有守护程序,尽管早期失败
upstart: 根据 df 自动设置 osd 权重 (Guilhem Lettron)
默认情况下使用较少的内存用于日志记录
v0.60
升级
请注意,最近添加的 librados ‘list_snaps’ 函数调用处于不断变化的状态,在 v0.61 中略有变化。建议您不要在 v0.59 或 v0.60 中使用它。
Notable Changes
osd: 使对象快照元数据跟踪更有效 (Sam Just)
osd: PG split 的杂项修复 (Sam Just)
osd: 改进 journal 损坏检测 (Sam Just)
osd: 改进磁盘满时的处理 (David Zafman)
osd: 添加 ‘noscrub’, ‘nodeepscrub’ osdmap 标志 (David Zafman)
osd: 修复 ‘journal aio = true’ 模式下的挂起 (Sage Weil)
ceph-disk-prepare: 修复旧发行版上的 mkfs args (Alexandre Marangone)
ceph-disk-activate: 改进多集群支持、错误处理 (Sage Weil)
librbd: 可选地等待 flush,然后启用 writeback (Josh Durgin)
crush: 更新项目的所有实例的权重,而不仅仅是第一个 (Sage Weil)
mon: 如果磁盘接近满,安全关闭 (Joao Luis)
rgw: 修复 32 位机器上的 Content-Length (Jan Harkes)
mds: 在目录、文件对象上存储和更新 backpointers/traces (Sam Lang)
mds: 改进会话清理 (Sage Weil)
mds, ceph-fuse: 修复 MDS 重启后重放请求的错误 (Sage Weil)
ceph-fuse: 启用内核缓存失效 (Sam Lang)
libcephfs: Hadoop 的新 topo API 请求 (Noah Watkins)
ceph-fuse: 会话处理清理、错误修复 (Sage Weil)
大量代码清理和优化 (Danny Al-Gaaf)
默认情况下使用较少的内存用于日志记录
upstart: 根据 df 自动设置 osd 权重 (Guilhem Lettron)
init-ceph, mkcephfs: 使用 -a 关闭一些安全漏洞 (Sage Weil)
rpm/deb: purge 时不删除 /var/lib/ceph(v0.59 是唯一这样做的版本)
v0.59
升级
监视器正在使用全新的存储策略和集群内协议。这意味着 v0.59 和 pre-v0.59 监视器不能相互通信。当您升级每一个时,它会将其本地数据存储转换为新格式。一旦您升级多数,仲裁将使用新协议形成,旧监视器将被阻止,直到它们也升级。因此,我们建议不要运行混合版本集群太久。
ceph-mon 现在需要先创建其数据目录,然后再执行 --mkfs,类似于 ceph-osd 上的情况。此目录不再自动创建,自定义脚本应进行相应调整。
值得注意的更改
mon: 重新架构以利用单个 paxos 实例和键/值存储 (Joao Luis)
mon: 新的 ‘ceph df [detail]’ 命令
osd: 支持通过 HASHPSPOOL pool 标志和功能改进 PG 在 OSD 上的散列
osd: 重构 watch/notify 基础设施(修复协议,消除许多错误) (Sam Just)
osd, librados: 能够列出 watchers (David Zafman)
osd, librados: 新的 listsnaps 命令 (David Zafman)
osd: 更积极地修剪日志,避免出现内存泄漏
osd: 杂项 split 修复
osd: 一些 journal 错误修复
osd: 连接处理错误修复
rbd: 从文件导入时避免 FIEMAP(它可能有错误)
librados: 修复 linger 错误 (Josh Durgin)
librbd: 修复 flatten 死锁 (Josh Durgin)
rgw: 修复 >4MB 范围请求 (Jan Harkes)
rgw: 修复日志轮换
mds: 允许根上的 xattrs
ceph-fuse: 修复 statfs(2) 报告
msgr: 可选地调整 TCP 缓冲区大小以避免吞吐量崩溃 (Jim Schutt)
默认情况下使用较少的内存用于日志记录
始终使用系统 leveldb (Gary Lowell)
v0.58
升级
监视器现在强制 MDS 名称唯一。如果多个守护程序以相同的 id 启动(例如,
mds.a),第二个将隐式将第一个标记为失败。这使得事情不那么混乱,并使守护程序重启更快(我们不再等待停止的守护程序超时),但现有的 multi-mds 配置可能需要相应调整以赋予守护程序唯一的名称。
值得注意的变更
librbd: 修复 flatten 的一些锁定问题 (Josh Durgin)
rbd: map/unmap 上的 udevadm settle 以避免各种竞争条件 (Dan Mick)
osd: 将 pg info, log 移动到 leveldb (== 更好的性能) (David Zafman)
osd: 修复 pg log 修剪(避免降级集群上的内存膨胀)
osd: 修复 journal checksums 中的错误 (Sam Just)
osd: 启动时验证快照集合 (Sam Just)
ceph-disk-prepare/activate: 支持 dm-crypt (Alexandre Marangone)
ceph-disk-prepare/activate: 支持 sysvinit、目录或分区(而非整个磁盘)
msgr: 修复连接重置中的竞争条件
msgr: 修复 IPv6 地址比较(修复通过 ceph-deploy, chef 启动监视器)
radosgw: 修复对象复制到自身 (Yehuda Sadeh)
radosgw: headers 中的 ACL 授权 (Caleb Miles)
radosgw: 能够通过端口监听 fastcgi (Guilhem Lettron)
mds: 所有数据类型的新编码(允许向前/向后兼容性) (Greg Farnum)
mds: MDS 之间快速故障转移(强制 mds 名称唯一)
crush: 能够通过 CLI 创建、删除规则
许多许多清理 (Danny Al-Gaaf)
buffer 单元测试 (Loic Dachary)
修复日志轮换 (Gary Lowell)
v0.57
这个开发版本在过去几个月中积累了许多附加功能。大多数错误修复(MDS 相关工作除外)已经反向移植到 v0.56.x,此处未提及。
升级
‘ceph osd pool delete <poolname>’ 和 ‘rados rmpool <poolname>’ 现在具有安全联锁,带有响亮的警告,让您确认删除池。目前依赖于这些功能在没有确认的情况下清除数据的任何脚本都需要相应调整。
值得注意的变更
osd: 默认使用 libaio 作为 journal(一些性能提升)
osd: 启动时验证快照集合
osd: ceph-filestore-dump 工具用于调试
osd: deep-scrub omap 键/值
ceph tool: 一些 CLI 接口清理
mon: 通过 ‘ceph osd crush tunables …’ 轻松调整 crush tunables
mon: 通过 ‘ceph osd rule …’ 轻松创建 crush 规则
mon: 近似恢复,IO 工作负载统计
mon: 避免将整个 CRUSH 子树标记为 out(例如, 如果整个机架离线)
mon: 池删除的安全检查
mon: 用于识别和报告时钟漂移的新检查
radosgw: 杂项修复
rbd: 在策略性位置等待 udev settle(避免虚假错误、失败)
rbd-fuse: 新工具、包
mds, ceph-fuse: 通过 xattrs 管理布局
mds: 杂项错误修复,涉及集群 MDS 和故障恢复
mds: readdir 的杂项错误修复
libcephfs: 许多修复,Java bindings 清理
auth: 能够在消息上要求新的 cephx 签名(默认为关闭)