zoukankan      html  css  js  c++  java
  • 【ceph | 运维】PG相关命令

    PG

    一个 Pool 中有多个 PG,具体数量可以通过以下命令查看:

    ceph osd pool get test pg_num

     

    查看 Pool 中 PG 的分布:

    ceph pg ls-by-pool test

     查看对象的位置:

    ceph osd map test test-object
    osdmap e264282 pool 'test' (4) object 'test-object' -> pg 4.bf8f6aea (4.a) -> up ([1,0,2], p1) acting ([1,0,2], p1)

    【解释】test-object 是对象名,test 是 pool。

    • osdmap e264282 是 osdmap 的版本号
    • pool 'test' (4) 是 pool 名字及 ID
    • object 'test-object' 是对象名称
    • pg 4.bf8f6aea (4.a) 是对象所在 PG 的编号

    结果显示这个对象在 ID 为 4.a 的 PG 上,并且位于 OSD1,OSD0,OSD2 上,三个副本。

    查看 pg 中有哪些对象:

    $ rados --pgid 4.a ls

    像 Pool,PG 这些东西都是有 id 的,查看 Pool 的 ID:

    ceph osd lspools
     

    我这里名为 test 的 pool 的 ID 为 4,所以 test 下面的 PG 的 ID 都是以 4 开头的。

    查看pg和osd的映射关系:

    ceph pg dump | grep ^4. |awk '{print $1 "\t" $17 "\t" $10}'

    查看pg状态:

    ceph pg dump pgs_brief

    获取pg数量

    ceph osd pool get {pool-name} pg_num

    c存储池相关pg信息

    ceph pg dump pools

    查看pg和osd的映射关系:osd为主

    ceph pg dump osds

    手动触发peering

    pg repeer pg repeer <pgid>

    要检索特定放置组的统计信息,请执行以下操作:

    ceph pg {pg-id} query

    这里的query其实是一种元数据信息,部分形式如下:

     1 {
     2     "snap_trimq": "[]",
     3     "snap_trimq_len": 0,
     4     "state": "active+clean",
     5     "epoch": 236,
     6     "up": [
     7         1,
     8         2,
     9         0
    10     ],
    11     "acting": [
    12         1,
    13         2,
    14         0
    15     ],
    16     "acting_recovery_backfill": [
    17         "0",
    18         "1",
    19         "2"
    20     ],
    21     "info": {
    22         "pgid": "1.0",
    23         "last_update": "223'23",
    24         "last_complete": "223'23",
    25         "log_tail": "0'0",
    26         "last_user_version": 23,
    27         "last_backfill": "MAX",
    28         "purged_snaps": [],
    29         "history": {
    30             "epoch_created": 2,
    31             "epoch_pool_created": 2,
    32             "last_epoch_started": 221,
    33             "last_interval_started": 220,
    34             "last_epoch_clean": 221,
    35             "last_interval_clean": 220,
    36             "last_epoch_split": 0,
    37             "last_epoch_marked_full": 0,
    38             "same_up_since": 220,
    39             "same_interval_since": 220,
    40             "same_primary_since": 212,
    41             "last_scrub": "189'21",
    42             "last_scrub_stamp": "2020-12-14T06:56:57.181447+0800",
    43             "last_deep_scrub": "189'20",
    44             "last_deep_scrub_stamp": "2020-12-13T04:09:17.431508+0800",
    45             "last_clean_scrub_stamp": "2020-12-14T06:56:57.181447+0800",
    46             "prior_readable_until_ub": 0
    47         },
    48 ...
    49 }
    View Code

    我们可以看到很多理论部分讲过的元数据,比如 up 、acting、info、epoch、peer、interval等。snap_trimq表示快照删除队列。

    【获取pg map】要获取特定放置组的放置组映射,请执行以下操作:

    ceph pg map {pg-id}

    例如:

    ceph pg map 1.6c

    Ceph将返回放置组图,放置组和OSD状态:

    osdmap e13 pg 1.6c (1.6c) -> up [1,0] acting [1,0]

    解释一下,这里表示 pg 1.6c被映射到 编号为 [1,0]的两个OSD上。 Acting 表示Acting Set。

    Scrub擦洗

    关于Scrub的含义,我们在《Ceph纠删码部署》已经介绍了,Scrub指数据扫描,通过读取对象数据并重新计算校验和,再与之前存储在对象属性的校验和进行比对,以判断有无静默错误(磁盘自身无法感知的错误)。要Scrub,请执行以下操作:

    ceph pg scrub {pg-id}

    Ceph检查主节点和任何副本节点,生成放置组中所有对象的目录并进行比较,以确保没有丢失或不匹配的对象,并且它们的内容一致。假设所有副本都匹配,则最终的语义扫描可确保所有与快照相关的对象元数据都是一致的。通过日志报告错误。

    要从特定池中清理所有放置组,请执行以下操作:

    ceph osd pool scrub {pool-name}

    参考资料:

    1. 迁移之美——PG读写流程与状态迁移详解

    2. Ceph 中的 Pools 和 PGs

    3. Ceph储存引擎BlueStore.md

  • 相关阅读:
    【调查】用户眼中已经消亡的十大IT技术
    Asp.net Cache
    双卡已落伍 三卡三待全键盘手机亮相
    C#修改本机的IP,网关等网络地址的代码片段
    【ZT】实战.NET大规模网站架构:Web加速器
    【面霸】面试ERP实施顾问的三招“必杀技”
    数据库优化使用索引优化存储过程
    【備查】informix sql函数使用说明大全
    “8月3日我们要过男人节”
    Asp.Net网站优化:数据库索引优化
  • 原文地址:https://www.cnblogs.com/sunbines/p/15535895.html
Copyright © 2011-2022 走看看