ceph常见操作

当完成最小集群创建之后,进行host,osd等等操作
1、添加host

一些特殊的标签:
_no_schedule:不要在此主机上调度或部署守护程序。
此标签可防止 cephadm 在此主机上部署守护程序。如果它被添加到 已经包含 Ceph 守护进程的现有主机,将导致 cephadm 移动 其他位置的守护程序(OSD 除外,不会自动删除)。
_no_autotune_memory:不自动调整此主机上的内存。
此标签将阻止调整守护程序内存,即使为一个或多个守护程序启用了 或类似选项 在该主机上。osd_memory_target_autotune
_admin:将 client.admin 和 ceph.conf 分发到此主机。
默认情况下,标签将应用于群集中的第一个主机(其中 引导程序最初是运行的),并且密钥设置为分发 通过函数到该主机。添加此标签 到其他主机通常会导致 CEPHADM 部署配置和密钥环文件 在。从版本 16.2.10(太平洋)和 17.2.1(昆西)开始 除了默认位置之外,CEPHADM 还存储配置和密钥环 目录中的文件。_adminclient.adminceph orch client-keyring .../etc/ceph/etc/ceph//var/lib/ceph/<fsid>/config

首先将ceph生成的公钥拷贝到新节点
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-4

#如果需要禁止自动部署mon节点 执行这一步 如果不做这一步,cephadm会自动在已添加的host上去部署mon和mgr进程。
#一个典型的Ceph集群有3到5个monitor daemon。如果超过5个节点,官网建议使用5个monitor
#也可以在下面ceph orch apply mon 3来调整mon

ceph orch host add ceph-03 10.82.88.222  --labels _admin
ceph orch host label add my_hostname my_label 向现有的节点添加标签
ceph orch host label rm my_hostname my_label   删除节点的标签


ceph orch host maintenance enter <hostname> [--force] [--yes-i-really-mean-it] 将主机置于维护模式
ceph orch host maintenance exit <hostname>     退出维护模式

#查看节点
ceph orch host ls
ceph cephadm check-host *<hostname>*   检查节点是否可以
2、删除主机
ceph orch host drain ceph-03      先排除主机上的所有守护进程
ceph-03  10.82.88.222  _admin _no_schedule 会看到多了一个_no_schedule标签
ceph orch osd rm status     查看osd删除进度
ceph orch ps   确认是否还有守护进程
ceph orch host rm ceph-03   最后删除节点
ceph orch host rm <host> --offline --force  该命令用在节点脱机无法恢复强制删除

集群管理

ceph orch ls --export > cluster.yaml
ceph orch ls --service-type mon --export > mon.yaml    导出相关配置
ceph orch apply -i cluster.yaml                                      可修改后应用配置

ceph  health
ceph status
ceph quorum_status
ceph mon stat

**ceph日志查看:**
ceph -W cephadm
ceph log last cephadm         显示最后20行日志

ceph df       集群容量使用情况

ceph orch ps  查看daemon守护
ceph orch daemon stop prometheus.ceph-01
ceph orch daemon stop <name>
ceph orch daemon start <name>
ceph orch daemon restart <name>
也可以
ceph orch stop <name>
ceph orch start <name>
ceph orch restart <name>
重新部署
ceph orch daemon redeploy <name>

集群中的所有 Ceph 和网关守护进程都有一个用于连接的私有密钥 到群集并向其进行身份验证。此键可以旋转(即替换为 新密钥)使用以下命令:
ceph orch daemon rotate-key <name>
对于 MDS、OSD 和 MGR 守护程序,这不需要重新启动守护程序。对于其他 但是,守护进程(例如 RGW)可以重新启动守护进程以切换到新密钥。

服务管理

systemctl status ceph\*.service ceph\*.target     列出所有进程
systemctl start ceph.target      启动所有守护
 systemctl stop ceph-osd\*.service ceph-osd.target    启停某一类的守护
