Administrator
Administrator
发布于 2024-12-20 / 8 阅读
0
0

Ceph 命令详细

目录

  1. ceph 命令概述
  2. 全局选项(Global Options)
  3. 主要子命令及详细参数
  4. 高级用法与示例
  5. 附录

1. ceph 命令概述

ceph 是 Ceph 集群的主要命令行工具,用于管理、监控和配置 Ceph 集群。其基本语法如下:

ceph [全局选项] <子命令> [子命令选项] [参数]
  • 全局选项(Global Options):适用于所有子命令的选项,如指定配置文件、密钥文件等。
  • 子命令(Commands):执行特定操作的命令,如管理 OSD、PG、监视器等。
  • 子命令选项(Command Options):针对特定子命令的选项。
  • 参数(Arguments):传递给子命令的参数,如实体名称、ID 等。

2. 全局选项(Global Options)

全局选项适用于所有 ceph 子命令,常用于配置命令的执行环境。以下是常见的全局选项:

选项 说明 示例
-h, --help 显示帮助信息 ceph --help
--version 显示 ceph 工具的版本信息 ceph --version
-c <file>, --conf <file> 指定 Ceph 配置文件 ceph -c /etc/ceph/ceph.conf
-k <file>, --keyring <file> 指定认证密钥文件 ceph -k /etc/ceph/ceph.client.admin.keyring
--name <entity>, -n <entity> 指定执行命令的实体名称 ceph -n client.admin
--cluster <name> 指定集群名称,适用于多集群环境 ceph --cluster mycluster status
-f <format>, --format <format> 指定输出格式,如 jsonjson-prettyxmlplain ceph -f json status
-w, --watch 实时监控集群状态,持续输出 ceph -w
--watch-interval <seconds> 设置监控输出的刷新间隔(秒) ceph -w --watch-interval 10
--admin-daemon <path> 指定管理守护进程的路径 ceph --admin-daemon /var/run/ceph/ceph-mgr.a.asok
--debug <level> 设置调试级别 ceph --debug ms=20
--quiet, -q 减少输出信息 ceph -q status

示例

ceph -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring status

3. 主要子命令及详细参数

3.1 集群状态与健康管理

ceph statusceph -s

说明:显示 Ceph 集群的总体状态,包括健康状态、OSD 数量、使用率、PG 状态等。

语法

ceph status [全局选项]
ceph -s [全局选项]

常用选项

  • -f <format>, --format <format>:指定输出格式,如 jsonjson-prettyxmlplain

示例

ceph -s
ceph status -f json-pretty

输出示例

{
    "health": {
        "status": "HEALTH_OK",
        "checks": {}
    },
    "summary": {
        "overall_status": "HEALTH_OK",
        "overall_summary": {},
        "summary_by_category": {}
    },
    "services": {
        "mon": [
            {"name": "a", "rank": 0, "state": "leader"},
            {"name": "b", "rank": 1, "state": "peon"},
            {"name": "c", "rank": 2, "state": "peon"}
        ],
        "mgr": [
            {"name": "a", "rank": 0, "state": "active"}
        ],
        "osd": [
            {"id": 0, "status": "up", "in": true},
            {"id": 1, "status": "up", "in": true},
            // 其他 OSD 信息
        ]
    },
    "pgmap": {
        "num_pgs": 100,
        "num_pgs_placed": 100,
        "num_pgs_clean": 100,
        // 其他 PG 信息
    },
    "services_info": {}
}

ceph health

说明:查看集群的健康状态。

语法

ceph health [全局选项]

常用选项

  • --format <format>:指定输出格式,如 jsonjson-prettyxmlplain

示例

ceph health
ceph health --format json-pretty

输出示例

HEALTH_OK

或者 JSON 格式:

{
    "status": "HEALTH_OK",
    "checks": {}
}

ceph df

说明:显示 Ceph 集群的数据使用情况,包括全局使用情况和各存储池的使用情况。

语法

ceph df [全局选项]

常用选项

  • -f <format>, --format <format>:指定输出格式,如 jsonjson-prettyxmlplain
  • --refresh:刷新缓存数据。

示例

