一旦你有一个运行的集群,你可能会使用CEPH工具来监控集群状态。监控集群一般包含对OSD状态、MONITORS状态、PLACEMENT GROUP状态和METADATA SERVER状态的监控。

交互模式

直接运行ceph命令,可以进入交互模式,例如:

cephceph> healthceph> statusceph> quorum_statusceph> mon_status

检查集群健康

在启动集群后、开始读写前,需要首先检查集群健康状态。可以通过以下命令检查集群健康状态:

ceph health

如果没有指定默认配置文件或者keyring的,需要手动指定:

ceph -c /path/to/conf -k /path/to/keyring health

刚启动ceph集群时,该命令可能会返回类似“ HEALTH_WARN XXX num placement groups stale”。这些情况下需要等待一段时间再进行检查。等集群状态正常了,该命令应该返回“HEALTH_OK“。此时可以正常使用集群。

观察一个集群

为了观察集群不停刷新的日志,可以使用以下命令:

ceph -w

ceph会输出每个日志,例如:

cluster b370a29d-9287-4ca3-ab57-3d824f65e339
 health HEALTH_OK
 monmap e1: 1 mons at {ceph1=10.0.0.8:6789/0}, election epoch 2, quorum 0 ceph1
 osdmap e63: 2 osds: 2 up, 2 in
  pgmap v41338: 952 pgs, 20 pools, 17130 MB data, 2199 objects
        115 GB used, 167 GB / 297 GB avail
             952 active+clean

2014-06-02 15:45:21.655871 osd.0 [INF] 17.71 deep-scrub ok
2014-06-02 15:45:47.880608 osd.1 [INF] 1.0 scrub ok
2014-06-02 15:45:48.865375 osd.1 [INF] 1.3 scrub ok
2014-06-02 15:45:50.866479 osd.1 [INF] 1.4 scrub ok
2014-06-02 15:45:01.345821 mon.0 [INF] pgmap v41339: 952 pgs: 952 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail
2014-06-02 15:45:05.718640 mon.0 [INF] pgmap v41340: 952 pgs: 1 active+clean+scrubbing+deep, 951 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail
2014-06-02 15:45:53.997726 osd.1 [INF] 1.5 scrub ok
2014-06-02 15:45:06.734270 mon.0 [INF] pgmap v41341: 952 pgs: 1 active+clean+scrubbing+deep, 951 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail
2014-06-02 15:45:15.722456 mon.0 [INF] pgmap v41342: 952 pgs: 952 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail
2014-06-02 15:46:06.836430 osd.0 [INF] 17.75 deep-scrub ok
2014-06-02 15:45:55.720929 mon.0 [INF] pgmap v41343: 952 pgs: 1 active+clean+scrubbing+deep, 951 active+clean; 17130 MB data, 115 GB used, 167 GB / 297 GB avail

输出包含以下信息:

  • Cluster ID 集群ID

  • Cluster health status   集群健康状态

  • The monitor map epoch and the status of the monitor quorum

  • The OSD map epoch and the status of OSDs

  • The placement group map version       palcement group版本 :v41338

  • pg数量和pools

  • 名义上总使用存储空间和存储的对象数量

  • 总数据存储空间

Ceph如何统计空间

used值反映了实际使用的原生存储空间。xxx GB / xxx GB小的值反映了集群所有可用空间的值。概念数(notional number ,这里是17130 MB data)指的是数据没有被复制、克隆、快照的大小。此外,ceph存储数据实际使用空间远超过概念数空间,因为ceph会创建数据副本并且可能会进行克隆和快照。

检查集群空间使用状态

可以使用df选项检查数据使用情况:ceph df 
输出示范:

ceph df

其中GLOBAL章节输出的是集群总使用情况:

  • SIZE:集群总空间

  • AVAIL:集群可用空间

  • RAW USED:存储已用空间

  • %RAW UESD:已用空间百分比。可以使用full radio和near full radio来保证不达到存储的上限。

