新闻

NEWS

VC君讲技术08 | pr功能分享

发布时间:2020-09-23 发布者:瑞驰信息技术
ceph server

01、rbd:librbd定时更新rbd配置;

当前更新了rbd的配置后,只能刷新rbd image后,才会重新读取全局或池级的配置。也就是说,必须中断业务,才能更新配置。比如iscsi使用librbd时,如果更新配置:

rbd_cache = true,则需要重启iscsi服务。此时需要一种机制来在线按需刷新image配置。 

此pr就实现了这个功能:https://github.com/ceph/ceph/pull/36725,大致机制就是定时通知librbd客户端更新 image配置,该pr已经backport到了N版。


02、rgw:生命周期功能提供性能统计;之前rgw lc的实现里面没有包含相关的性能统计功能,该pr实现了该功能:https://github.com/ceph/ceph/pull/36018。 并且允许在每个radosgw实例中调整并行运行的LCWorker线程。

03、rgw:使用nginx+自定义插件的方式来实现cache;给出了具体的nginx配置和自定义插件的源码,pr:https://github.com/ceph/ceph/pull/36646。

04、bug:radsgw-admin bucket list/stats 显示超过1000条不能全部显示

nautilus: rgw: radsgw-admin bucket list/stats truncates for user w/ >1000 buckets https://github.com/ceph/ceph/pull/36165


05、KernelDevice::_sync_write()函数,它不支持每次调用超过RW_MAX_IO字节的写入。这将导致写入不完整,并可能导致RocksDB在后续读取时失败。

nautilus: core: os/bluestore: fix large (>2GB) writes when bluefs_buffered_io = true https://github.com/ceph/ceph/pull/35404


06、mgsr2.1:新的消息模式msgr2支持 crc校验和安全模式 

nautilus: New msgr2 crc and secure modes (msgr2.1) https://github.com/ceph/ceph/pull/35733


07、osd bench测试删除osd_lock锁,修复测试hang问题 osd/OSD.cc: remove osd_lock for bench 

https://github.com/ceph/ceph/pull/36251


cephfs内核客户端

01、
内核5.9版本kclient客户端的主要更新:

已经完成了文件系统客户端度量的工作,它们现在每秒发送一次到所有可用的MDSes。 

除此之外,我们还对文件系统进行了大量的修复和清理,包括在多MDS设置中减少MDS请求重发的调整,以及对SELinux符号链接标记和Jeff对MClientSession消息解码的修复 https://github.com/ceph/ceph- client/commit/7c2a69f610e64c8dec6a06a66e721f4ce1dd783a 

commit summary: 

ceph: handle zero-length feature mask in session messages 

ceph: use frag's MDS in either mode 

ceph: move sb->wb_pagevec_pool to be a global mempool 

ceph: set sec_context xattr on symlink creation 

ceph: remove redundant initialization of variable mds 

ceph: fix use-after-free for fsc->mdsc 

ceph: remove unused variables in ceph_mdsmap_decode() 

ceph: delete repeated words in fs/ceph/ 

ceph: send client provided metric flags in client metadata 

ceph: periodically send perf metrics to MDSes 

ceph: check the sesion state and return false in case it is closed 

libceph: replace HTTP links with HTTPS ones 

ceph: remove unnecessary cast in kfree() 

libceph: just have osd_req_op_init() return a pointer 

ceph: do not access the kiocb after aio requests 

ceph: clean up and optimize ceph_check_delayed_caps() 

ceph: fix potential mdsc use-after-free crash 

ceph: switch to WARN_ON_ONCE in encode_supported_features() 

ceph: add global total_caps to count the mdsc's total caps number 

ceph: add check_session_state() helper and make it global


02、
内核5.8版本kclient客户端的主要更新:­ 

-OSD/MDS延迟和caps缓存指标基础设施的文件。目前可通过调试gfs,在未来并将定期发送到MDS。 

-支持rbd和文件系统的副本读取(平衡和本地化读取)。默认情况下仍然是始终从主服务器读 取,用户可以选择使用新的crush_locationread_from_replica选项。注意,自从O版后, 从副本读取对于一般使用是安全的。 

-支持RADOS分配提示标志。目前由rbd使用,用于传播新的compression_hint映射选项给 出的可压缩/不可压缩提示,并准备传递更高级的提示,例如,基于文件系统中的 fadvise()。 

支持高效的跨配额领域重命名(Luis Henriques)对分类帽处理的改进和清理,特别是解开一 些锁定

https://github.com/ceph/ceph- client/commit/95288a9b3beee8dd69d73b7691e36f2f231b7903 

commit summary: 

rbd: compression_hint option 

libceph: support for alloc hint flags 

libceph: read_from_replica option 

libceph: support for balanced and localized reads 

libceph: crush_location infrastructure 

libceph: decode CRUSH device/bucket types and names 

libceph: add non-asserting rbtree insertion helper 

ceph: skip checking caps when session reconnecting and releasing reqs 

ceph: make sure mdsc->mutex is nested in s->s_mutex to fix dead lock 

ceph: don't return -ESTALE if there's still an open file 

libceph, rbd: replace zero-length array with flexible-array 

ceph: allow rename operation under different quota realms 

ceph: normalize 'delta' parameter usage in check_quota_exceeded 

ceph: ceph_kick_flushing_caps needs the s_mutex 

ceph: request expedited service on session's last cap flush 

ceph: convert mdsc->cap_dirty to a per-session list 

ceph: reset i_requested_max_size if file write is not wanted 

ceph: throw a warning if we destroy session with mutex still locked 

ceph: fix potential race in ceph_check_caps 

ceph: document what protects i_dirty_item and i_flushing_item