ceph-rgw之上传最大文件

单次上传:

最大值  18446744073709552046

有一个参数更改:

  rgw_max_put_size

默认值 5G 类型  L版本 Option::TYPE_UINT 实际指的是 uint64_t 所以它的最大值是上文那么大  (swift 上传最大数量也是这个限制)

而在最新master 分支 这个值最终被定义为size_t 来为了兼容不同架构。

注意:

      s3cmd 单次上传限制有两种检测机制。

      1.本身客户端检测:

        s3cmd put 6g s3://bucket1/6g --multipart-chunk-size-mb=6144  类似与这样的,是成功不了的,因为--multipart-chunk-size-mb 这个值对它有限制最大5024 就是最大值

      2. 发送rgw网关,网关在上传之前进行parm 比对,来进行是否上传,详见,rgw上传日志记录。

          s3cmd put T53 s3://bucket1/8g --disable-multipart   

分片上传:

有两个因素中决定,在ceph里面是rgw_multipart_min_part_size 和 rgw_multipart_part_upload_limit

rgw_multipart_min_part_size  分片的最小大小,默认是5m 类型是TYPE_INT 指int64_t

rgw_multipart_part_upload_limit 分片的限制,默认10000 类型是TYPE_INT 指int64_t 这两者决定了对象的最终大小

注意:

    s3cmd 默认下是开启分片上传,分片上传的默认值是15m。可以进行修改然后分片上传

配额的支持:

三种支持:user 容量 每个bucket容量 单个bucket容量

radosgw-admin quota enable --quota-scope=user --uid=test1 --max-size=20971520 对一个用户的object容量做限制

radosgw-admin quota enable --quota-scope=bucket --uid=test1 --max-size=20971520 给每个bucket 容量做限制

radosgw-admin quota enable --quota-scope=bucket --uid=test1 --bucket=quota1 --max-size=31457280 指定某一bucket 的容量30m(不受上述bucket级别容量 的限制,但受user级别容量的限制)

分片上传失败残留文件的解决办法:

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

分片上传的过程是:上传分片上传的过程是每片上传的大小+已有容量的大小 < 配额容量 成功上传,失败返回超出配额的错误

可以通过s3brower去实现设置lifecycle 设置lifecycle的日志

https://s3browser.com/bucket-lifecycle-configuration.aspx

注意:

1.这一特性可以清除存放在index pool 和 data pool 里面的垃圾数据

2.现在指定过期时间指定为day级别。

现在ceph提供这样几种解决办法:

1.通过设置lifecycle策略,设置天数,到期后删除,

2.利用AWS api 中止上传,抛给gc线程

3.不会删,等到继续上传,通过S3API继续上传完之后的文件。详见日志RGW网关读写文件日志,s3cmd 在实现这一操作时,获取part number(主要是获取partnumber 和etag值),然后自己切片上传完剩下没上传玩的部分(每次上传完会返回etag s3cmd客户端记录),最后把RGW partnumber 以及etag整体给打包给RGW,让它组织数据。(这就是断点续传的原理,日志可以说明一切,有点提升地方,就是分片)

http://docs.ceph.com/docs/master/radosgw/s3/objectops/#initiate-multi-part-upload

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容