POOLS章节出书的是所有POOL和该POOL使用的概念数空。这个输出不包含复制、克隆和快照。例如,这里显示存储一个对象使用了1M,notional使用显示为1M,但是实际使用空间会是2M或者更多(根据副本、克隆、快照的数量决定)。

  • NAME:pool的名称

  • ID:pool的id

  • USED:notional已经使用的空间

  • %USED:notional已经使用空间的百分比

  • Objects:notional存储的对象数量

注意 在POOLS中的数量是概念性的,他们不包含复制、快照或者克隆。这样的结果是USED和%USED的总数只和是和GLOBAL中RAW USED和%RAW USED不一致的。

检查集群状态

为了检查集群状态,执行以下命令:

ceph status

或者:

ceph -s

在交互模式下,可以使用status:

ceph> status

Ceph会返回状态结果. 一个仅有1个monitor和2个OSDs的返回值是:

cluster b370a29d-9287-4ca3-ab57-3d824f65e339
 health HEALTH_OK
 monmap e1: 1 mons at {ceph1=10.0.0.8:6789/0}, election epoch 2, quorum 0 ceph1
 osdmap e63: 2 osds: 2 up, 2 in
  pgmap v41332: 952 pgs, 20 pools, 17130 MB data, 2199 objects
        115 GB used, 167 GB / 297 GB avail
               1 active+clean+scrubbing+deep
             951 active+clean

检查OSD状态

可以通过以下命令监控OSD状态:

ceph osd stat

或者:

ceph osd dump

你可以根据OSD在CRUSH map中的位置检查他们:

ceph osd tree

Ceph会返回host中CRUSH树和OSDs的状态、权重:

# id    weight  type name       up/down reweight
-1      3       pool default
-3      3               rack mainrack
-2      3                       host osd-host
0       1                               osd.0   up      1
1       1                               osd.1   up      1
2       1                               osd.2   up      1

更多信息,请参考 Monitoring OSDs and Placement Groups.

检查MONITOR状态

如果集群有多个MON,在集群开启后、读写数据前,需要检查monitor quorum status(集群仲裁状态)。当有多个monitors节点时,仲裁是必须要有的。应该定期检查monitor状态。

执行以下命令进行检查monitor:

ceph mon stat

Or:

ceph mon dump

检查仲裁:

ceph quorum_status

Ceph会返回仲裁状态。例如,一个有三个monitors组成的集群可能会返回:

{ "election_epoch": 10,
  "quorum": [
        0,
        1,
        2],
  "monmap": { "epoch": 1,
      "fsid": "444b489c-4f16-4b75-83f0-cb8097468898",
      "modified": "2011-12-12 13:28:27.505520",
      "created": "2011-12-12 13:28:27.505520",
      "mons": [
            { "rank": 0,
              "name": "a",
              "addr": "127.0.0.1:6789\/0"},
            { "rank": 1,
              "name": "b",
              "addr": "127.0.0.1:6790\/0"},
            { "rank": 2,
              "name": "c",
              "addr": "127.0.0.1:6791\/0"}
           ]
    }}

检查MDS状态

Metadata servers provide metadata services for Ceph FS. Metadata servers have two sets of states: up | down and active | inactive. To ensure your metadata servers are up and active, execute the following:

ceph mds stat

To display details of the metadata cluster, execute the following:

ceph mds dump

检查PLACEMENT GROUP状态

PG会将对象对应到OSDs。当你监控pgs,你会希望他们都处于active+clean状态。更多信息请参考: Monitoring OSDs and Placement Groups.

USING THE ADMIN SOCKET使用ADMIN

Ceph admin socket允许你通过socket接口查询一个进程。默认情况下,Ceph的sockets文件的路径是/var/run/ceph。为了通过socket获取进程信息,需要登录到运行进程的主机并且运行以下命令:

ceph daemon {daemon-name}
ceph daemon {path-to-socket-file}

例如,以下操作是相同的:

ceph daemon osd.0 foo
ceph daemon /var/run/ceph/ceph-osd.0.asok foo

使用以下命令查看可以使用的管理socket信息:

ceph daemon {daemon-name} help

管理socket允许你在进程运行的时候显示和配置它。查看Viewing a Configuration at Runtime获取更详细的信息。另外,你可以在进程运行的时候直接设置参数。