1. 程式人生 > 其它 >RGW池放置和儲存類(Octopus版本)

RGW池放置和儲存類(Octopus版本)

1. 放置目標

放置目標控制哪些與特定桶。 儲存桶的放置目標是在建立時選擇的,不能修改的。radosgw-admin bucket stats命令將顯示其 placement_rule.

2. 儲存類

Nautilus 版本中的新功能。

儲存類用於自定義物件資料的放置。 S3 儲存桶生命週期規則可以自動化儲存類之間的物件轉換。

儲存類是根據放置目標定義的。每個區域組放置目標列出其可用的儲存類和初始類命名為 STANDARD. 區域配置負責提供一個 每個區域組的儲存類的池名稱data_pool

3. 區域組和區域配置

檢視放置配置:

$ 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",
    ...
}
$ 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
            }
        }
    ],
    ...
}

3.1 新增放置目標

建立一個名為 temporary,首先將其新增到區域組:

$ radosgw-admin zonegroup placement add \
      --rgw-zonegroup default \
      --placement-id temporary

然後提供該目標的區域放置資訊:

$ 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

3.2 新增儲存類

新增一個名為COLD的新儲存類default-placement目標, 首先將其新增到區域組:

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

然後提供該儲存類的區域放置資訊:

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

4. 自定義放置

4.1 預設位置

預設情況下,新儲存桶將使用 zonegroup 的 default_placement目標。 可以通過以下方式更改此區域組設定:

$ radosgw-admin zonegroup placement default \
      --rgw-zonegroup default \
      --placement-id new-placement

4.2 使用者佈局

Ceph 物件閘道器使用者可以通過設定非空目標 使用者資訊中的default_placement欄位覆蓋區域組的預設位置。 同樣, default_storage_class可以覆蓋預設情況下應用於物件的STANDARD 儲存類。

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

如果區域組的放置目標包含任何 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>

5. 使用儲存類

所有放置位置目標都有一個適用於新物件預設為STANDARD的儲存類。使用者可以用default_storage_class覆蓋這個預設值。

要在非預設儲存類中建立物件,請提供請求的 HTTP 標頭中該儲存類的名稱。 S3 協議使用 X-Amz-Storage-Class標頭,而 Swift 協議使用 X-Object-Storage-Class標頭。

然後可以使用 S3 物件生命週期管理使用 Transition儲存類之間移動物件資料。