分布式存储ceph运维操作

分布式存储ceph运维操作

一 统一节点上ceph.conf文件

如果是在admin节点修改的ceph.conf,想推送到所有其他节点,则需要执行下述命令

ceph-deploy --overwrite-conf config push mon01 mon02 mon03 osd01 osd02 osd03

修改完毕配置文件后需要重启服务生效,请看下一小节

二 ceph集群服务管理

@@@!!!下述操作均需要在具体运行服务的那个节点上运行,而不是admin节点!!!@@@

2.1 方式一

在各具体节点执行下行命令,重启节点上的所有ceph守护进程

systemctl restart ceph.target

2.2 方式二

在各具体节点执行下行命令,按类型重启相应的守护进程

# 1、重启 mgr 守护进程
systemctl restart ceph-mgr.target

# 2、重启 mds 守护进程
systemctl restart ceph-mds.target

# 3、重启 rgw 守护进程
systemctl restart ceph-radosgw.target

# 4、重启 mon 守护进程
systemctl restart ceph-mon.target

# 5、重启 osd 守护进程
登录到osd01节点上,该节点上运行有三个osd daemon进程osd.0、osd.l、osd.2

# 5.1 重启所有的osd daemoon
systemctl restart ceph-osd.target 

# 5.2 挨个重启
systemctl restart ceph-osd@0
systemctl restart ceph-osd@1
systemctl restart ceph-osd@2

了解:也可以根据进程类型+主机名.service

# 1 mon 守护进程
systemctl { start | stop | restart} ceph-mon@{mon_instance}.service
例
systemctl restart ceph-mon@mon01.service

# 2 mgr 守护进程
systemctl { start | stop | restart} ceph-mgr@{mgr_instance}.service

# 3 osd 守护进程
systemctl { start | stop | restart} ceph-osd@{osd_instance}.service

# 4 rgw 守护进程
systemctl { start | stop | restart} ceph-radosgw@{rgw_instance}.service

# 5 mds 守护进程
systemctl { start | stop | restart} ceph-mds@{mds_instance}.service

三 服务平滑重启

有时候需要更改服务的配置,但不想重启服务,或者是临时修改,此时我们就可以通过admin sockets直接与守护进程交互。如查看和修改守护进程的配置参数。

守护进程的socket文件一般是/var/run/ceph/$cluster-$type.$id.asok

基于admin sockets的操作:

  • 方式一:tell子命令

  • 方式二:daemon子命令

    ceph daemon $type.$id command
  • 方式三:通过socket文件

    ceph --admin-daemon /var/run/ceph/$cluster-$type.$id.asok command

常用command如下

help

config get parameter

config set parameter

config show

perf dump

3.1 tell子命令

命令使用格式如下,在管理节点执行即可

ceph tell {daemon-type}.{daemon id or *} injectargs --{name}={value} [--{name}={value}]
  • daemon-type:为要操作的对象类型如osd、mon等。
  • daemon id:该对象的名称,osd通常为0、1等,mon为ceph -s显示的名称,这里可以输入*表示全部。
  • injectargs:表示参数注入,后面必须跟一个参数,也可以跟多个。

例如

# 在管理节点运行
ceph tell mon.mon01 injectargs --mon_allow_pool_delete=true
ceph tell mon.* injectargs --mon_allow_pool_delete=true

mon_allow_pool_delete此选项的值默认为false,表示不允许删除pool,只有此选项打开后方可删除,记得改回去!!! 这里使用mon.ceph-monitor-1表示只对ceph-monitor-1设置,可以使用*

3.2 daemon子命令

命令格式如下,需要登录到守护进程所在的那台主机上执行

ceph daemon {daemon-type}.{id} config set {name}={value} 

例。

ssh root@mon01
ceph daemon mon.mon01 config set mon_allow_pool_delete false 

3.3 socket文件

# 1、查看帮助
ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok help

# 2、查看配置项
ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok config get mon_allow_pool_delete

# 3、设置
ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok config set mon_allow_pool_delete true

如果超过半数的monitor节点挂掉,此时通过网络访问ceph的所有操作都会被阻塞,但monitor的本地socket还是可以通信的。

ceph --admin-daemon /var/run/ceph/ceph-mon.mon03.asok quorum_status

四 维护集群常用命令

4.1 查看集群健康状况

# 检查ceph的状态
ceph -s
ceph status
ceph health
ceph health detail

# 实时观察集群健康状态
ceph -w

4.2 检查集群的使用情况

=======================命令1=======================
ceph df  # 它和 Linux 上的 df 相似

# GLOBAL段
展示了数据所占用集群存储空间的概要,详解如下
SIZE: 集群的总容量;
AVAIL: 集群的空闲空间总量;
RAW USED: 已用存储空间总量;
% RAW USED: 已用存储空间比率。用此值参照 full ratio 和 near full \ ratio 来确保不会用尽集群空间。 详情见存储容量。

