池布局和存储类

池布局和存储类

布局目标

Jewel版本的新功能。

​ 布局目标控制哪些与特定桶关联。 在创建时选择桶的布局目标,无法修改。 radosgw-admin bucket stats命令将显示其placement_rule。

​ zonegroup配置包含一个布局目标列表,其初始目标名为default-placement。 然后,zone配置将每个zonegroup布局目标名称映射到其本地存储。 该zone布局信息包括桶索引的index_pool名称,有关不完整分段上传的元数据的data_extra_pool名称以及每个存储类的data_pool名称。

# radosgw-admin bucket stats 
[
  {
    "bucket": "new-bucket-5db3c339",
    "zonegroup": "db580da0-2953-4112-b8bc-ea840f6efa03",
    "placement_rule": "default-placement",
    "explicit_placement": {
      "data_pool": "",
      "data_extra_pool": "",
      "index_pool": ""
    },
    "id": "f7e5f321-d4b8-4e34-9861-46a4a3b70a07.1594740.1",
    "marker": "f7e5f321-d4b8-4e34-9861-46a4a3b70a07.1594740.1",
    "index_type": "Normal",
    "owner": "xf",
    "ver": "0#54",
    "master_ver": "0#0",
    "mtime": "2019-07-24 17:24:47.045792",
    "max_marker": "0#",
    "usage": {
      "rgw.main": {
        "size": 400587786,
        "size_actual": 400592896,
        "size_utilized": 400587786,
        "size_kb": 391200,
        "size_kb_actual": 391204,
        "size_kb_utilized": 391200,
        "num_objects": 3
      },
      "rgw.multimeta": {
        "size": 0,
        "size_actual": 0,
        "size_utilized": 0,
        "size_kb": 0,
        "size_kb_actual": 0,
        "size_kb_utilized": 0,
        "num_objects": 0
      }
    },
    "bucket_quota": {
      "enabled": false,
      "check_on_raw": false,
      "max_size": -1,
      "max_size_kb": 0,
      "max_objects": -1
    }
  }
]
# radosgw-admin zonegroup get db580da0-2953-4112-b8bc-ea840f6efa03 
{
  "id": "db580da0-2953-4112-b8bc-ea840f6efa03",
  "name": "default",
  "api_name": "",
  "is_master": "true",
  "endpoints": [
    
  ],
  "hostnames": [
    
  ],
  "hostnames_s3website": [
    
  ],
  "master_zone": "f7e5f321-d4b8-4e34-9861-46a4a3b70a07",
  "zones": [
    {
      "id": "f7e5f321-d4b8-4e34-9861-46a4a3b70a07",
      "name": "default",
      "endpoints": [
        
      ],
      "log_meta": "false",
      "log_data": "false",
      "bucket_index_max_shards": 0,
      "read_only": "false",
      "tier_type": "",
      "sync_from_all": "true",
      "sync_from": [
        
      ],
      "redirect_zone": ""
    }
  ],
  "placement_targets": [
    {
      "name": "default-placement",
      "tags": [
        
      ]
    }
  ],
  "default_placement": "default-placement",
  "realm_id": ""
}
# radosgw-admin zone get f7e5f321-d4b8-4e34-9861-46a4a3b70a07 
{
  "id": "f7e5f321-d4b8-4e34-9861-46a4a3b70a07",
  "name": "default",
  "domain_root": "default.rgw.meta:root",
  "control_pool": "default.rgw.control",
  "gc_pool": "default.rgw.log:gc",
  "lc_pool": "default.rgw.log:lc",
  "log_pool": "default.rgw.log",
  "intent_log_pool": "default.rgw.log:intent",
  "usage_log_pool": "default.rgw.log:usage",
  "reshard_pool": "default.rgw.log:reshard",
  "user_keys_pool": "default.rgw.meta:users.keys",
  "user_email_pool": "default.rgw.meta:users.email",
  "user_swift_pool": "default.rgw.meta:users.swift",
  "user_uid_pool": "default.rgw.meta:users.uid",
  "otp_pool": "default.rgw.otp",
  "system_key": {
    "access_key": "",
    "secret_key": ""
  },
  "placement_pools": [
    {
      "key": "default-placement",
      "val": {
        "index_pool": "default.rgw.buckets.index",
        "data_pool": "default.rgw.buckets.data",
        "data_extra_pool": "default.rgw.buckets.non-ec",
        "index_type": 0,
        "compression": ""
      }
    }
  ],
  "metadata_heap": "",
  "realm_id": ""
}

存储类

Nautilus版本的新功能。

存储类用于自定义对象数据的布局。S3桶生命周期规则可以自动在存储类之间转换对象。

存储类是根据布局目标来定义的。每个zonegroup布局目标均以其初始类STANDARD列出其可用的存储类。zone配置负责为zonegroup的每个存储类提供data_pool池名称。

ZONEGROUP/ZONE配置

​ 在zonegroup和zone上使用radosgw-admin命令执行布局配置。

​ 可使用以下方式查询zonegroup布局配置:

# radosgw-admin zonegroup get  
{
  "id": "ab01123f-e0df-4f29-9d71-b44888d67cd5",
  "name": "default",
  "api_name": "default",
  ...
    "placement_targets": [
    {
      "name": "default-placement",
      "tags": [
        
      ],
      "storage_classes": [
        "STANDARD"
      ]
    }
  ],
  "default_placement": "default-placement",
  ...
}

