中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

创建存储池

对象存储需要用到多个存储池,把元数据等数据量较小的存储池建立在SSD上可提高性能。本例介绍在SSD上创建对象存储元数据存储池,在HDD上创建对象存储数据存储池。

Ceph的存储池默认使用三副本模式,其中对象存储数据存储池有时会设置为EC纠删码模式以节省存储空间,以下分两个部分分别介绍副本模式和EC模式存储池的创建方法。如果选用副本模式,请参考创建副本存储池;如果选用EC模式,请参考创建EC存储池

创建副本存储池

  1. 查看crush类,在ceph1上执行。
    1
    ceph osd crush class ls
    

    服务器上既有基于SSD的创建的OSD,又有基于HDD创建的OSD,则crush class会显示两种类型,如下所示:

    [
    "hdd",
    "ssd"
    ]
  2. 为SSD class和HDD class分别创建crush rule,在ceph1上执行。
    1
    2
    ceph osd crush rule create-replicated rule-ssd default host ssd
    ceph osd crush rule create-replicated rule-hdd default host hdd
    

  3. 查看crush rule是否创建成功,在ceph1上执行。
    1
    ceph osd crush rule ls
    

    当前集群的crush rule如下所示:

    replicated_rule
    rule-ssd
    rule-hdd

    其中replicated_rule是集群默认使用的crush rule,若不指定crush rule则默认使用这个。该rule是三副本模式,存储池的所有数据会按照一定比例存储到所有存储设备上(SSD和HDD上都会有数据存储),rule-ssd和rule-hdd则会分别只把数据存储到SSD上和HDD上。

  4. 创建Data Pool和Index Pool,在ceph1上执行。
    1
    2
    3
    4
    ceph osd pool create default.rgw.buckets.data 1024 1024
    ceph osd pool create default.rgw.buckets.index 256 256
    ceph osd pool application enable default.rgw.buckets.data rgw
    ceph osd pool application enable default.rgw.buckets.index rgw
    
    • 创建存储池命令最后的两个数字,比如ceph osd pool create default.rgw.buckets.data 1024 1024中的两个1024分别代表存储池的pg_num和pgp_num,即存储池对应的pg数量。Ceph官方文档建议整个集群所有存储池的pg数量之和大约为:(OSD数量 * 100)/数据冗余因数,数据冗余因数对副本模式而言是副本数,对EC模式而言是数据块+校验块之和。例如,三副本模式是3,EC4+2模式是6。
    • 此处整个集群3台服务器,每台服务器15个OSD,总共45个OSD,按照上述公式计算应为1500,一般建议pg数取2的整数次幂。由于default.rgw.buckets.data存放的数据量远大于其他几个存储池的数据量,因此该存储池也成比例的分配更多的pg。

    综上,default.rgw.buckets.data的pg数量取1024,default.rgw.buckets.index的pg数量取128或者256。

  5. 修改所有存储池的crush规则,在ceph1上执行。
    1
    2
    for i in `ceph osd lspools | grep -v data | awk '{print $2}'`; do ceph osd pool set $i crush_rule rule-ssd; done
    ceph osd pool set default.rgw.buckets.data crush_rule rule-hdd
    
  6. 取消Proxy配置,在ceph1、ceph2、ceph3上执行。
    1
    2
    unset http_proxy
    unset https_proxy
    
  7. 使用curl或者web节点登录验证,要注意IP地址与端口的对应关系,下图以IP地址为192.168.3.164、端口为10013为例说明,出现如下字样表示RGW创建成功。

    至此网关服务创建成功。

创建EC存储池

  1. 查看crush类,在ceph1上执行。
    1
    ceph osd crush class ls
    

    如果服务器上既有基于SSD的创建的OSD,又有基于HDD创建的OSD,则crush class会显示两种类型,如下所示:

    [
    "hdd",
    "ssd"
    ]
  2. 为SSD class创建crush rule,在ceph1上执行(前提是环境上osd部署在ssd磁盘)。
    1
    ceph osd crush rule create-replicated rule-ssd default host ssd
    
  3. 查看crush rule是否创建成功,在ceph1上执行。
    1
    ceph osd crush rule ls
    

    当前集群的crush rule如下所示,其中replicated_rule是集群默认使用的crush rule,若不指定crush rule则默认使用这个。该rule是三副本模式,存储池的所有数据会按照一定比例存储到所有存储设备上(SSD和HDD上都会有数据存储, 但需满足前提条件:服务器上既有基于SSD创建的OSD,又有基于HDD创建的OSD),rule-ssd则会只把数据存储到SSD上。

    replicated_rule
    rule-ssd
  4. 创建EC profile。
    1
    ceph osd erasure-code-profile set myprofile k=4 m=2 crush-failure-domain=osd crush-device-class=hdd
    

    以EC 4+2为例,以上命令创建了一个名为myprofile的EC profile,k为数据块数量,m为校验块数量,crush-failure-domain=host表示最小故障域为host,crush-device-class=hdd表示crush rule建立在hdd上。

    一般情况下,最小故障域设置为host,若host数量小于k+m,则需要将故障域改为osd,否则会因无法找到足够多的host而报错。

  5. 创建Data Pool和Index Pool,在ceph1上执行。
    1
    2
    3
    4
    ceph osd pool create default.rgw.buckets.data 2048 2048 erasure myprofile
    ceph osd pool create default.rgw.buckets.index 256 256
    ceph osd pool application enable default.rgw.buckets.data rgw
    ceph osd pool application enable default.rgw.buckets.index rgw
    
    • ceph-deploy osd pool create default.rgw.buckets.data 2048 2048 erasure myprofile命令创建的是EC模式的pool,对于对象存储而言,只需修改default.rgw.buckets.data为EC pool即可,其他pool仍使用默认3副本模式。
    • 创建存储池命令最后的两个数字,比如ceph osd pool create default.rgw.buckets.data 2048 2048 erasure myprofile中的两个2048分别代表存储池的pg_num和pgp_num,即存储池对应的pg数量。Ceph官方文档建议整个集群所有存储池的pg数量之和大约为:(OSD数量 * 100)/ 数据冗余因数,数据冗余因数对副本模式而言是副本数,对EC模式而言是数据块+校验块之和。例如,三副本模式是3,EC4+2模式是6。
    • 此处整个集群3台服务器,每台服务器36个OSD,总共108个OSD,按照上述公式计算应为1800,一般建议pg数取2的整数次幂。由于default.rgw.buckets.data存放的数据量远大于其他几个存储池的数据量,因此该存储池也成比例的分配更多的pg。

    综上,default.rgw.buckets.data的pg数量取2048,default.rgw.buckets.index的pg数量取128或者256。

  6. 修改Data Pool以外所有存储池的crush规则,在ceph1上执行。
    1
    for i in `ceph osd lspools | grep -v data | awk '{print $2}'`; do ceph osd pool set $i crush_rule rule-ssd; done
    
  7. 取消Proxy配置,在ceph1、ceph2、ceph3上执行。
    1
    2
    unset http_proxy
    unset https_proxy
    
  8. 使用curl或者web节点登录验证,如下图所示。

    至此网关服务创建成功。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词