Ceph 开发者月报 2019-08

ceph周报

 

本期看点:

RGW 引入存储抽象层的概念,实现存储和 API 的隔离

rgw: Project Zipper part 1 #28824 https://github.com/ceph/ceph/pull/28824

 

本篇为 2019 年度《Ceph 开发者月报》专栏的第八篇,在《Ceph 开发者月报》中,我们 UMCloud 存储团队将以月度为单位,为大家分享当月 Ceph 社区的有趣的提交和重要的变更,方便大家即刻掌握一手 Ceph 社区开发资料。

每篇将以对象存储、块存储、文件存储、统一存储层、集群管理、基础库等模块组织,为大家一一介绍。

 

对象存储

  1. RGW 支持转移 bucket、修改用户 uid 和存储桶名rgw : Bucket mv, bucket chown and user rename utilities #28813
    ceph/ceph#28813

    重命名用户/存储桶:

    radosgw-admin user rename --uid=johny --new-uid=joe
    radosgw-admin bucket link --bucket=foo --bucket-new-name=bar --uid=johnny
    

    将存储桶从旧的全局租户空间移动到特定租户下:

    radosgw-admin bucket link --bucket=/foo --uid=12345678$12345678'
    

    将存储桶链接到指定用户并更改对象ACL:

    radosgw-admin bucket chown --bucket=/foo --uid=12345678$12345678'
    
  2. RGW 引入存储抽象层的概念,实现存储和 API 的隔离rgw: Project Zipper part 1 #28824
    ceph/ceph#28824

    引入 SAL(Storage Abstraction Layer) 的概念,分离存储和功能模块。在 RGWRadosStore 里封装原有 RGWRados,并由 RGWRadosStore 来管理存储和对外提供 user/bucket/service 等功能。当前仅完成 RGWRados 的封装和基本的框架结构,后面对 RGWRados 模块化过程中,会在 SAL 里将需要暴露的 API 进行重构。

  3. RGW Metadata 重构rgw: metadata refactoring #29118
    ceph/ceph#29118

    在对 RGWRados 进行模块化时,发现当前 Metadata 的实现不利于模块化,于是也对 Metadata 进行重构了

 

统一存储层

基于 seastar 重构 OSD 的工作推进

crimson, osd: add support for Ceph Classes, part 1 #29651
ceph/ceph#29651

crimson/net: lossless policy for v2 protocol #29378
ceph/ceph#29378

crimson/osd: implement replicated write #29076
ceph/ceph#29076

crimson: futurized CyanStore’s member functions and Collection #29470
ceph/ceph#29470

 

集群管理

  1. dashboard 提供启用/禁用用户的操作mgr/dashboard: Provide user enable/disable capability #29046
    ceph/ceph#29046

    可以通过新增的两条 CLI 命令来操作:

    ceph dashboard ac-user-disable <user>
    ceph dashboard ac-user-enable <user>
    

    也可以在 dashboard 上操作:

     

  2. bluestore 新增 free-dump/free-score 命令检查内存碎片[bluestore][tools] Inspect allocations in bluestore #29425
    ceph/ceph#29425

    bluestore 底层存储的内存碎片会对性能有影响。要检查 bluestore 内存碎片可以用以下命令:

    ceph daemon osd.123 bluestore allocator score block
    

    如果打分在 [0.9-1.0] 区间内,说明碎片太多,已经影响到 BlueFS 的性能。

    检查相应 OSD 的碎片:

    ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-123 --allocator block free-score
    

    获得具体 free chunks 的报告:

    ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-123 --allocator block free-dump
    

    admin-socket 接口:

    # ./bin/ceph -c ceph.conf --admin-daemon /tmp/ceph-asok.bgkj0P/osd.0.asok bluestore allocator score bluefs-slow
    {
        "fragmentation_rating": 0
    }
    
  3. bluestore 支持追踪存储池内 omap 的占用,并通过 ceph df detail 进行展示os/bluestore,mon: segregate omap keys by pool; report via df #29292
    ceph/ceph#29292

    例如:

    # ceph df detail
    RAW STORAGE:
        CLASS     SIZE       AVAIL      USED        RAW USED     %RAW USED 
        ssd       33 GiB     21 GiB     9.2 GiB       12 GiB         37.11 
        TOTAL     33 GiB     21 GiB     9.2 GiB       12 GiB         37.11 
     
    POOLS:
        POOL     ID     STORED      (DATA)      (OMAP)      OBJECTS     USED        (DATA)      (OMAP)     %USED     MAX AVAIL     QUOTA OBJECTS     QUOTA BYTES     DIRTY     USED COMPR     UNDER COMPR 
        foo       1     2.1 GiB     2.1 GiB     8.0 MiB         831     6.3 GiB     6.2 GiB     24 MiB     23.49       6.8 GiB     N/A               N/A               831            0 B             0 B 
    
  4. ceph -s 支持显示 mds scrub 状态mds: display scrub status in ceph status #28855
    ceph/ceph#28855

    例如:

    $ ceph -s
      cluster:                                                          
        id:     18a4f74f-7a1b-45bb-b971-4399c32797be                                                          
        health: HEALTH_ERR                                                                                    
                1 MDSs report damaged metadata                                                                 
    
      services:                                                                                               
        mon: 1 daemons, quorum a (age 3m)    
        mgr: x(active, since 3m)                    
        mds: a:1 {0=a=up:active} 2 up:standby
        osd: 3 osds: 3 up (since 92s), 3 in (since 12h)                 
    
      task status:                                                                                            
        scrub status:                                                                                         
            mds.0: active [paths:/]                     
    
      data:                                                                                                   
        pools:   2 pools, 24 pgs                                                                              
        objects: 66.79k objects, 1.4 GiB
        usage:   12 GiB used, 21 GiB / 33 GiB avail             
        pgs:     24 active+clean                                        
    
      io:                                                                                                     
        client:   1.5 MiB/s rd, 1.24k op/s rd, 0 op/s wr

     

  5. OSDMonitor 使用 PriorityCache 作为缓存,并支持自动调整 cache 大小mon/OSDMonitor: Use generic priority cache tuner for mon caches #28227
    ceph/ceph#28227

    PriorityCache 默认是一个基于优先级的分级 LRU 缓存,可以为优先级更高的缓存先分配内存。OSDMonitor 当前使用 PRI1 的优先级(越小越高)。新增 mon_memory_autotune 来决定是否周期性地自动调整缓存大小,以及使用 mon_osd_cache_size_min 和 mon_memory_target 来控制内存的上下限。

  6. mon 支持消除集群健康告警mon: add ability to mute health alerts #29422
    ceph/ceph#29422

    例如,临时消除 OSD_DOWN 的告警 1h 可以:

    $ ceph health mute OSD_DOWN 1h
    $ ceph health
    HEALTH_OK (muted: OSD_DOWN)
    $ ceph health detail
    HEALTH_OK (muted: OSD_DOWN)
    (MUTED) OSD_DOWN 1 osds down
        osd.1 is down
        
    # 移除 mute
    $ ceph health unmute OSD_DOWN
    

    mute code 可见: https://docs.ceph.com/docs/master/rados/operations/health-checks/#definitions

     

本月提交情况

image

发表评论

电子邮件地址不会被公开。 必填项已用*标注