ceph df
ceph df -f json-pretty

输出示例

GLOBAL:
    SIZE       AVAIL      RAW USED     %RAW USED
    100 TiB    90 TiB     10 TiB          10%

POOLS:
    NAME          ID   USED        %USED     MAX AVAIL     OBJECTS
    rbd           1    5 TiB        5%         85 TiB         5000000
    cephfs_data   2    3 TiB        3%         85 TiB         3000000

或者 JSON 格式:

{
    "stats": {
        "bytes_used": 5000000000,
        "bytes_avail": 9000000000,
        "bytes_total": 10000000000,
        "bytes_used_real": 5000000000,
        "bytes_avail_real": 9000000000,
        "bytes_total_real": 10000000000
    },
    "pools": [
        {
            "name": "rbd",
            "id": 1,
            "stats": {
                "bytes_used": 5000000000,
                "bytes_avail": 8500000000,
                "bytes_total": 9000000000,
                "objects": 5000000
            }
        },
        {
            "name": "cephfs_data",
            "id": 2,
            "stats": {
                "bytes_used": 3000000000,
                "bytes_avail": 8500000000,
                "bytes_total": 9000000000,
                "objects": 3000000
            }
        }
    ]
}

3.2 OSD(对象存储守护进程)管理

ceph osd 主命令

说明:管理 OSD(对象存储守护进程)的命令集合。

语法

ceph osd <子命令> [选项] [参数]
ceph osd tree

说明:显示 OSD 树结构,包括 OSD、主机、故障域等信息。

语法

ceph osd tree [全局选项]

常用选项

  • -f <format>, --format <format>:指定输出格式,如 jsonjson-pretty

示例

ceph osd tree
ceph osd tree -f json-pretty

输出示例

ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF
-1       0.00000  root default
-3       0.01000      host node1
 0       0.00500          osd.0       up  1.00000 1.00000
 1       0.00500          osd.1       up  1.00000 1.00000
-4       0.01000      host node2
 2       0.00500          osd.2       up  1.00000 1.00000
 3       0.00500          osd.3       up  1.00000 1.00000
ceph osd df

说明:显示 OSD 的磁盘使用情况,包括每个 OSD 的总容量、已用空间、可用空间等。

语法

ceph osd df [全局选项]

常用选项

  • -f <format>, --format <format>:指定输出格式,如 jsonjson-pretty

示例

ceph osd df
ceph osd df -f json-pretty

输出示例

ID   CLASS  WEIGHT  REWEIGHT  SIZE    USE      AVAIL   %USE  VAR   PGS
0    hdd    1.000   1.000     1 TB    200 GB   800 GB   20%   0.00  100
1    hdd    1.000   1.000     1 TB    200 GB   800 GB   20%   0.00  100
2    hdd    1.000   1.000     1 TB    200 GB   800 GB   20%   0.00  100
3    hdd    1.000   1.000     1 TB    200 GB   800 GB   20%   0.00  100
ceph osd ls

说明:列出所有 OSD 的 ID。

语法

ceph osd ls [全局选项]

示例

ceph osd ls

输出示例

0
1
2
3
ceph osd crush 子命令

说明:管理 CRUSH 映射,调整数据分布策略。

语法

ceph osd crush <子命令> [选项] [参数]

常见子命令

  • add-bucket <name> <type>:添加新的 CRUSH 容器(如 host、rack 等)。
  • remove <name>:移除 CRUSH 容器。
  • move <name> <new_parent>:移动 CRUSH 容器到新的父节点。
  • reweight <name> <weight>:调整 CRUSH 容器或 OSD 的权重。
  • rm-bucket <name>:移除 CRUSH 容器(同 remove)。
  • rename <old_name> <new_name>:重命名 CRUSH 容器。
  • rule create-simple <rule_name> <root> <bucket1> [<bucket2> ...]:创建简单的 CRUSH 规则。

示例

ceph osd crush add-bucket rack1 rack
ceph osd crush move osd.0 rack1
ceph osd crush reweight osd.0 0.5
ceph osd pool 子命令

说明:管理 OSD 存储池的子命令集合。

语法

ceph osd pool <子命令> [选项] [参数]

