Ceph块设备接口(RBD)
Ceph块设备,也称为RADOS块设备(简称RBD),是一种基于RADOS存储系统支持超配(thin-provisioned)、可
伸缩的条带化数据存储系统,它通过librbd库与OSD进行交互。RBD为KVM等虚拟化技术和云OS(如OpenStack和
CloudStack)提供高性能和无限可扩展性的存储后端,这些系统依赖于libvirt和QEMU实用程序与RBD进行集成。
客户端基于librbd库即可将RADOS存储集群用作块设备,不过,用于rbd的存储池需要事先启用rbd功能并进行初始
化。
# 创建存储池
[cephadm@xiaomao ceph-cluster]$ ceph osd pool create rbdpool 64 64
pool 'rbdpool' created
# 启用rbd的功能
[cephadm@xiaomao ceph-cluster]$ ceph osd pool application enable rbdpool rbd
# 下面是输出结果
enabled application 'rbd' on pool 'rbdpool'
#初始化为rbd存储池
[cephadm@xiaomao ceph-cluster]$ rbd pool init -p rbdpool
不过,rbd存储池并不能直接用于块设备,而是需要事先在其中按需创建映像(image),并把映像文件作为块设备
使用。rbd命令可用于创建、查看及删除块设备相在的映像(image),以及克隆映像、创建快照、将映像回滚到快
照和查看快照等管理操作。
# 存储池名称/存储池名称
[cephadm@xiaomao ceph-cluster]$ rbd create --size 2G rbdpool/mying
#查看镜像文件是否创建成功
[cephadm@xiaomao ceph-cluster]$ rbd ls -p rbdpool
mying
#查看镜像的详细信息
[cephadm@xiaomao ceph-cluster]$ rbd info rbdpool/mying
rbd image 'mying':
size 2 GiB in 512 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 11a55ab72319
block_name_prefix: rbd_data.11a55ab72319
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Fri Jul 3 20:58:06 2020
access_timestamp: Fri Jul 3 20:58:06 2020
modify_timestamp: Fri Jul 3 20:58:06 2020
启用radosgw接口
RGW并非必须的接口,仅在需要用到与S3和Swift兼容的RESTful接口时才需要部署RGW实例
[cephadm@xiaomao ceph-cluster]$ ceph-deploy rgw create xiaomao1
查看rgw创建情况
[cephadm@xiaomao ceph-cluster]$ ceph -s
cluster:
id: b5e6a4a2-41cc-4f75-ad20-84ed4a7c8427
health: HEALTH_WARN
application not enabled on 1 pool(s)
services:
mon: 1 daemons, quorum xiaomao1 (age 2h)
mgr: xiaomao1(active, since 3h), standbys: xiaomao2
osd: 8 osds: 8 up (since 87m), 8 in (since 2h)
rgw: 1 daemon active (xiaomao1)
task status:
data:
pools: 6 pools, 224 pgs
objects: 193 objects, 1.6 KiB
usage: 8.1 GiB used, 472 GiB / 480 GiB avail
pgs: 224 active+clean
默认情况下,RGW实例监听于TCP协议的7480端口,需要算定时,可以通过在运行RGW的节点上编辑其主配置
文件ceph.conf进行修改,相关参数如下所示:
[client]
rgw_frontends = "civetweb port=8080"
#重启服务生效
[root@xiaomao1 ~]# systemctl restart [email protected]
RGW会在rados集群上生成包括如下存储池的一系列存储池
[cephadm@xiaomao ceph-cluster]$ ceph osd pool ls
.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
RGW提供的是REST接口,客户端通过http与其进行交互,完成数据的增删改查等管理操作
启用文件系统(CephFS)接口
CephFS需要至少运行一个元数据服务器(MDS)守护进程(ceph-mds),此进程管理与CephFS上存储的文件相关
的元数据,并协调对Ceph存储集群的访问。因此,若要使用CephFS接口,需要在存储集群中至少部署一个MDS实
例
[cephadm@xiaomao ceph-cluster]$ ceph-deploy mds create xiaomao2
查看MDS的相关状态可以发现,刚添加的MDS处于Standby模式:
[cephadm@xiaomao ceph-cluster]$ ceph mds stat
1 up:standby
使用CephFS之前需要事先于集群中创建一个文件系统,并为其分别指定元数据和数据相关的存储池。下面创建一个
名为cephfs的文件系统用于测试,它使用cephfs-metadata为元数据存储池,使用cephfs-data为数据存储池:
# 分别是pg和pgp
[cephadm@xiaomao ceph-cluster]$ ceph osd pool create cephfs-metadata 64 64
pool 'cephfs-metadata' created
[cephadm@xiaomao ceph-cluster]$ ceph osd pool create cephfs-data 64 64
pool 'cephfs-data' created
#初始化名为cephfs文件系统 激活
[cephadm@xiaomao ceph-cluster]$ ceph fs new cephfs cephfs-metadata cephfs-data
new fs with metadata pool 7 and data pool 8
查看文件系统的相关状态
[cephadm@xiaomao ceph-cluster]$ ceph fs status cephfs
cephfs - 0 clients
======
+------+--------+----------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+----------+---------------+-------+-------+
| 0 | active | xiaomao2 | Reqs: 0 /s | 10 | 13 |
+------+--------+----------+---------------+-------+-------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 1536k | 144G |
| cephfs-data | data | 0 | 144G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
+-------------+
MDS version: ceph version 14.2.10 (b340acf629a010a74d90da5782a2c5fe0b54ac20) nautilus (stable)