列出存储池

    1. ceph osd lspools

    创建存储池

    1. 要创建一个存储池,执行:
    2. ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] \
    3. [crush-ruleset-name] [expected-num-objects]
    4. ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure \
    5. [erasure-code-profile] [crush-ruleset-name] [expected_num_objects]
    6. 参数含义如下:
    7. {pool-name}
    8. 描述: 存储池名称,必须唯一。
    9. 类型: String
    10. 是否必需: 必需。
    11. {pg-num}
    12. 描述: 存储池拥有的归置组总数。关于如何计算合适的数值,请参见归置组。默认值 8 对大多数系统都不合适。
    13. 类型: 整数
    14. 是否必需: Yes
    15. 默认值: 8
    16. {pgp-num}
    17. 描述: 用于归置的归置组总数。此值应该等于归置组总数,归置组分割的情况下除外。
    18. 类型: 整数
    19. 是否必需: 没指定的话读取默认值、或 Ceph 配置文件里的值。
    20. 默认值: 8
    21. {replicated|erasure}
    22. 描述: 存储池类型,可以是副本(保存多份对象副本,以便从丢失的 OSD 恢复)或纠删(获得类似 RAID5 的功能)。多副本存储池需更多原始存储空间,但已实现所有 Ceph 操作;纠删存储池所需原始存储空间较少,但目前仅实现了部分 Ceph 操作。
    23. 类型: String
    24. 是否必需: No.
    25. 默认值: replicated
    26. [crush-ruleset-name]
    27. 描述: 此存储池所用的 CRUSH 规则集名字。指定的规则集必须存在。
    28. 类型: String
    29. 是否必需: No.
    30. 默认值: 对于多副本( replicated )存储池来说,其默认规则集由 osd pool default crush replicated ruleset 配置决定,此规则集必须存在。 对于用 erasure-code 编码的纠删码( erasure )存储池来说,不同的 {pool-name} 所使用的默认( default )纠删码配置是不同的,如果它不存在的话,会显式地创建它。
    31. [erasure-code-profile=profile]
    32. 描述: 仅用于纠删存储池。指定纠删码配置框架,此配置必须已由 osd erasure-code-profile set 定义。
    33. 类型: String
    34. 是否必需: No.
    35. 创建存储池时,要设置一个合理的归置组数量(如 100 )。也要考虑到每 OSD 的归置组总数,因为归置组很耗计算资源,所以很多存储池和很多归置组(如 50 个存储池,各包含 100 归置组)会导致性能下降。收益递减点取决于 OSD 主机的强大。
    36. 如何为存储池计算合适的归置组数量请参见归置组。
    37. [expected-num-objects]
    38. 描述: 为这个存储池预估的对象数。设置此值(要同时把 filestore merge threshold 设置为负数)后,在创建存储池时就会拆分 PG 文件夹,以免运行时拆分文件夹导致延时增大。
    39. 类型: Integer
    40. 是否必需: No.
    41. 默认值: 0 ,创建存储池时不拆分目录。

    设置存储池配额

    1. 存储池配额可设置最大字节数、和/或每存储池最大对象数。
    2. ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]
    3. 例如:
    4. ceph osd pool set-quota data max_objects 10000
    5. 要取消配额,设置为 0

    删除存储池

    1. 要删除一存储池,执行:
    2. ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
    3. 如果你给自建的存储池创建了定制的规则集,你不需要存储池时最好删除它。如果你曾严格地创建了用户及其权限给一个存储池,但存储池已不存在,最好也删除那些用户

    重命名存储池

    1. 要重命名一个存储池,执行:
    2. ceph osd pool rename {current-pool-name} {new-pool-name}
    3. 如果重命名了一个存储池,且认证用户有每存储池能力,那你必须用新存储池名字更新用户的能力(即 caps )。
    4. Note 适用 0.48 Argonaut 及以上。

    查看存储池统计信息
    要查看某存储池的使用统计信息,执行命令:

    1. rados df

    拍下存储池快照
    要拍下某存储池的快照,执行命令:

    1. ceph osd pool mksnap {pool-name} {snap-name}
    2. Note 适用 0.48 Argonaut 及以上。

    删除存储池快照
    要删除某存储池的一个快照,执行命令:

    1. ceph osd pool rmsnap {pool-name} {snap-name}
    2. Note 适用 0.48 Argonaut 及以上。

    调整存储池选项值

    1. 要设置一个存储池的选项值,执行命令:
    2. ceph osd pool set {pool-name} {key} {value}
    1. 你可以设置下列键的值:
    2. size
    3. 描述: 设置存储池中的对象副本数,详情参见设置对象副本数。仅适用于副本存储池。
    4. 类型: 整数
    5. min_size
    6. 描述: 设置 I/O 需要的最小副本数,详情参见设置对象副本数。仅适用于副本存储池。
    7. 类型: 整数
    8. 适用版本: 0.54 及以上。
    9. crash_replay_interval
    10. 描述: 允许客户端重放确认而未提交请求的秒数。
    11. 类型: 整数
    12. pgp_num
    13. 描述: 计算数据归置时使用的有效归置组数量。
    14. 类型: 整数
    15. 有效范围: 等于或小于 pg_num
    16. crush_ruleset
    17. 描述: 集群内映射对象归置时使用的规则集。
    18. 类型: 整数
    19. hashpspool
    20. 描述: 给指定存储池设置/取消 HASHPSPOOL 标志。
    21. 类型: 整数
    22. 有效范围: 1 开启, 0 取消
    23. 适用版本: 0.48 及以上。
    24. nodelete
    25. 描述: 给指定存储池设置/取消 NODELETE 标志。
    26. 类型: 整数
    27. 有效范围: 1 开启, 0 取消
    28. 适用版本: Version FIXME
    29. nopgchange
    30. 描述: 给指定存储池设置/取消 NOPGCHANGE 标志。
    31. 类型: 整数
    32. 有效范围: 1 开启, 0 取消
    33. 适用版本: Version FIXME
    34. nosizechange
    35. 描述: 给指定存储池设置/取消 NOSIZECHANGE 标志。
    36. 类型: 整数
    37. 有效范围: 1 开启, 0 取消
    38. 适用版本: Version FIXME
    39. write_fadvise_dontneed
    40. 描述: 设置或取消指定存储池的 WRITE_FADVISE_DONTNEED 标志。
    41. 类型: Integer
    42. 有效范围: 1 开启, 0 取消
    43. noscrub
    44. 描述: 设置或取消指定存储池的 NOSCRUB 标志。
    45. 类型: Integer
    46. 有效范围: 1 设置, 0 取消
    47. nodeep-scrub
    48. 描述: 设置或取消指定存储池的 NODEEP_SCRUB 标志。
    49. 类型: Integer
    50. 有效范围: 1 开启, 0 取消
    51. hit_set_type
    52. 描述: 启用缓存存储池的命中集跟踪,详情见 Bloom 过滤器。
    53. 类型: String
    54. 有效值: bloom, explicit_hash, explicit_object
    55. 默认值: bloom ,其它是用于测试的。
    56. hit_set_count
    57. 描述: 为缓存存储池保留的命中集数量。此值越高, ceph-osd 守护进程消耗的内存越多。
    58. 类型: 整数
    59. 有效范围: 1. Agent doesnt handle > 1 yet.
    60. hit_set_period
    61. 描述: 为缓存存储池保留的命中集有效期。此值越高, ceph-osd 消耗的内存越多。
    62. 类型: 整数
    63. 实例: 3600 1hr
    64. hit_set_fpp
    65. 描述: bloom 命中集类型的假阳性概率。详情见 Bloom 过滤器。
    66. 类型: Double
    67. 有效范围: 0.0 - 1.0
    68. 默认值: 0.05
    69. cache_target_dirty_ratio
    70. 描述: 缓存存储池包含的脏对象达到多少比例时就把它们回写到后端的存储池。
    71. 类型: Double
    72. 默认值: .4
    73. cache_target_dirty_high_ratio
    74. 描述: 缓存存储池内包含的已修改(脏的)对象达到此比例时,缓存层代理就会更快地把脏对象刷回到后端存储池。
    75. 类型: Double
    76. 默认值: .6
    77. cache_target_full_ratio
    78. 描述: 缓存存储池包含的干净对象达到多少比例时,缓存代理就把它们赶出缓存存储池。
    79. 类型: Double
    80. 默认值: .8
    81. target_max_bytes
    82. 描述: 达到 max_bytes 阀值时 Ceph 就回写或赶出对象。
    83. 类型: 整数
    84. 实例: 1000000000000 #1-TB
    85. target_max_objects
    86. 描述: 达到 max_objects 阀值时 Ceph 就回写或赶出对象。
    87. 类型: 整数
    88. 实例: 1000000 #1M objects
    89. hit_set_grade_decay_rate
    90. 描述: 在两个连续 hit_sets 间的热度衰退速率。
    91. 类型: Integer
    92. 有效范围: 0 - 100
    93. 默认值: 20
    94. hit_set_grade_search_last_n
    95. 描述: 计算热度时,在 hit_sets 里最多计数 N 次。
    96. 类型: Integer
    97. 有效范围: 0 - hit_set_count
    98. 默认值: 1
    99. cache_min_flush_age
    100. 描述: 达到此时间(单位为秒)时,缓存代理就把某些对象从缓存存储池刷回到存储池。
    101. 类型: 整数
    102. 实例: 600 10min
    103. cache_min_evict_age
    104. 描述: 达到此时间(单位为秒)时,缓存代理就把某些对象从缓存存储池赶出。
    105. 类型: 整数
    106. 实例: 1800 30min
    107. fast_read
    108. 描述: 在纠删码存储池上,如果打开了这个标志,读请求会向所有分片发送子操作读,然后等着,直到收到的分片足以解码给客户端。对 jerasure isa 纠删码插件来说,只要前 K 个请求返回,就能立即解码、并先把这些数据发给客户端。这样有助于资源折衷,以提升性能。当前,这些标志还只能用于纠删码存储池。
    109. 类型: Boolean
    110. 默认值: 0
    111. scrub_min_interval
    112. 描述: 在负载低时,洗刷存储池的最大间隔秒数。如果是 0 ,就按照配置文件里的 osd_scrub_min_interval
    113. 类型: Double
    114. 默认值: 0
    115. scrub_max_interval
    116. 描述: 不管集群负载如何,都要洗刷存储池的最大间隔秒数。如果是 0 ,就按照配置文件里的 osd_scrub_max_interval
    117. 类型: Double
    118. 默认值: 0
    119. deep_scrub_interval
    120. 描述: “深度”洗刷存储池的间隔秒数。如果是 0 ,就按照配置文件里的 osd_deep_scrub_interval
    121. 类型: Double
    122. 默认值: 0

    获取存储池选项值

    1. 要获取一个存储池的选项值,执行命令:
    2. ceph osd pool get {pool-name} {key}
    1. 你可以获取到下列选项的值:
    2. size
    3. 描述: size
    4. 类型: 整数
    5. min_size
    6. 描述: min_size
    7. 类型: 整数
    8. 适用版本: 0.54 及以上
    9. crash_replay_interval
    10. 描述: crash_replay_interval
    11. 类型: 整数
    12. pgp_num
    13. 描述: pgp_num
    14. 类型: 整数
    15. 有效范围: 小于等于 pg_num
    16. crush_ruleset
    17. 描述: crush_ruleset
    18. 类型: 整数
    19. hit_set_type
    20. 描述: hit_set_type
    21. 类型: String
    22. 有效选项: bloom explicit_hash explicit_object
    23. hit_set_count
    24. 描述: hit_set_count
    25. 类型: 整数
    26. hit_set_period
    27. 描述: hit_set_period
    28. 类型: 整数
    29. hit_set_fpp
    30. 描述: hit_set_fpp
    31. 类型: Double
    32. cache_target_dirty_ratio
    33. 描述: cache_target_dirty_ratio
    34. 类型: Double
    35. cache_target_dirty_high_ratio
    36. 描述: cache_target_dirty_high_ratio
    37. 类型: Double
    38. cache_target_full_ratio
    39. 描述: cache_target_full_ratio
    40. 类型: Double
    41. target_max_bytes
    42. 描述: target_max_bytes
    43. 类型: 整数
    44. target_max_objects
    45. 描述: target_max_objects
    46. 类型: 整数
    47. cache_min_flush_age
    48. 描述: cache_min_flush_age
    49. 类型: 整数
    50. cache_min_evict_age
    51. 描述: cache_min_evict_age
    52. 类型: 整数
    53. fast_read
    54. 描述: fast_read
    55. 类型: Boolean
    56. scrub_min_interval
    57. 描述: scrub_min_interval
    58. 类型: Double
    59. scrub_max_interval
    60. 描述: scrub_max_interval
    61. 类型: Double
    62. deep_scrub_interval
    63. 描述: deep_scrub_interval
    64. 类型: Double

    设置对象副本数

    1. 要设置多副本存储池的对象副本数,执行命令:
    2. ceph osd pool set {poolname} size {num-replicas}
    3. Important {num-replicas} 包括对象自身,如果你想要对象自身及其两份拷贝共计三份,指定 3
    4. 例如:
    5. ceph osd pool set data size 3
    6. 你可以在每个存储池上执行这个命令。注意,一个处于降级模式的对象其副本数小于规定值 pool size ,但仍可接受 I/O 请求。为保证 I/O 正常,可用 min_size 选项为其设置个最低副本数。例如:
    7. ceph osd pool set data min_size 2
    8. 这确保数据存储池里任何副本数小于 min_size 的对象都不会收到 I/O 了。

    获取对象副本数
    要获取对象副本数,执行命令:

    1. ceph osd dump | grep 'replicated size'

    Ceph 会列出存储池,且高亮 replicated size 属性。默认情况下, Ceph 会创建一对象的两个副本(一共三个副本,或 size 值为 3 )。

    1. [root@c4 ceph-cluster]# ceph osd pool get default.rgw.control all
    2. size: 2
    3. min_size: 1
    4. pg_num: 8
    5. pgp_num: 8
    6. crush_rule: replicated_rule
    7. hashpspool: true
    8. nodelete: false
    9. nopgchange: false
    10. nosizechange: false
    11. write_fadvise_dontneed: false
    12. noscrub: false
    13. nodeep-scrub: false
    14. use_gmt_hitset: 1
    15. auid: 18446744073709551615
    16. fast_read: 0