常见子命令

  • ls:列出所有存储池。
  • create <poolname> <pg_num> [<pgp_num>]:创建新的存储池。
  • delete <poolname> <poolname> --yes-i-really-really-mean-it:删除存储池。
  • set <poolname> <option> <value>:设置存储池的配置选项。
  • get <poolname> <option>:获取存储池的配置选项。
  • rename <old_poolname> <new_poolname>:重命名存储池。
  • application enable <poolname> <application>:启用存储池的特定应用。
  • application disable <poolname> <application>:禁用存储池的特定应用。

详细说明及示例

  • 列出存储池

    ceph osd pool ls
    
  • 创建存储池

    ceph osd pool create mypool 128 128
    

    参数说明:

    • mypool:存储池名称。
    • 128:PG 数量。
    • 128:PGP 数量(通常与 PG 数量相同)。
  • 删除存储池

    ceph osd pool delete mypool mypool --yes-i-really-really-mean-it
    
  • 设置存储池配置

    ceph osd pool set mypool size 3
    ceph osd pool set mypool min_size 2
    ceph osd pool set mypool crush_ruleset 1
    
  • 获取存储池配置

    ceph osd pool get mypool size
    
  • 重命名存储池

    ceph osd pool rename oldpool newpool
    
  • 启用存储池的特定应用

    ceph osd pool application enable mypool rbd
    
  • 禁用存储池的特定应用

    ceph osd pool application disable mypool rbd
    

ceph osd crush 子命令详细

CRUSH 映射是 Ceph 数据分布的核心。以下是一些常用的 crush 子命令及其说明:

  • 添加新的 CRUSH 容器

    ceph osd crush add-bucket <name> <type>
    

    示例:

    ceph osd crush add-bucket rack1 rack
    

    说明:

    • <name>:新 CRUSH 容器的名称,如 rack1
    • <type>:CRUSH 容器的类型,如 rackhostdatacenter 等。
  • 移除 CRUSH 容器

    ceph osd crush remove <name>
    

    示例:

    ceph osd crush remove rack1
    
  • 移动 CRUSH 容器到新的父节点

    ceph osd crush move <name> <new_parent>
    

    示例:

    ceph osd crush move osd.0 rack1
    
  • 调整 CRUSH 容器或 OSD 的权重

    ceph osd crush reweight <name> <weight>
    

    示例:

    ceph osd crush reweight osd.0 0.5
    

    说明:

    • <weight>:新的权重值,范围通常在 0.0 到 1.0 之间。权重决定了 CRUSH 映射中数据分布的比例。
  • 显示当前 CRUSH 映射

    ceph osd crush dump
    

    示例输出

    [
        {
            "id": -1,
            "name": "default",
            "type": "root",
            "children": [-3, -4],
            "weight": 1.000000,
            "depth": 0
        },
        {
            "id": -3,
            "name": "node1",
            "type": "host",
            "children": [0, 1],
            "weight": 0.010000,
            "depth": 1
        },
        {
            "id": 0,
            "name": "osd.0",
            "type": "osd",
            "children": [],
            "weight": 1.000000,
            "depth": 2
        },
        {
            "id": 1,
            "name": "osd.1",
            "type": "osd",
            "children": [],
            "weight": 1.000000,
            "depth": 2
        },
        {
            "id": -4,
            "name": "node2",
            "type": "host",
            "children": [2, 3],
            "weight": 0.010000,
            "depth": 1
        },
        {
            "id": 2,
            "name": "osd.2",
            "type": "osd",
            "children": [],
            "weight": 1.000000,
            "depth": 2
        },
        {
            "id": 3,
            "name": "osd.3",
            "type": "osd",
            "children": [],
            "weight": 1.000000,
            "depth": 2
        }
    ]
    

3.3 PG(放置组)管理

ceph pg 主命令

说明:管理 PG(放置组)的命令集合。

语法

ceph pg <子命令> [选项] [参数]
ceph pg stat

说明:显示 PG 的状态统计信息。

语法

ceph pg stat [全局选项]

示例

ceph pg stat

输出示例

126 pgs: 126 active+clean
ceph pg dump