使用命令行打印服务列表
ceph orch ls 【MON, OSD, MGR, MDS, RGW】 【--refresh】 (强制刷新状态) 
ceph orch ls --service_name=<service-name> --format yaml                   查看服务状态
打印业务流程协调程序已知的所有守护程序的列表
ceph orch ps [--hostname host] [--daemon_type type] [--service_name name] [--daemon_id id] [--format f] [--refresh]
ceph orch ps --service-name <service-name> --daemon-id <daemon-id> --format yaml 查看后台进程状态

ceph orch apply prometheus --placement=3                 或者直接更改数量
ceph orch apply prometheus --placement="label:mylabel"   根据标签直接改
ceph orch rm <service-name>         删除服务
ceph orch daemon add mgr --placement="ceph-03"  手动部署服务
ceph orch daemon rm mgr.ceph-02.hudxmr  删除服务

mgr服务
cephadm MGR 服务托管不同的模块,如 Ceph Dashboard 和 cephadm Manager 模块。
ceph mgr services

osd服务
ceph orch device ls [–hostname=…] [–wide] [–refresh] 列出设备 设备可能不符合用作 OSD 条件的任何原因。–wide
如果要在结果中显示“运行状况”、“标识”和“故障”的结果从,则需要开启ceph config set mgr mgr/cephadm/device_enhanced_scan true增强扫描但是开启改功能需要硬件支持cephadm shell lsmcli ldl 该命令查看是否支持
ceph orch device ls
如果满足以下所有条件,则存储设备被视为可用 满足条件:
设备不得有分区。
设备不得具有任何 LVM 状态。
不得安装设备。
设备不得包含文件系统。
设备不得包含 Ceph BlueStore OSD。
设备必须大于 5 GB。

告诉 Ceph 使用任何可用和未使用的存储设备:
ceph orch apply osd --all-available-devices
从特定主机上的特定设备创建 OSD:
ceph orch daemon add osd host1:/dev/sdb
ceph orch apply osd --all-available-devices 运行该命令后发现可用设备便创建osd 加入–unmanaged=true来取消自动创建
ceph osd tree 查看具体的osd信息
ceph osd stat
ceph osd dump 详细的信息

删除osd
ceph osd out {osd-num}   冲击群中标记剔除
systemctl stop [email protected]   登录osd主机停止进程
ceph osd purge 3 --yes-i-really-mean-it 
ceph orch daemon rm  osd.3 --force


ceph orch osd rm status   查看删除状态
ceph orch osd rm stop <osd_id(s)>   停止正在删除的osd
ceph orch device zap <hostname> <path>    擦除设备上的数据清空设备

创建mds服务

One or more MDS daemons is required to use the CephFS file system.
ceph fs volume create  名字  count    会创建file system
ceph orch apply mds test    只创建mds守护
ceph mds stat        
ceph fs dump

mon部署或调整:

#调整默认3个mon
ceph mon stat  查看具体的mon节点
ceph mon dump   更具体的信息
 ceph orch apply mon 3   调整mon个数
 
#部署mon到指定主节点,需包括引导主机
ceph orch apply mon ceph-1,ceph-2,ceph-3

#或者给需要部署mon的主机打上mon标签,然后基于标签来部署,如
# ceph orch host label add ceph-1 mon
#ceph orch apply mon label:mon 

#查看mon集群状态
ceph mon dump

epoch 5
fsid 788b7912-4ac8-11ed-bef2-005056bc091f
last_changed 2022-10-13T08:26:27.896575+0000
created 2022-10-13T07:27:22.740678+0000
min_mon_release 17 (quincy)
election_strategy: 1
0: [v2:172.16.88.13:3300/0,v1:172.16.88.13:6789/0] mon.ceph-88-13
1: [v2:172.16.88.14:3300/0,v1:172.16.88.14:6789/0] mon.ceph-88-14
2: [v2:172.16.88.15:3300/0,v1:172.16.88.15:6789/0] mon.ceph-88-15
dumped monmap epoch 5

创建cephfs文件系统pool:

若少于5个OSD, 设置pg_num为128。  redhat建议每个osd控制pg为100~200     

(200 * 100)
   ----------- = 6667. Nearest power of 2: 8192(取得是最接近的2的幂次方)  8192÷200≈41每个osd41个pg
        3
