Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

3.2. 创建存储策略

Ceph 对象网关通过标识放置目标并在与放置目标关联的池中存储 bucket 和对象来存储客户端存储桶和对象。如果您不配置放置目标,并将它们映射到实例区域配置中的池,Ceph 对象网关将使用默认目标和池,如 default_placement

存储策略为 Ceph 对象网关客户端提供了一种访问存储策略的方式,即能够将特定类型的存储作为目标,如 SSD、SAS 驱动器、SATA 驱动器。确保持久性、复制、纠删代码等特殊方法。详情请参阅 Red Hat Ceph Storage 3 的存储策略 指南。

要创建存储策略,请使用以下步骤:

  1. 使用所需的存储策略,创建一个新的 pool .rgw.buckets.special。例如,使用纠删代码、特定 CRUSH 规则集、副本数和 a pg_num 和 pgp_num 计数自定义的池。
  2. 获取 zone group 配置并将其存储在文件中,如 zonegroup.json

    语法

    [root@master-zone]# radosgw-admin zonegroup --rgw-zonegroup=<zonegroup_name> get > zonegroup.json

    示例

    [root@master-zone]# radosgw-admin zonegroup --rgw-zonegroup=default get > zonegroup.json

  3. zonegroup.json 文件中,在 placement_target 下添加一个 特殊placement 条目。

    {
    	"name": "default",
    	"api_name": "",
    	"is_master": "true",
    	"endpoints": [],
    	"hostnames": [],
    	"master_zone": "",
    	"zones": [{
    		"name": "default",
    		"endpoints": [],
    		"log_meta": "false",
    		"log_data": "false",
    		"bucket_index_max_shards": 5
    	}],
    	"placement_targets": [{
    		"name": "default-placement",
    		"tags": []
    	}, {
    		"name": "special-placement",
    		"tags": []
    	}],
    	"default_placement": "default-placement"
    }
  4. 使用修改的 zone group.json 文件设置 zone group

    [root@master-zone]# radosgw-admin zonegroup set < zonegroup.json
  5. 获取区配置并将其存储在文件中,如 zone.json

    [root@master-zone]# radosgw-admin zone get > zone.json
  6. 编辑区文件并在 placement_pool 下添加新放置策略键:

    {
    	"domain_root": ".rgw",
    	"control_pool": ".rgw.control",
    	"gc_pool": ".rgw.gc",
    	"log_pool": ".log",
    	"intent_log_pool": ".intent-log",
    	"usage_log_pool": ".usage",
    	"user_keys_pool": ".users",
    	"user_email_pool": ".users.email",
    	"user_swift_pool": ".users.swift",
    	"user_uid_pool": ".users.uid",
    	"system_key": {
    		"access_key": "",
    		"secret_key": ""
    	},
    	"placement_pools": [{
    		"key": "default-placement",
    		"val": {
    			"index_pool": ".rgw.buckets.index",
    			"data_pool": ".rgw.buckets",
    			"data_extra_pool": ".rgw.buckets.extra"
    		}
    	}, {
    		"key": "special-placement",
    		"val": {
    			"index_pool": ".rgw.buckets.index",
    			"data_pool": ".rgw.buckets.special",
    			"data_extra_pool": ".rgw.buckets.extra"
    		}
    	}]
    }
  7. 设置新区域配置。

    [root@master-zone]# radosgw-admin zone set < zone.json
  8. 更新 zone group map。

    [root@master-zone]# radosgw-admin period update --commit

    special-placement 条目列为 placement_target

在发出请求时指定存储策略:

例如:

$ curl -i http://10.0.0.1/swift/v1/TestContainer/file.txt -X PUT -H "X-Storage-Policy: special-placement" -H "X-Auth-Token: AUTH_rgwtxxxxxx"