说明:导出 PG 的详细信息。

语法

ceph pg dump [全局选项]

示例

ceph pg dump

输出示例

pg 1.0, state active+clean, acting [0,1,2]
    ...
ceph pg repair <pgid>

说明:修复指定的 PG。

语法

ceph pg repair <pgid> [全局选项]

示例

ceph pg repair 1.0
ceph pg deep-scrub <pgid>

说明:对指定的 PG 执行深度擦洗操作,用于检测和修复数据不一致。

语法

ceph pg deep-scrub <pgid> [全局选项]

示例

ceph pg deep-scrub 1.0
ceph pg force-create <pgid>

说明:强制创建指定的 PG。

语法

ceph pg force-create <pgid> [全局选项]

示例

ceph pg force-create 1.0
ceph pg repairceph pg deep-scrub 的区别
  • ceph pg repair: 用于修复 PG 中的错误状态,如不一致的对象副本、缺失的对象等。适用于 PG 处于非正常状态时。
  • ceph pg deep-scrub: 执行全面的数据一致性检查,适用于定期维护,确保数据的完整性。

3.4 监视器(Monitor)管理

ceph mon 主命令

说明:管理 Ceph 监视器(Monitor)的命令集合。

语法

ceph mon <子命令> [选项] [参数]
ceph mon stat

说明:显示监视器的状态,包括当前监视器数量、存活监视器、选举领导者等信息。

语法

ceph mon stat [全局选项]

示例

ceph mon stat

输出示例

election epoch 3, quorum a,b,c
ceph mon add <mon_name> <mon_address>

说明:添加新的监视器。

语法

ceph mon add <mon_name> <mon_address> [全局选项]

参数说明

  • <mon_name>:监视器名称,如 mon4
  • <mon_address>:监视器地址,通常包括 IP 和端口,如 192.168.1.4:6789

示例

ceph mon add mon4 192.168.1.4:6789
ceph mon remove <mon_name>

说明:移除指定的监视器。

语法

ceph mon remove <mon_name> [全局选项]

示例

ceph mon remove mon4
ceph mon getmap

说明:获取当前的监视器映射信息。

语法

ceph mon getmap [全局选项]

示例

ceph mon getmap -o monmap
ceph mon update

说明:更新监视器配置。

语法

ceph mon update <mon_name> <option> <value> [全局选项]

示例

ceph mon update mon1 mon_debug_ms 20

3.5 Manager 守护进程管理

ceph mgr 主命令

说明:管理 Ceph Manager 守护进程的命令集合。

语法

ceph mgr <子命令> [选项] [参数]
ceph mgr stat

说明:显示 Manager 守护进程的状态信息。

语法

ceph mgr stat [全局选项]

示例

ceph mgr stat

输出示例

{
    "services": {
        "dashboard": "up",
        "prometheus": "up"
    },
    "modules": [
        "dashboard",
        "prometheus"
    ]
}
ceph mgr services

说明:显示 Manager 守护进程的服务信息,如启用的模块和对应的服务地址。

语法

ceph mgr services [全局选项]

示例

ceph mgr services

输出示例

{
    "dashboard": {
        "addr": "192.168.1.1:7000"
    },
    "prometheus": {
        "addr": "192.168.1.1:9283"
    }
}
ceph mgr module 子命令

说明:管理 Manager 模块的命令集合,用于启用、禁用和列出模块。

语法

ceph mgr module <子命令> [参数] [全局选项]

常见子命令

  • enable <module>:启用指定的 Manager 模块。
  • disable <module>:禁用指定的 Manager 模块。
  • ls:列出所有启用的 Manager 模块。

详细说明及示例

  • 启用模块

    ceph mgr module enable <module>
    

    示例:

    ceph mgr module enable dashboard
    ceph mgr module enable prometheus
    
  • 禁用模块

    ceph mgr module disable <module>
    

    示例:

    ceph mgr module disable dashboard
    
  • 列出启用的模块

    ceph mgr module ls
    

    输出示例

    [
        "dashboard",
        "prometheus"
    ]
    
  • 列出所有可用模块(包括未启用的)

    ceph mgr module ls-available
    

    输出示例

    [
        "dashboard",
        "prometheus",
        "metrics",
        "telemetry"
    ]
    

