v0.80.9 Firefly 发布
这是 firefly 的一个错误修复版本。它修复了 librbd 中的性能回归、一个重要的 CRUSH 错误行为(见下文)以及几个 RGW 错误。我们还已将 flock/fcntl 锁的支持回溯到 ceph-fuse 和 libcephfs。
我们建议所有 Firefly 用户升级。
有关更详细的信息,请参阅完整的变更日志。
调整 CRUSH 映射 ¶
此点版本修复了 CRUSH 中的几个问题,这些问题会在调整 OSD 权重时触发过多的数据迁移。这些问题在权重变化非常小时(例如,从 0 变为 0.01)时最为明显,但相同的错误也可能导致其他情况下过多的(虽然不太明显的)迁移。
但是,由于该错误可能已经影响了您的集群,因此修复它可能会触发数据迁移回到更正确的位置。因此,您必须手动选择加入修复后的行为。
为了设置新的可调参数以纠正此行为
ceph osd crush set-tunable straw_calc_version 1
请注意,此更改不会立即生效。但是,从现在开始,CRUSH 映射中任何调整过的 ‘straw’ bucket 都将获得无错误的内部权重,并且这种转换可能会触发一些重新平衡。
您可以使用以下命令估算集群最终需要多少重新平衡:
ceph osd getcrushmap -o /tmp/cm crushtool -i /tmp/cm --num-rep 3 --test --show-mappings > /tmp/a 2>&1 crushtool -i /tmp/cm --set-straw-calc-version 1 -o /tmp/cm2 crushtool -i /tmp/cm2 --reweight -o /tmp/cm2 crushtool -i /tmp/cm2 --num-rep 3 --test --show-mappings > /tmp/b 2>&1 wc -l /tmp/a # num total mappings diff -u /tmp/a /tmp/b | grep -c ^+ # num changed mappings
将 /tmp/a 中的总行数除以更改的行数。我们发现大多数集群都在 10% 以下。
您可以使用以下命令强制执行所有重新平衡:
ceph osd crush reweight-all
否则,它将在 CRUSH 权重下次调整时在某个未知的未来发生。
值得注意的更改 ¶
- ceph-fuse:flock、fcntl 锁支持 (Yan, Zheng, Greg Farnum)
- crush:修复 straw bucket 权重计算,添加 straw_calc_version 可调参数 (#10095 Sage Weil)
- crush:修复 tree bucket (Rongzu Zhu)
- crush:修复 tree 权重的下溢 (Loic Dachary, Sage Weil)
- crushtool:添加 –reweight (Sage Weil)
- librbd:在丢失镜像之前完成待处理的操作 (#10299 Jason Dillaman)
- librbd:修复读取缓存性能回归 (#9854 Jason Dillaman)
- librbd:优雅地处理已删除/重命名的池 (#10270 Jason Dillaman)
- mon:修复 chooseleaf_vary_r 可调参数的转储 (Sage Weil)
- osd:修复 peering 时 snaptrimmer 中的 PG ref 泄漏 (#10421 Kefu Chai)
- osd:处理带有快照的无操作写入 (#10262 Sage Weil)
- radosgw-admin:创建用户时创建子用户 (#10103 Yehuda Sadeh)
- rgw:更改 multipart uplaod id magic (#10271 Georgio Dimitrakakis, Yehuda Sadeh)
- rgw:在设置 ACL 时不要覆盖 bucket/object 所有者 (#10978 Yehuda Sadeh)
- rgw:为嵌入式 civetweb 启用 IPv6 (#10965 Yehuda Sadeh)
- rgw:修复部分 swift GET (#10553 Yehuda Sadeh)
- rgw:修复配额禁用 (#9907 Dong Lei)
- rgw:适当地索引 swift 键 (#10471 Hemant Burman, Yehuda Sadeh)
- rgw:使 setattrs 更新 bucket 索引 (#5595 Yehuda Sadeh)
- rgw:传递 civetweb 可配置项 (#10907 Yehuda Sadeh)
- rgw:删除 swift 用户清单 (DLO) 哈希计算 (#9973 Yehuda Sadeh)
- rgw:返回 0 长度对象的正确长度 (#9877 Yehuda Sadeh)
- rgw:S3 对象复制 content-type 修复 (#9478 Yehuda Sadeh)
- rgw:在 S3 对象复制上发送 ETag (#9479 Yehuda Sadeh)
- rgw:在 fastcgi 中显式发送 HTTP 状态原因 (Yehuda Sadeh)
- rgw:从 sysvinit (el6) 初始化脚本设置 ulimit -n (#9587 Sage Weil)
- rgw:在身份验证时更新 swift 子用户权限掩码 (#9918 Yehuda Sadeh)
- rgw:正确解码查询参数 (#10271 Georgio Dimitrakakis, Yehuda Sadeh)
- rgw:在读取对象属性时使用 attrs (#10307 Yehuda Sadeh)
- rgw:使用 rn 作为 http 标头 (#9254 Benedikt Fraunhofer, Yehuda Sadeh)