也可以参考pgcalc计算
ceph osd pool set foo pg_autoscale_mode on   指定池的自动缩放

ceph osd pool create k8s_meta 128
ceph osd pool create k8s_data   128
ceph fs new k8s_data k8s_meta k8s_data   将元数据和数据池分开
ceph fs status

ceph fs volume create fs_test      创建mds会自动创建metadata  和data的pool池


ceph fs fail fs_test 
ceph fs rm fs_test --yes-i-really-mean-it
ceph osd pool rm  cephfs.fs_test.data cephfs.fs_test.data --yes-i-really-really-mean-it
ceph osd pool rm  cephfs.fs_test.meta cephfs.fs_test.meta --yes-i-really-really-mean-it

如果要将cephfs通过nfs导出则需要安装NFS GANESHA
ceph orch apply nfs *<svc_id>* [--port *<port>*] [--placement ...]
然后在图像化中配置导出nfs
mount -t ceph 172.16.10.148:6789,172.16.10.110:6789,172.16.10.182:6789:/ /data/cephfs-data

bucket对象存储
只有 Ceph 对象网关中创建 bucket 之后,才会创建 .default.rgw.buckets.index 池,而数据上传到 bucket 后才会创建 .default.rgw.buckets.data 池

mgr服务
ceph orch apply rgw foo  
 或者
ceph orch host label add gwhost1 rgw  # the 'rgw' label can be anything
ceph orch host label add gwhost2 rgw
ceph orch apply rgw foo '--placement=label:rgw count-per-host:2' --port=8080
ceph orch rm rgw.test_realm.test_zone_bb                删除网关

radosgw-admin metadata list user  列出用户
radosgw-admin user info --uid=janedoe   查看用户信息
radosgw-admin metadata list bucket   列出存储桶
radosgw-admin user modify --uid=janedoe --display-name="Jane E. Doe"  修改用户信息
radosgw-admin user create --uid=johndoe --display-name="John Doe" [email protected]  创建一个s3接口用户
radosgw-admin subuser create --uid=johndoe --subuser=johndoe:swift --access=full  创建一个swift接口用户
可以直接使用dashboard创建   
radosgw-admin user suspend --uid=johndoe   暂停用户
radosgw-admin user enable --uid=johndoe      启用用户
radosgw-admin user rm --uid=johndoe --purge-data  --purge-keys  删除用户并清除数据和key
radosgw-admin caps add/remove  --caps="[users|buckets|metadata|usage|zone]=[*|read|write|read, write]"



bucket也可以通过nfs导出,也支持部署ingress实现高可用
mount -t nfs -o port=2049 10.82.88.225:/export1 /mnt/nfs/



以下脚本可列出bucket中的内容    bucket有两种访问方式一种的http://clusterip+port+bucketname  另一种是http://bucketname.clusterip+port  这里采用第一种
import boto3
# 配置 Ceph 访问凭据
s3 = boto3.resource('s3',
        endpoint_url='http://10.82.88.224:7420',
                    aws_access_key_id='BDISZ05W0SXAN40XHIP3',
                    aws_secret_access_key='kuBNI8Ljddlhx9naR1Pi7dxNFWlaPqrNAIJX4wDf')

# 列出存储桶的对象
bucket_name = 'test'
bucket = s3.Bucket(bucket_name)
for obj in bucket.objects.all():
    print(obj.key)

crush层操作

ceph osd crush set-device-class hdd osd.1  要为 OSD 设置设备类
ceph osd crush rm-device-class 1                 如果提示设备类已经在使用则删除后再添加