3.6 存储池(Pool)管理

ceph pool 主命令

说明:管理 Ceph 存储池的命令集合。

语法

ceph pool <子命令> [选项] [参数]
ceph pool ls

说明:列出所有存储池的名称。

语法

ceph pool ls [全局选项]

示例

ceph pool ls

输出示例

rbd
cephfs_data
cephfs_metadata
ceph pool create <poolname> <pg_num> [<pgp_num>]

说明:创建新的存储池。

语法

ceph pool create <poolname> <pg_num> [<pgp_num>] [全局选项]

参数说明

  • <poolname>:存储池名称。
  • <pg_num>:PG 数量。
  • <pgp_num>:PGP 数量(通常与 PG 数量相同)。

示例

ceph pool create mypool 128 128
ceph pool delete <poolname> <poolname> --yes-i-really-really-mean-it

说明:删除存储池。需要重复存储池名称以确认操作,并添加 --yes-i-really-really-mean-it 以防止误操作。

语法

ceph pool delete <poolname> <poolname> --yes-i-really-really-mean-it [全局选项]

示例

ceph pool delete mypool mypool --yes-i-really-really-mean-it
ceph pool set <poolname> <option> <value>

说明:设置存储池的配置选项。

语法

ceph pool set <poolname> <option> <value> [全局选项]

常用选项及说明

  • size:副本数量。
  • min_size:最小副本数量,低于该数量时 OSD 将下线。
  • pg_num:PG 数量(动态调整)。
  • pgp_num:PGP 数量。
  • crush_ruleset:CRUSH 规则集编号。
  • allow_ec_overwrites:允许擦除编码池覆盖现有数据。
  • compression_mode:压缩模式。
  • snapdir_expire:快照目录过期时间。

示例

ceph pool set mypool size 3
ceph pool set mypool min_size 2
ceph pool set mypool crush_ruleset 1
ceph pool get <poolname> <option>

说明:获取存储池的配置选项值。

语法

ceph pool get <poolname> <option> [全局选项]

示例

ceph pool get mypool size

输出示例

size 3
ceph pool rename <old_poolname> <new_poolname>

说明:重命名存储池。

语法

ceph pool rename <old_poolname> <new_poolname> [全局选项]

示例

ceph pool rename oldpool newpool
ceph pool application enable <poolname> <application>

说明:启用存储池的特定应用,如 rbdcephfs 等。

语法

ceph pool application enable <poolname> <application> [全局选项]

示例

ceph pool application enable mypool rbd
ceph pool application disable <poolname> <application>

说明:禁用存储池的特定应用。

语法

ceph pool application disable <poolname> <application> [全局选项]

示例

ceph pool application disable mypool rbd
ceph pool get-quota <poolname>

说明:获取存储池的配额信息。

语法

ceph pool get-quota <poolname> [全局选项]

示例

ceph pool get-quota mypool

输出示例

max_bytes 10000000000
max_objects 1000000
ceph pool set-quota <poolname> max_bytes <bytes> [max_objects <objects>]

说明:设置存储池的配额。

语法

ceph pool set-quota <poolname> max_bytes <bytes> [max_objects <objects>] [全局选项]

示例

ceph pool set-quota mypool max_bytes 10000000000 max_objects 1000000

3.7 认证与权限管理

ceph auth 主命令

说明:管理 Ceph 的认证和权限。

语法

ceph auth <子命令> [选项] [参数]
ceph auth list

说明:列出所有认证实体及其权限。

语法

ceph auth list [全局选项]

示例

ceph auth list

输出示例

client.admin
    key: AQBW4...
    caps: [ 'mon' : 'allow *', 'osd' : 'allow *', 'mgr' : 'allow *' ]
client.user1
    key: AQBv3...
    caps: [ 'mon' : 'allow r', 'osd' : 'allow rw pool=mypool' ]
ceph auth get <entity>

说明:获取指定实体的认证信息。

语法

ceph auth get <entity> [全局选项]

示例

ceph auth get client.admin

输出示例

