ceph rgw 桶分片之reshard

Ceph RGW(RADOS Gateway)的 reshard 功能是用来动态调整对象存储的分片(shard)数量,从而优化性能和存储利用率。随着数据量的增加,初始的分片设置可能无法满足性能需求,因此 reshard 功能允许用户在不影响服务可用性的情况下进行调整。

### Reshard 功能的详细说明:

  1. **分片的概念**:
  • 在 Ceph RGW 中,分片是将对象存储桶的对象分散到多个分片(shard)中,以便更好地管理和访问数据。每个分片可以被视为一个小的对象存储区域。
  1. **动态调整**:
  • Reshard 功能允许用户根据负载和数据量的变化,动态调整存储桶的分片数量。用户可以增加或减少分片的数量,以适应不同的使用场景。
  1. **性能优化**:
  • 通过增加分片数量,可以提高并发访问的性能,因为多个分片可以同时处理请求。相反,当数据量减少时,可以减少分片数量,从而节省资源。
  1. **无缝操作**:
  • Resharding 过程是无缝的,用户在调整分片数量时,不会影响到正在进行的读写操作。这使得系统能够在高可用性和高性能之间取得平衡。
  1. **管理工具**:
  • Ceph 提供了一些命令行工具和 API 来管理 reshard 操作。用户可以使用这些工具来查看当前的分片状态,执行 reshard 操作,以及监控性能。
  1. **监控和优化**:
  • 在执行 reshard 操作后,建议监控系统的性能,确保调整后的分片数量能够满足当前的负载需求。

### 使用场景:

  • 当存储桶中的对象数量显著增加时,可能需要增加分片数量以保持良好的性能。

  • 当存储桶中的对象数量减少时,可以考虑减少分片数量,以节省资源和提高管理效率。

### 桶分片操作:

  1. 查看桶的状态详情。

radosgw-admin bucket stats --bucket abccc

root@u22c01:~# radosgw-admin bucket stats --bucket abccc
{
    "bucket": "abccc",
    "num_shards": 37,   # 一共有37个分片
    "tenant": "",
    "zonegroup": "844b2a85-e5d8-40a4-a875-a941523e251c",
    "placement_rule": "default-placement",
    "explicit_placement": {
        "data_pool": "",
        "data_extra_pool": "",
        "index_pool": ""
    },
    "id": "b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9",   # 桶分片索引
    "marker": "b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.1",
    "index_type": "Normal",
    "owner": "test",
    "ver": "0#190,1#189,2#183,3#190,4#182,5#201,6#191,7#197,8#174,9#183,10#188,11#194,12#204,13#192,14#190,15#171,16#196,17#191,18#202,19#196,20#196,21#194,22#185,23#185,24#179,25#191,26#185,27#197,28#176,29#180,30#191,31#196,32#184,33#185,34#194,35#188,36#208",
    "master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0,8#0,9#0,10#0,11#0,12#0,13#0,14#0,15#0,16#0,17#0,18#0,19#0,20#0,21#0,22#0,23#0,24#0,25#0,26#0,27#0,28#0,29#0,30#0,31#0,32#0,33#0,34#0,35#0,36#0",
    "mtime": "2024-09-26T10:31:16.678406Z",
    "creation_time": "2024-09-25T13:57:53.525125Z",
    "max_marker": "0#,1#,2#,3#,4#,5#,6#,7#,8#,9#,10#,11#,12#,13#,14#,15#,16#,17#,18#,19#,20#,21#,22#,23#,24#,25#,26#,27#,28#,29#,30#,31#,32#,33#,34#,35#,36#",
    "usage": {
        "rgw.main": {
            "size": 7851037,
            "size_actual": 684150784,
            "size_utilized": 7851037,
            "size_kb": 7668,
            "size_kb_actual": 668116,
            "size_kb_utilized": 7668,
            "num_objects": 166905
        }
    },
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    }
}
  1. 查看桶分片索引

    root@u22c01:~# rados ls -p default.rgw.buckets.index | grep b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9 | sort
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.0
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.1
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.10
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.11
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.12
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.13
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.14
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.15
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.16
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.17
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.18
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.19
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.2
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.20
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.21
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.22
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.23
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.24
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.25
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.26
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.27
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.28
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.29
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.3
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.30
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.31
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.32
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.33
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.34
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.35
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.36
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.4
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.5
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.6
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.7
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.8
    .dir.b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9.9
    root@u22c01:~#

  2. 修改桶分片数

root@u22c01:~# radosgw-admin reshard add --bucket abccc --num-shards 64 --yes-i-really-mean-it

  1. 查看当前分片操作中的桶

    root@u22c01:~# radosgw-admin reshard add --bucket abccc --num-shards 64 --yes-i-really-mean-it
    root@u22c01:~# radosgw-admin reshard list
    [
    {
    "time": "2024-09-26T15:03:32.555544Z",
    "tenant": "",
    "bucket_name": "abccc",
    "bucket_id": "b8e366d3-0ab0-454e-9323-680528f5eccc.1054223.9",
    "new_instance_id": "",
    "old_num_shards": 37,
    "tentative_new_num_shards": 64
    }
    ]

  2. 影响桶分片参数

"rgw_dynamic_resharding": "true", # 是否开启自动分片

"rgw_max_objs_per_shard": "100000", # 单分片,最多容纳的文件数,建议在100000-125000万之间

### 总结:

Ceph RGW 的 reshard 功能是一个强大的工具,可以帮助用户根据实际需求动态调整存储桶的分片数量,从而优化性能和资源利用率。通过合理使用该功能,用户可以确保其对象存储系统在面对变化的负载时,始终保持高效和可靠。

备注:

ceph 14 ,如果桶根目录下有中文文件夹或者中文文件,在发生分片时,会丢失。可以将中文文件/文件夹放到子目录里面,一级目录使用字母。ceph 17没有这个问题

相关推荐
剑亦未配妥1 小时前
前端vue相关常见面试题,包含MVVM、双向绑定原理、性能优化、vue2和vue3性能对比等
前端
想被带飞的鱼1 小时前
vue3中< keep-alive >页面实现缓存及遇到的问题
开发语言·前端·javascript·vue.js
小凡子空白在线学习2 小时前
8 非静态数据成员默认初始化
开发语言·前端·javascript
服装学院的IT男2 小时前
【Android 14源码分析】WMS-窗口显示-流程概览与应用端流程分析
android·前端
霸王蟹2 小时前
uniapp中uni.request的统一封装 (ts版)
前端·javascript·vue.js·笔记·uni-app
Jiaberrr2 小时前
解锁微信小程序新技能:ECharts动态折线图搭配WebSocket,数据刷新快人一步!
前端·javascript·websocket·微信小程序·echarts
蒲公英10013 小时前
使用scroll-behavior属性实现页面平滑滚动的几个问题
前端·javascript·css3
莫问alicia3 小时前
Uniapp 微信小程序 最新 获取用户头像 和 昵称 方法 有效可用
前端·javascript·微信小程序·uni-app·vue
风兮梧桐4 小时前
前端导出页面PDF
前端·pdf