添加一个bucket
ceph osd crush add-bucket ssd-root root   添加一个名为ssd-root的bucket
ceph osd crush add-bucket ssd-row1 row  添加一个名为ssd-row1的机架u位
ceph osd crush move ssd-row1 root=ssd-root  将ssd-row1添加到root下
ceph  osd tree 可以看到新加的层次结构
或者是直接导出crushmap
ceph osd getcrushmap -o test.bin
crushtool -d test.bin -o test.txt
包含:
type 0 osd  # 硬盘
type 1 host  # 服务器
type 2 chassis  # 机箱
type 3 rack  # 机架(一个机架包含多个机箱)
type 4 row  # 机排
type 5 pdu  # 配电单元(有可能多个机排共用一个配电单元)
type 6 pod  # 多个机排
type 7 room  # 机房
type 8 datacenter  # 数据中心(有可能多个机房组成一个数据中心)
type 9 region  # 区域(华东1,华东2等)
type 10 root  # 最顶级,必须存在 注意:这些故障域也称之为Bucket,但有些Bucket非radowsgw里面的bucket。
​
修改文件后将其导入集群
# 把 test1 转换成二进制形式
crushtool -c test.txt -o new.bin
# 把 test2 导入集群
ceph osd setcrushmap -i new.bin
或者直接命令行操作
创建基于这些主机的bucket
ceph osd crush add-bucket ceph-01-ssd host
ceph osd crush add-bucket ceph-02-ssd host
ceph osd crush add-bucket ceph-03-ssd host
创建root,并把三台主机添加进去
ceph osd crush add-bucket ssd-root root

ceph osd crush move ceph-01-ssd root=ssd-root
ceph osd crush move ceph-02-ssd root=ssd-root
ceph osd crush move ceph-03-ssd root=ssd-root
在这些主机上只添加指定的ssd盘的osd
ceph osd crush add osd.5 0.02930 root=ssd-root host=ceph-01-ssd
ceph osd crush add osd.4 0.02930 root=ssd-root host=ceph-02-ssd
ceph osd crush add osd.1 0.02930 root=ssd-root host=ceph-03-ssd

ceph osd crush add-bucket ceph-01-hdd host
ceph osd crush add-bucket ceph-02-hdd host
ceph osd crush add-bucket ceph-03-hdd host
ceph osd crush add-bucket hdd-root root
ceph osd crush move ceph-01-hdd root=hdd-root
ceph osd crush move ceph-02-hdd root=hdd-root
ceph osd crush move ceph-03-hdd root=hdd-root
ceph osd crush add osd.0 0.02930 root=hdd-root host=ceph-01-hdd
ceph osd crush add osd.3 0.02930 root=hdd-root host=ceph-02-hdd
ceph osd crush add osd.2 0.02930 root=hdd-root host=ceph-03-hdd
或者
[ceph:root@host01 /]# ceph osd crush set-device-class hdd osd.0 osd.1 osd.4 osd.5
[ceph:root@host01 /]# ceph osd crush set-device-class ssd osd.2 osd.3 osd.6 osd.7
[ceph:root@host01 /]# ceph osd crush rule create-replicated cold default host hdd
[ceph:root@host01 /]# ceph osd crush rule create-replicated hot default host ssd
ceph osd crush rule ls
最后创建pool时应用rule
[ceph:root@host01 /]# ceph osd pool set cold crush_rule hdd
[ceph:root@host01 /]# ceph osd pool set hot crush_rule ssd

集群维护操作
ceph osd set noout 设置该标志位,则mon不会从crush映射中删除任何OSD。对OSD作维护时,可设置该标志位,以防止CRUSH在OSD停止时自动重平衡数据。OSD重新启动时,需要清除该flag。
ceph osd set nobackfill 禁止数据回填。
ceph osd set norecover 设置该flag,禁止任何集群恢复操作。在执行维护和停机时,可设置该flag

这些标志应该足以安全关闭集群电源,但是如果您想完全暂停集群,也可以在顶部设置以下标志
ceph osd set norebalance
ceph osd set nodown
ceph osd set pause
或者节点进入维护模式:
ceph orch host maintenance enter host02 --force
ceph orch host maintenance exit HOST_NAME 退出维护模式

集群销毁:
ceph mgr module disable cephadm 要销毁集群并删除此集群中存储的所有数据,请禁用 cephadm 停止所有业务流程操作(因此我们避免部署新的守护进程)
ceph fsid
#For each host:
cephadm rm-cluster --force --zap-osds --fsid

猜你喜欢

转载自blog.csdn.net/qq_39412605/article/details/132203449