key: AQBW4...
caps: [ 'mon' : 'allow *', 'osd' : 'allow *', 'mgr' : 'allow *' ]
ceph auth add <entity> <caps>

说明:添加新的认证实体,并设置其权限。

语法

ceph auth add <entity> <caps> [全局选项]

参数说明

  • <entity>:实体名称,如 client.newuser
  • <caps>:权限范围,通常包括 monosdmgr 等模块的权限。

示例

ceph auth add client.newuser mon 'allow r' osd 'allow rwx pool=mypool'
ceph auth del <entity>

说明:删除指定的认证实体。

语法

ceph auth del <entity> [全局选项]

示例

ceph auth del client.newuser
ceph auth caps <entity> <module> <caps>

说明:为指定实体设置某个模块的权限。

语法

ceph auth caps <entity> <module> <caps> [全局选项]

示例

ceph auth caps client.newuser mon 'allow r' osd 'allow rw pool=mypool'
ceph auth get-or-create-key <entity> <caps>

说明:获取或创建指定实体的密钥,并设置其权限。

语法

ceph auth get-or-create-key <entity> <caps> [全局选项]

示例

ceph auth get-or-create-key client.newuser mon 'allow r' osd 'allow rw pool=mypool'

3.8 配置管理

ceph config 主命令

说明:管理 Ceph 集群的配置选项。

语法

ceph config <子命令> [选项] [参数]
ceph config dump

说明:导出当前集群的所有配置选项及其值。

语法

ceph config dump [全局选项]

示例

ceph config dump

输出示例

[global]
fsid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
mon_initial_members = a,b,c
mon_host = 192.168.1.1,192.168.1.2,192.168.1.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
ceph config set <daemon_type>.<daemon_id> <option> <value>

说明:设置特定守护进程的配置项。

语法

ceph config set <daemon_type>.<daemon_id> <option> <value> [全局选项]

参数说明

  • <daemon_type>:守护进程类型,如 monosdmgrmds 等。
  • <daemon_id>:守护进程的 ID,如 a10 等。
  • <option>:配置项名称。
  • <value>:配置项的值。

示例

ceph config set mon.a mon_debug_ms 20
ceph config set osd.0 osd_recovery_max_active 3
ceph config get <daemon_type>.<daemon_id> <option>

说明:获取特定守护进程的配置项值。

语法

ceph config get <daemon_type>.<daemon_id> <option> [全局选项]

示例

ceph config get mon.a mon_debug_ms

输出示例

20
ceph config push <file>

说明:从指定的配置文件推送配置到集群。

语法

ceph config push <file> [全局选项]

示例

ceph config push /etc/ceph/custom.conf
ceph config reset <daemon_type>.<daemon_id> <option>

说明:重置特定守护进程的配置项到默认值。

语法

ceph config reset <daemon_type>.<daemon_id> <option> [全局选项]

示例

ceph config reset mon.a mon_debug_ms
ceph config get <daemon_type>.<daemon_id> [<option>]

说明:获取特定守护进程的所有配置项,或指定的配置项。

语法

ceph config get <daemon_type>.<daemon_id> [<option>] [全局选项]

示例

  • 获取所有配置项:

    ceph config get mon.a
    
  • 获取特定配置项:

    ceph config get mon.a mon_debug_ms
    
ceph config reload <daemon_type>.<daemon_id>

说明:重新加载特定守护进程的配置。

语法

ceph config reload <daemon_type>.<daemon_id> [全局选项]

示例

ceph config reload mon.a

3.9 文件系统(CephFS)管理

ceph fs 主命令

说明:管理 Ceph 文件系统(CephFS)的命令集合。

语法

ceph fs <子命令> [选项] [参数]
ceph fs ls

说明:列出所有 Ceph 文件系统的名称和状态。

语法

ceph fs ls [全局选项]

示例

ceph fs ls

输出示例

name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data]
ceph fs status <fs_name>

说明:显示指定 Ceph 文件系统的状态信息。

语法

ceph fs status <fs_name> [全局选项]

示例

ceph fs status cephfs

输出示例

