CEPH RadosGW对象存储功能有哪些详解?
摘要:ceph RadosGW对象存储使用详解 一个完整的ceph集群,可以提供块存储、文件系统和对象存储。 本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景: $ ceph -s cluster: id: f0a8789e-6d5
ceph RadosGW对象存储使用详解
一个完整的ceph集群,可以提供块存储、文件系统和对象存储。
本节主要介绍对象存储RadosGw功能如何灵活的使用,集群背景:
$ ceph -s
cluster:
id: f0a8789e-6d53-44fa-b76d-efa79bbebbcf
health: HEALTH_OK
services:
mon: 1 daemons, quorum a (age 2d)
mgr: a(active, since 2d)
mds: cephfs:1 {0=cephfs-a=up:active} 1 up:standby-replay
osd: 1 osds: 1 up (since 2d), 1 in (since 2d)
rgw: 1 daemon active (my.store.a)
data:
pools: 10 pools, 200 pgs
objects: 1.29k objects, 3.5 GiB
usage: 60 GiB used, 798 GiB / 858 GiB avail
pgs: 200 active+clean
io:
client: 852 B/s rd, 1 op/s rd, 0 op/s wr
什么是对象存储
对象存储,又称键值存储,通过其接口指令,例如简单的GET、PUT、DEL等,向存储服务上传下载数据;
对象存储中所有数据都被认为是一个对象。所以,任何数据都可以存入对象存储中,如图片、视频、音频等;
常见的对象存储厂商有Swift、S3等,ceph就支持Swift API和AWS S3两种标准。
ceph对象存储的构成
Ceph对象存储是通过 RGW组件 来实现,什么是 rgw 呢?
rgw全称Rados Gateway,是一种服务,使客户端能够利用标准对象存储API来访问ceph对象网关;
ceph 0.8版本之后使用Civeweb的web服务器来响应api请求,说白了,rgw里边就是一个web服务;
客户端使用http/https协议通过RESTful API与rgw通信;
rgw通过librados与ceph集群通信,利用cephx加密协议与ceph存储通信;
rgw通过bucket来实现数据存储和多用户的隔离;
可以部署多个rgw,实现负载均衡及高可用。
ceph RadosGW中有一个bucket桶的概念,一般项目或者分类会使用bucket来进行隔离,bucket的权限控制,想要操作某个bucket,操作用户必须有对此bucket的对应操作权限,bucket最终的数据其实还是通过PG来落盘到后端的osd存储中的。
RadosGW存储池作用
rgw安装流程请参考之前的部署文档,此处不在赘述,默认端口7480,能够curl通就表示安装成功:
$ curl 10.153.204.13:30080
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
我这里更改了默认端口,改为了30080
rgw安装完毕后,会有一些默认创建的存储池:
$ ceph osd lspools | grep rgw
1 .rgw.root
3 my-store.rgw.control
6 my-store.rgw.meta
7 my-store.rgw.log
8 my-store.rgw.buckets.index
9 my-store.rgw.buckets.non-ec
10 my-store.rgw.buckets.data
这些存储池也是分为两种类型的,一种是元数据存储池,一种是数据存储池:
.rgw.root : 包含realm(领域信息),比如zone和zonegroup。
rgw.log:存储日志信息,用户记录各种log信息。
rgw.control:系统控制池,在有数据更新时,通知其它RGW更新缓存。
