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
在儲存類之間移動物件資料。