cephfs:
    metadata server: a:1/1/2
    data pools: cephfs_data
    metadata pool: cephfs_metadata
    max_mds: 2
    active_mds: cephfs-1
    clients: 10
ceph fs create <fs_name> <metadata_pool> <data_pool>

说明:创建新的 Ceph 文件系统。

语法

ceph fs create <fs_name> <metadata_pool> <data_pool> [全局选项]

参数说明

  • <fs_name>:文件系统名称。
  • <metadata_pool>:元数据池名称。
  • <data_pool>:数据池名称。

示例

ceph fs create cephfs cephfs_metadata cephfs_data
ceph fs rm <fs_name> --yes-i-really-mean-it

说明:删除指定的 Ceph 文件系统。需要添加 --yes-i-really-mean-it 以确认操作。

语法

ceph fs rm <fs_name> --yes-i-really-mean-it [全局选项]

示例

ceph fs rm cephfs --yes-i-really-mean-it
ceph fs set <fs_name> <option> <value>

说明:设置 Ceph 文件系统的配置选项。

语法

ceph fs set <fs_name> <option> <value> [全局选项]

常用选项

  • allow_non_mds:允许非 MDS 守护进程处理元数据请求。
  • max_mds:设置最大 MDS 数量。
  • quota.max_bytes:设置文件系统的最大字节数。
  • quota.max_files:设置文件系统的最大文件数。

示例

ceph fs set cephfs max_mds 2
ceph fs set cephfs allow_non_mds true
ceph fs set cephfs quota.max_bytes 10000000000
ceph fs set cephfs quota.max_files 1000000
ceph fs get <fs_name> <option>

说明:获取 Ceph 文件系统的配置选项值。

语法

ceph fs get <fs_name> <option> [全局选项]

示例

ceph fs get cephfs max_mds

输出示例

max_mds 2
ceph fs mds fail <fs_name>.<rank>

说明:标记 MDS 守护进程为失败。

语法

ceph fs mds fail <fs_name>.<rank> [全局选项]

示例

ceph fs mds fail cephfs.0
ceph fs mds add <fs_name> <name>

说明:添加新的 MDS 守护进程。

语法

ceph fs mds add <fs_name> <name> [全局选项]

示例

ceph fs mds add cephfs mds1
ceph fs mds fail <fs_name>.<rank>

说明:标记指定的 MDS 守护进程为失败。

语法

ceph fs mds fail <fs_name>.<rank> [全局选项]

示例

ceph fs mds fail cephfs.0

3.10 日志管理

ceph log 主命令

说明:管理 Ceph 日志的命令集合。

语法

ceph log <子命令> [选项] [参数]
ceph log last <n>

说明:查看最近的 n 条日志。

语法

ceph log last <n> [全局选项]

示例

ceph log last 100
ceph log list

说明:列出日志的级别和类型。

语法

ceph log list [全局选项]

示例

ceph log list

输出示例

[
    {
        "level": "debug",
        "type": "all"
    },
    {
        "level": "info",
        "type": "all"
    },
    {
        "level": "warn",
        "type": "all"
    },
    {
        "level": "error",
        "type": "all"
    }
]
ceph log set <level> <type>

说明:设置日志级别和类型。

语法

ceph log set <level> <type> [全局选项]

参数说明

  • <level>:日志级别,如 debuginfowarnerror
  • <type>:日志类型,如 allmonosdmgrmds 等。

示例

ceph log set debug mon
ceph log set info osd

3.11 其他重要子命令

ceph tell

说明:向特定守护进程发送命令。

语法

ceph tell <daemon> <command> [选项] [参数]

参数说明

  • <daemon>:目标守护进程,如 mon.aosd.0 等。
  • <command>:要执行的命令,如 injectargs

示例

ceph tell mon.a injectargs '--mon-cluster-log-to-stderr'

详细示例

  • 向 OSD 守护进程发送命令以重新加载配置:

    ceph tell osd.0 injectargs '--osd-max-backfills 5'
    
  • 向 Manager 守护进程发送命令以启用某个模块:

    ceph tell mgr.a module enable mymodule
    

ceph version

说明:显示 Ceph 集群和 ceph 工具的版本信息。

语法

ceph version [全局选项]

示例