# POOLS 段:
展示了存储池列表及各存储池的大致使用率。没有副本、克隆品和快照占用情况。例如,如果你 把 1MB 的数据存储为对象,理论使用率将是 1MB ,但考虑到副本数、克隆数、和快照数,实际使用率可能是 2MB 或更多。
NAME: 存储池名字;
ID: 存储池唯一标识符;
USED: 大概数据量,单位为 B、KB、MB 或 GB ;
%USED: 各存储池的大概使用率;
Objects: 各存储池内的大概对象数。

=======================命令2=======================
ceph osd df  # 可以详细列出集群每块磁盘的使用情况,包括大小、权重、使用多少空间、使用率等等

4.3 mds相关

1、查看mds状态

ceph mds stat
ceph mds dump

2、删除mds节点

ssh root@mon01 systemctl stop ceph-mds.target
ceph mds rm 0  # 删除一个不活跃的mds

# 启动mds后,则恢复正常

3、关闭mds集群

ceph mds cluster_down

4、开启mds集群

ceph mds cluster_up

5、设置cephfs 文件系统存储方式最大单个文件尺寸

ceph mds set max_file_size 1024000000000

6、了解:清除mds文件系统

# 1、强制 mds 状态为 featrue
ceph mds fail 0

# 2、删除 mds 文件系统
ceph fs rm cephfs --yes-i-really-mean-it

# 3、删除数据池
ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it

# 4、删除元数据池
ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it 

# 5、然后再删除 mds key,残留文件等

# 6、最后删除不活跃的mds
ceph mds rm 0 

4.4 mon相关

1、查看mon状态

ceph mon stat

2、查看mon映射信息

ceph mon dump

3、检查Ceph monitor仲裁/选举状态

ceph quorum_status --format json-pretty

4、查看mon信息包括ip地址

获得一个正在运行的 mon map,并保存在 1.txt 文件中 
ceph mon getmap -o 1.txt
monmaptool --print 1.txt

4.5 auth相关

一:认证与授权

Ceph使用cephx协议对客户端进行身份验证,集群中每一个Monitor节点都可以对客户端进行身份验证,所以不存在单点故障。cephx仅用于Ceph集群中的各组件,而不能用于非Ceph组件。它并不解决数据传输加密问题,但也可以提高访问控制安全性问题。

二:认证授权流程如下

  • 1、客户端向Monitor请求创建用户。
  • 2、Monitor返回用户共享密钥给客户端,并将此用户信息共享给MDS和OSD。
  • 3、客户端使用此共享密钥向Monitor进行认证。
  • 4、Monitor返回一个session key给客户端,并且此session key与对应客户端密钥进行加密。此session key过一段时间后就会失效,需要重新请求。
  • 5、客户端对此session key进行解密,如果密钥不匹配无法解密,这时候认证失败。
  • 6、如果认证成功,客户端向服务器申请访问的令牌。
  • 7、服务端返回令牌给客户端。
  • 8、这时候客户端就可以拿着令牌访问到MDS和OSD,并进行数据的交互。因为MDS和Monitor之间有共享此用户的信息,所以当客户端拿到令牌后就可以直接访问。

三:相关概念

  • 1、用户

    用户通常指定个人或某个应用
    个人就是指定实际的人,比如管理员
    而应用就是指客户端或Ceph集群中的某个组件,通过用户可以控制谁可以如何访问Ceph集群中的哪块数据。 
    
    Ceph支持多种类型的用户,个人与某应用都属于client类型。还有mds、osd、mgr一些专用类型。
  • 2、用户标识

    用户标识由“TYPE.ID”组成,通常ID也代表用户名,如client.admin、osd.1等。
  • 3、使能caps

    使能表示用户可以行使的能力,通俗点也可以理解为用户所拥有的权限。 对于不同的对象所能使用的权限也不一样,大致如下所示。
    
    Monitor权限有:r、w、x和allow、profile、cap。
    OSD权限有:r、w、x、class-read、class-wirte和profile osd。
    另外OSD还可以指定单个存储池或者名称空间,如果不指定存储池,默认为整个存储池。
    MDS权限有:allow或者留空。
    
    # 关于各权限的意义:
    allow:对mds表示rw的意思,其它的表示“允许”。
    r:读取。
    w:写入。
    x:同时拥有读取和写入,相当于可以调用类方法,并且可以在monitor上面执行auth操作。
    class-read:可以读取类方法,x的子集。
    class-wirte:可以调用类方法,x的子集。
    *:这个比较特殊,代表指定对象的所有权限。
    profile:类似于Linux下sudo,比如profile osd表示授予用户以某个osd身份连接到其它OSD或者Monitor的权限。
    profile bootstrap-osd表示授予用户引导OSD的权限,关于此处可查阅更多资料。

    四 命令

1、查看 ceph 集群中的认证用户及相关的 key

ceph auth list  # 简写:ceph auth ls

2、查看某一用户详细信息

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术