新闻

NEWS

VC君讲技术02 | 快照、RGW等技术操作分享

发布时间:2020-04-03 发布者:瑞驰信息技术

《VC君讲技术》
技术分享第2期
作者:带鱼、乐枫

本期分享以下内容
1、ceph文件系统对于windows客户端的支持
2、添加基于快照的镜像重新同步的支持
3、客户端在黑名单过期后自动重连
4、日志记录每天磁盘分配状态
5、RGW:分段上传数据丢失问题
6、RGW:设置bucket policy时增加对子用户的支持
7、RGW:copy object接口的权限验证失效

------------------------------------------------------------------------------

ceph文件系统对于windows客户端的支持

Windows cephfs support,客户端允许Windows主机使用rados、rbd和cephfs资源,ceph在为windows使用者提供更好的接口。涉及多个功能pr,目前该功能还在开发中
Part 1: #31981  旨在为即将到来的Windows移植工作打下基础。
Part 2: #32704
Part 3: #32705
Part 4: #32707
Part 5: #32780
Part 6: #32779
Part 7: #32778
Part 8: #32777
Part 9: #32776
Part 10: #33750 该pr将允许Windows主机安装ceph文件系统

添加基于快照的镜像重新同步的支持

rbd-mirror:add support for snapshot-based mirroring resyncs
pr:https://github.com/ceph/ceph/pull/33490
rbd-mirror添加对于基于快照创建的镜像进行重新同步功能

客户端在黑名单过期后自动重连

client: auto reconnect after blacklisted
pr:https://github.com/ceph/ceph/pull/31480
issue:https://tracker.ceph.com/issues/20
一个非常古老的问题,在最新的O版得到更加友善的处理。客户端在黑名单过期后,可以自动重新获取一个client id,重新连接到mds再次获取所有caps。之前正在进行的op会被重试,缓存读写会被丢弃,已经打开的文件句柄返回EIO。

日志记录每天磁盘分配状态

os/bluestore: log allocation stats on a daily basis
https://github.com/ceph/ceph/pull/33565
目标是能够跟踪分配器碎片化趋势。这可能有助于分析由老化引起的性能变化。

RGW:分段上传数据丢失问题

在多段上传场景下,当stripe size大于chunk size时,上传的对象将会丢失部分数据。因为大多数客户端都不会把分段大小设置得很大,比如s3cmd默认设置为15M,所以分段上传发生的概率还是很大的,这个问题直接导致用户数据丢失,是个很严重的问题。
这个问题是在N版里面引入的,在master里面进行了修复,然后backport到了N版里面,详情参考PR:https://github.com/ceph/ceph/pull/33271,如果用到了N版的用户需要关注下。

RGW:设置bucket policy时增加对子用户的支持

bucket policy的功能目的是为了更精细化的去控制用户对资源的访问权限,比如可以在策略中要求请求中必须携带有指定header才能访问资源,大部分情况下bucket policy可以替代bucket ACL。
上面介绍的bucket policy只能针对用户去设置,而不能针对其子用户去设置,这对于使用swift接口的用户不是很友好,社区在master分支下增加了对子用户的支持,并backport到了N版(PR:https://github.com/ceph/ceph/pull/33714),设置示例:
$ cat > examplepol
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred:subuser"]},
    "Action": "s3:PutObjectAcl",
    "Resource": [
      "arn:aws:s3:::happybucket/*"
    ]
  }]
}

$ s3cmd setpolicy examplepol s3://happybucket
$ s3cmd delpolicy s3://happybucket

RGW:copy object接口的权限验证失效

当调用copy object接口把一个对象从一个bucket里面copy到另外一个不同用户的bucket里面时,哪怕目标桶没有write权限,也可以成功。这种权限问题都是比较重要的,因为涉及到数据安全问题。
问题原因是由于验证目标桶的权限的代码没有正确执行导致的,在master分支合入,backport到了M版,用到M版的用户需要关注PR:
https://github.com/ceph/ceph/pull/29628