ceph version

输出示例

ceph version 15.2.13 (c71e2e6b4e9da59b...) nautilus (stable)
选项
  • --format <format>:指定输出格式,如 jsonjson-pretty

示例

ceph version --format json-pretty

输出示例

{
    "version": "15.2.13",
    "commit": "c71e2e6b4e9da59b...",
    "branch": "nautilus",
    "type": "stable"
}

ceph pg repair <pgid>

说明:修复指定的 PG。

语法

ceph pg repair <pgid> [全局选项]

示例

ceph pg repair 1.0

ceph pg deep-scrub <pgid>

说明:对指定的 PG 执行深度擦洗操作。

语法

ceph pg deep-scrub <pgid> [全局选项]

示例

ceph pg deep-scrub 1.0

4. 高级用法与示例

4.1 自动化脚本示例

以下是一些常见的 Ceph 管理任务的自动化脚本示例:

监控集群状态并发送警报

#!/bin/bash

HEALTH=$(ceph health)
if [[ "$HEALTH" != "HEALTH_OK" ]]; then
    echo "Ceph Cluster Health: $HEALTH" | mail -s "Ceph Health Alert" admin@example.com
fi

定期检查并修复 PG

#!/bin/bash

PG_LIST=$(ceph pg dump | grep 'state active+clean' -v | awk '{print $2}')
for PG in $PG_LIST; do
    ceph pg repair $PG
done

自动扩展存储池的 PG 数量

#!/bin/bash

POOL_NAME="mypool"
CURRENT_PG=$(ceph pg dump | grep "^pg $POOL_NAME" | awk '{print $3}')
NEW_PG=$((CURRENT_PG * 2))
ceph pg pool set $POOL_NAME pg_num $NEW_PG
ceph pg pool set $POOL_NAME pgp_num $NEW_PG

自动重启异常 OSD

#!/bin/bash

for OSD in $(ceph osd tree | grep 'osd.' | awk '{print $1}'); do
    STATUS=$(ceph osd stat | grep "osd.$OSD" | awk '{print $2}')
    if [[ "$STATUS" != "up" ]]; then
        echo "OSD $OSD is down. Restarting..."
        systemctl restart ceph-osd@${OSD}
    fi
done

4.2 常见故障排除

OSD 处于 down 或 out 状态

检查 OSD 守护进程是否运行

systemctl status ceph-osd@<osd_id>

重新启动 OSD

systemctl restart ceph-osd@<osd_id>

将 OSD 标记为 in

ceph osd in <osd_id>

PG 不健康,如 degradedundersized

检查 PG 状态

ceph pg stat
ceph pg dump | grep <pgid>

执行 PG 修复

ceph pg repair <pgid>

检查 OSD 的健康状态,确保有足够的 OSD 在线

ceph osd stat

监视器无法选举领导者

检查监视器服务状态

systemctl status ceph-mon@<mon_name>

查看监视器日志

journalctl -u ceph-mon@<mon_name>

确保监视器数量为奇数,以避免选举问题

ceph mon stat

添加或移除监视器以确保 quorum

ceph mon add mon4 192.168.1.4:6789
ceph mon remove mon3

无法创建新的存储池

检查是否存在配额限制

ceph osd pool get-quota <poolname>

检查 CRUSH 映射是否正确

ceph osd crush dump

确保有足够的 PG 数量,并且 OSD 分布均匀

ceph osd df

5. 附录

5.1 常用快捷命令

  • 查看所有子命令

    ceph --help
    
  • 查看特定子命令的帮助信息

    ceph <子命令> --help
    

    示例:

    ceph osd --help
    ceph pool --help
    
  • 获取特定模块的 CRUSH 映射

    ceph osd crush dump
    
  • 列出所有认证实体

    ceph auth list
    
  • 列出所有存储池及其详细信息

    ceph osd pool ls detail
    
  • 获取特定 OSD 的详细信息

    ceph osd dump | grep osd.<id>
    
  • 获取集群的配置参数

    ceph config dump
    
  • 获取特定守护进程的配置项

    ceph config get <daemon_type>.<daemon_id> <option>
    

5.2 参考资源


评论