Ceph集群应用基础rbd、radosgw、cephfs的使用
创建RBD
ceph集群部署完成之后自带rbd接口,在客户端创建image作为块设备使用,至少需要一个pool。
先创建存储池:
ceph osd pool create rbdpool 64 64
启用rbd功能:
ceph osd pool application enable rbddata rbd
进行rbd初始化:在这个rbd空间中可以创建多个镜像image,每个image代表一个块设备
rbd pool init -p rbdpool
创建image:下面两种方式都可以
rbd create img1 --size 1024 --pool rbdpool rbd create --size 1G rbdpool/img2
查看rbd:
rbd ls --pool rbdpool
查看详细信息:
rbd info img1 --pool rbdpool rbd image 'img1': size 1 GiB in 256 objects order 22 (4 MiB objects) id: 85bc6b8b4567 block_name_prefix: rbd_data.85bc6b8b4567 format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Mon Jan 6 14:14:31 2020
删除image:
rbd rm img1 --pool rbdpool
启用radosgw接口
是类似于OSS的存储,会自动在初始化时创建存储池来,需要运行服务,默认是个pool。
[cephadm@ceph01 ceph-cluster]$ ceph-deploy rgw create ceph03
启动好之后可以使用浏览器访问:会显示一些xml信息
http://192.168.1.32:7480/
RGW会创建一系列的存储池:
]$ ceph osd pool ls .rgw.root default.rgw.control default.rgw.meta default.rgw.log
启用CephFS
CephFS需要至少运行一个元数据服务器MDS的守护进程metadata server,至少两个pool。
启动MDS服务:
ceph-deploy mds create ceph02
查看MDS状态:
]$ ceph mds stat , 1 up:standby
创建元数据池:
ceph osd pool create cephfs-metadata 32 32
创建数据池:
ceph osd pool create cephfs-data 64 64
将数据池和元数据池关联:
ceph fs new cephfs cephfs-metadata cephfs-data
显示cephfs相关信息:
ceph fs status cephfs cephfs - 0 clients ====== +------+--------+--------+---------------+-------+-------+ | Rank | State | MDS | Activity | dns | inos | +------+--------+--------+---------------+-------+-------+ | 0 | active | ceph01 | Reqs: 0 /s | 10 | 13 | +------+--------+--------+---------------+-------+-------+ +-----------------+----------+-------+-------+ | Pool | type | used | avail | +-----------------+----------+-------+-------+ | cephfs-metadata | metadata | 2286 | 32.0G | | cephfs-data | data | 0 | 32.0G | +-----------------+----------+-------+-------+ +-------------+ | Standby MDS | +-------------+ +-------------+ MDS version: ceph version 13.2.8 (5579a94fafbc1f9cc913a0f5d362953a5d9c3ae0) mimic (stable)
常用状态信息查看
显示pg相关信息:
ceph pg stat
显示pool相关信息:
ceph osd pool stats
显示已用空间:
ceph df GLOBAL: SIZE AVAIL RAW USED %RAW USED 114 GiB 108 GiB 6.1 GiB 5.32 POOLS: NAME ID USED %USED MAX AVAIL OBJECTS 32 1 0 B 0 34 GiB 0 rbdpool 2 133 B 0 34 GiB 5 .rgw.root 3 1.1 KiB 0 34 GiB 4 default.rgw.control 4 0 B 0 34 GiB 8 default.rgw.meta 5 0 B 0 34 GiB 0 default.rgw.log 6 0 B 0 34 GiB 175 cephfs-metadata 7 2.2 KiB 0 34 GiB 22 cephfs-data 8 0 B 0 34 GiB 0
显示更加详细的信息:
ceph df detail
查看osd的状态:
]$ ceph osd stat 6 osds: 6 up, 6 in; epoch: e85
跟详细的osd信息:
ceph osd dump
跟美观的方式显示osd信息:
]$ ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.11151 root default -3 0.03717 host ceph02 0 hdd 0.01859 osd.0 up 1.00000 1.00000 3 hdd 0.01859 osd.3 up 1.00000 1.00000 -5 0.03717 host ceph03 1 hdd 0.01859 osd.1 up 1.00000 1.00000 4 hdd 0.01859 osd.4 up 1.00000 1.00000 -7 0.03717 host ceph04 2 hdd 0.01859 osd.2 up 1.00000 1.00000 5 hdd 0.01859 osd.5 up 1.00000 1.00000
查看mon信息:
ceph mon stat ceph mon dump
显示仲裁状态:
ceph quorum_status
socket管理:
可以通过socket文件来管理:只能在socket的当前节点运行不能远程管理
ceph --admin-socket /var/run/ceph/ceph-mon.ceph04.asok help
停止或重启ceph集群
停止集群:
1、告知ceph集群不要将OSD标记为out
]$ ceph osd set noout ]$ ceph osd set nobackfill ]$ ceph osd set norecover
上面的步骤已经足够让ceph安全关闭了,但是如果还想让集群完全暂停的话还可以加上下面的设置,完全暂停的情况下看不到map数据更新。
]$ ceph osd set norebalance ]$ ceph osd set nodown ]$ ceph osd set pause
2、按如下顺序停止守护进程和节点
(1)存储客户端
(2)网关、如NFS Ganesha或对象网关Ceph radosgw
(3)Ceph MDS
(4)Ceph OSD
(5)Ceph Manager
(6)Ceph Monitor
systemctl stop ceph-radosgw.target systemctl stop ceph-crash.service systemctl stop ceph-mds.target systemctl stop ceph-osd.target systemctl stop ceph-mon.target systemctl stop ceph-mgr.target systemctl stop ceph.target
启动集群:
1、以停止顺序相反的过程。
(1)Ceph Monitor
(2)Ceph Manager
(3)Ceph OSD
(4)Ceph MDS
(5)Ceph radosgw
(6)存储客户端
2、删除noout等标志
关闭的时候加了暂停标志开启的时候也要去掉这些标志:
]$ ceph osd unset pause ]$ ceph osd unset nodown ]$ ceph osd unset norebalance
删除标志:
]$ ceph osd unset norecover ]$ ceph osd unset nobackfill ]$ ceph osd unset noout
查看集群:
ceph -s
官方维护文档:
https://ceph.com/planet/how-to-do-a-ceph-cluster-maintenance-shutdown/
ceph.conf配置文件
配置为ini格式,会加载多个配置文件,后面的配置如果相同会覆盖前面的配置,#号和分号都是注释。
[global] fsid = 4866c43f-bb48-473c-8a41-373e57069690 public_network = 192.168.1.0/24 cluster_network = 192.168.2.0/24 mon_initial_members = ceph02 mon_host = 192.168.1.31 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx
主要有以下几个配置段:
[global] [osd] [mon] [client]
依次加载如下位置的环境变量:
$CEPH_CONF
-c path/path
/etc/ceph/ceph.conf
~/.ceph/config
./ceph.conf 用户当前工作目录
常用的元参数:一些变量直接替换为对应的值
$cluster:ceph集群名称
$type:当前服务的类型名称,如:osd或mon
$id:进程标识符,osd.0标识符为0
$host:守护进程所在的主机名
$name:$type.$id
进程运行时配置:在非关闭进程时的配置
获取帮助信息:
ceph daemon {daemon-type}.{id} help
例:
~]# ceph daemon osd.0 config get public_addr { "public_addr": "192.168.1.31:0/0" }
tell指令:injectagrs后面的为注入的参数
ceph tell {daemon-type}.{daemon id or *} injectargs --{name} {value} [--{name} {value}]
例:
ceph tell osd.0 injectargs '--debug-osd 0/5'
daemon set指令:
ceph daemon {daemon-type}.{id} set {name} {value}
例:
ceph osd.0 config set debug_osd 0/5