​ 可以使用以下方式查询zone布局配置:

# radosgw-admin zone get 
{
  "id": "557cdcee-3aae-4e9e-85c7-2f86f5eddb1f",
  "name": "default",
  "domain_root": "default.rgw.meta:root",
  ...
    "placement_pools": [
    {
      "key": "default-placement",
      "val": {
        "index_pool": "default.rgw.buckets.index",
        "storage_classes": {
          "STANDARD": {
            "data_pool": "default.rgw.buckets.data"
          }
        },
        "data_extra_pool": "default.rgw.buckets.non-ec",
        "index_type": 0
      }
    }
  ],
  ...
}

注意

如果尚未执行任何前面的多站点配置,则会创建名为default的zone和zonegroup,并且在重启Ceph对象网关之前,对zone/zonegroup的更改将不会生效。 如果已为多站点创建了一个域(realm),则一旦使用radosgw-admin period update -commit提交更改,zone/zonegroup更改将生效。

添加布局目标

要创建名为temporary的新布局目标,需首先将其添加到zonegroup:

# radosgw-admin zonegroup placement add --rgw-zonegroup default --placement-id temporary

​ 然后提供该目标的zone布局信息:

# radosgw-admin zone placement add \      
--rgw-zone default \      
--placement-id temporary \      
--data-pool default.rgw.temporary.data \      
--index-pool default.rgw.temporary.index \      
--data-extra-pool default.rgw.temporary.non-ec
添加存储类

要将名为COLD的新存储类添加到default-placement目标,请首先将其添加到zonegroup:

# radosgw-admin zonegroup placement add \      
--rgw-zonegroup default \      
--placement-id default-placement \      
--storage-class COLD

然后为该存储类提供zone布局信息:

# radosgw-admin zone placement add \      
--rgw-zone default \      
--placement-id default-placement \      
--storage-class COLD \      
--data-pool default.rgw.cold.data \      
--compression lz4

自定义布局

DEFAULT PLACEMENT

默认情况下,新建桶时将使用zonegroup的default_placement目标。 可使用以下命令更改此zonegroup设置:

# radosgw-admin zonegroup placement default \      
--rgw-zonegroup default \      
--placement-id new-placement
USER PLACEMENT

Ceph对象网关用户可以通过在用户信息中设置非空的default_placement字段来覆盖zonegroup的默认布局目标。 同样,default_storage_class可以覆盖默认情况下应用于对象的STANDARD存储类。

# radosgw-admin user info --uid testid 
{
  ...
  "default_placement": "",
  "default_storage_class": "",
  "placement_tags": [
    
  ],
  ...
}

如果一个zonegroup的布局目标包含任何tags,则用户将无法创建具有该布局目标的桶,除非其用户信息在其placement_tags字段中至少包含一个匹配的标记。这对于限制对某些类型的存储的访问非常有用。

radosgw-admin命令可以直接使用以下命令修改这些字段:

# radosgw-admin user modify \
      --uid <user-id> \
      --placement-id <default-placement-id> \
      --storage-class <default-storage-class> \
      --tags <tag1,tag2>
S3 BUCKET PLACEMENT

创建使用S3协议的桶时,可以提供布局目标作为LocationConstraint的一部分,以覆盖用户和zonegroup的默认布局目标。

通常,LocationConstraint必须与zonegroup的api_name匹配:

<LocationConstraint>default</LocationConstraint>

可以在api_name的冒号后面添加自定义布局目标:

<LocationConstraint>default:new-placement</LocationConstraint>
SWIFT BUCKET PLACEMENT

创建使用Swift协议的桶时,可以在HTTP头X-Storage-Policy中提供布局目标:

X-Storage-Policy: new-placement
使用存储类

所有布局目标都有一个STANDARD存储类,默认情况下应用于新对象。 用户可以使用其default_storage_class覆盖此默认值。

要在非默认存储类中创建对象,请在请求的HTTP标头中提供该存储类名称。 S3协议使用X-Amz-Storage-Class头,而Swift协议使用X-Object-Storage-Class头。

然后,可以使用S3对象生命周期管理来使用Transition操作在存储类之间移动对象数据。

生命周期设置

桶生命周期配置可用于管理对象,以便在它们的整个生命周期内对其进行有效存储。 在过去的版本中,生命周期处理受到单线程处理速率的限制。 在Nautilus版本中,此问题已得到解决,并且Ceph对象网关现在允许跨其它Ceph对象网关实例对桶生命周期进行并行线程处理,并用随机有序序列代替有序索引分片枚举。

在寻求提高生命周期处理的积极性时,特别要考虑两个选项:

rgw_lc_max_worker

描述:此选项指定要并行运行的生命周期工作线程的数量,从而同时处理桶和索引分片。

类型:整型

默认值:3

rgw_lc_max_wp_worker

描述:该选项指定每个lifecycle workers工作池中的线程数。这个选项可以帮助加速处理每个桶。

这些值可以根据特定工作负载进行调整,以进一步提高生命周期处理的积极性。对于桶数量较多(数千)的工作负载,可以考虑将rgw_lc_max_worker值从默认值3增加,而对于桶数量较少但每个桶对象数较高(数十万)的工作负载,可以考虑将rgw_lc_max_wp_worker值从默认值3降低。

注:

当想要调整这两个特定值时,请在增加之前验证当前集群性能和Ceph对象网关利用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值