如果是在admin节点修改的ceph.conf,想推送到所有其他节点,则需要执行下述命令
| ceph-deploy --overwrite-conf config push mon01 mon02 mon03 osd01 osd02 osd03 |
修改完毕配置文件后需要重启服务生效,请看下一小节
@@@!!!下述操作均需要在具体运行服务的那个节点上运行,而不是admin节点!!!@@@
在各具体节点执行下行命令,重启节点上的所有ceph守护进程
| systemctl restart ceph.target |
在各具体节点执行下行命令,按类型重启相应的守护进程
| |
| systemctl restart ceph-mgr.target |
| |
| |
| systemctl restart ceph-mds.target |
| |
| |
| systemctl restart ceph-radosgw.target |
| |
| |
| systemctl restart ceph-mon.target |
| |
| |
| 登录到osd01节点上,该节点上运行有三个osd daemon进程osd.0、osd.l、osd.2 |
| |
| |
| systemctl restart ceph-osd.target |
| |
| |
| systemctl restart ceph-osd@0 |
| systemctl restart ceph-osd@1 |
| systemctl restart ceph-osd@2 |
了解:也可以根据进程类型+主机名.service
| |
| systemctl { start | stop | restart} ceph-mon@{mon_instance}.service |
| 例 |
| systemctl restart ceph-mon@mon01.service |
| |
| |
| systemctl { start | stop | restart} ceph-mgr@{mgr_instance}.service |
| |
| |
| systemctl { start | stop | restart} ceph-osd@{osd_instance}.service |
| |
| |
| systemctl { start | stop | restart} ceph-radosgw@{rgw_instance}.service |
| |
| |
| systemctl { start | stop | restart} ceph-mds@{mds_instance}.service |
有时候需要更改服务的配置,但不想重启服务,或者是临时修改,此时我们就可以通过admin sockets直接与守护进程交互。如查看和修改守护进程的配置参数。
守护进程的socket文件一般是/var/run/ceph/$cluster-$type.$id.asok
基于admin sockets的操作:
常用command如下
| help |
| |
| config get parameter |
| |
| config set parameter |
| |
| config show |
| |
| perf dump |
命令使用格式如下,在管理节点执行即可
| 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设置,可以使用*
命令格式如下,需要登录到守护进程所在的那台主机上执行
| ceph daemon {daemon-type}.{id} config set {name}={value} |
例。
| ssh root@mon01 |
| ceph daemon mon.mon01 config set mon_allow_pool_delete false |
| |
| ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok help |
| |
| |
| ceph --admin-daemon /var/run/ceph/ceph-mds.mon01.asok config get mon_allow_pool_delete |
| |
| |
| 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 |
| |
| ceph -s |
| ceph status |
| ceph health |
| ceph health detail |
| |
| |
| ceph -w |
| =======================命令1======================= |
| ceph df |
| |
| |
| 展示了数据所占用集群存储空间的概要,详解如下 |
| SIZE: 集群的总容量; |
| AVAIL: 集群的空闲空间总量; |
| RAW USED: 已用存储空间总量; |
| % RAW USED: 已用存储空间比率。用此值参照 full ratio 和 near full \ ratio 来确保不会用尽集群空间。 详情见存储容量。 |
| |
| |
| 展示了存储池列表及各存储池的大致使用率。没有副本、克隆品和快照占用情况。例如,如果你 把 1MB 的数据存储为对象,理论使用率将是 1MB ,但考虑到副本数、克隆数、和快照数,实际使用率可能是 2MB 或更多。 |
| NAME: 存储池名字; |
| ID: 存储池唯一标识符; |
| USED: 大概数据量,单位为 B、KB、MB 或 GB ; |
| %USED: 各存储池的大概使用率; |
| Objects: 各存储池内的大概对象数。 |
| |
| =======================命令2======================= |
| ceph osd df |
1、查看mds状态
| ceph mds stat |
| ceph mds dump |
2、删除mds节点
| ssh root@mon01 systemctl stop ceph-mds.target |
| ceph mds rm 0 |
| |
| |
3、关闭mds集群
4、开启mds集群
5、设置cephfs 文件系统存储方式最大单个文件尺寸
| ceph mds set max_file_size 1024000000000 |
6、了解:清除mds文件系统
| |
| ceph mds fail 0 |
| |
| |
| ceph fs rm cephfs --yes-i-really-mean-it |
| |
| |
| ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it |
| |
| |
| ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it |
| |
| |
| |
| |
| ceph mds rm 0 |
1、查看mon状态
2、查看mon映射信息
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 |
一:认证与授权
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
2、查看某一用户详细信息