一、概述

Ceph是当时十分盛行的开源散布式存储体系,具有高扩展性、高性能、高可靠性等优点,一起供给块存储服务(rbd)目标存储服务(rgw)以及文件体系存储服务(cephfs),Ceph在存储的时候充分利用存储节点的核算能力,在存储每一个数据时都会经过核算得出该数据的方位,尽量的散布均衡。现在也是OpenStack的主流后端存储。

关于Ceph更具体的介绍和环境布置能够参考我这篇文章:散布式存储体系 Ceph 介绍与环境布置

分布式存储系统 Ceph 实战操作

二、cephadm 东西的运用

官方文档:docs.ceph.com/en/latest/c…

1)cephadm 东西的介绍

cephadm 是用于办理 Ceph 集群的实用程序或许是办理东西。

Cephadm的方针是供给一个功能完全、强健且保护杰出的装置和办理层,可供不在Kubernetes中运转Ceph的任何环境运用。具体特性如下:

  • 将一切组件布置在容器中—— 运用容器简化了不同发行版之间的依赖关系和打包杂乱度。当然,咱们仍在构建RPM和Deb软件包,可是随着越来越多的用户过渡到cephadm(或Rook)并构建容器,咱们看到的特定于操作体系的bug就越少。

  • 与Orchestrator API严密集成—— Ceph的Orchestrator界面在cephadm的开发进程中得到了广泛的开展,以匹配实现并明晰地抽象出Rook中存在的(略有不同)功能。终究成果是不管是看起来仍是感觉都像Ceph的一部分。

  • 不依赖办理东西——Salt和Ansible之类的东西在大型环境中进行大规模布置时十分出色,可是使Ceph依赖于这种东西意味着用户还需求学习该相关的软件。更重要的是,与专为办理Ceph而专门规划的布置东西相比,依赖这些东西(Salt和Ansible等)的布置终究或许变得更加杂乱,难以调试并且(最显着)更慢。

  • 最小的操作体系依赖性—— Cephadm需求Python 3LVMcontainer runtime(Podman或Docker)。任何当时的Linux发行版都能够。

  • 将群集彼此阻隔—— 支撑多个Ceph集群一起存在于同一主机上一直是一个比较小众的场景,可是的确存在,并且以一种强健,通用的办法将集群彼此阻隔,这使得测验和从头布置集群对于开发人员和用户而言都是安全天然的进程。

  • 主动升级—— 一旦Ceph“具有”自己的布置办法,它就能够以安全和主动化的办法[升级Ceph。

  • 从“传统”布置东西轻松搬迁——咱们需求从现有东西(例如ceph-ansible,ceph-deploy和DeepSea)中现有的Ceph布置轻松过渡到cephadm。

以下是一些工作的列表 cephadm 能够做:

  • cephadm 能够将 Ceph 容器增加到集群。

  • cephadm 能够从集群中移除 Ceph 容器。

  • cephadm 能够更新 Ceph 容器。

2)cephadm 装置

mkdir -p /opt/ceph/my-cluster ; cd /opt/ceph/my-cluster
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm  -o cephadm
chmod +x cephadm
# 开端装置ceph-common,ceph东西
./cephadm install ceph-common ceph
# 装置cephadm东西
./cephadm install
which cephadm
which ceph
# 检查协助
cephadm --help

3)cephadm 常用指令运用

一般运用cephadm 用作环境初始化,其它的操作交由ceph东西完结,常用指令如下:

cephadm模型有一个简略的“ Bootstrap ”进程,该进程从指令行启动,该指令行在本地主机上启动一个最小的Ceph群集(一个monitor 与 manager 看护程序)。然后,运用orchestrator指令布置集群的其余部分,以增加其他主机,运用存储设备并为集群服务布置看护程序。

### 1、装备ceph装置源(或指定版本)
./cephadm add-repo --release octopus
#或
#./cephadm add-repo --version 15.2.1
### 2、集群初始化
cephadm bootstrap --help # 检查协助
# cephadm bootstrap --mon-ip *<mon-ip>*
cephadm bootstrap --mon-ip 192.168.182.130

4)启用 ceph shell

cephadm 指令一般仅仅作为布置的引导作用。 可是,咱们主张启用对 ceph 指令,由于ceph指令更加简洁强壮。

# 启用ceph shell
cephadm shell
# 这指令在容器中启动 bash shell 并在本机上装置了一切 Ceph 软件包。
# 检查ceph集群状况,非交互式
cephadm shell ceph status
# 或许
cephadm shell ceph -s

您能够装置 ceph-common 包,其间包含一切 Ceph 指令,包含 ceph, rbd, mount.ceph (用于装置 CephFS 文件体系)等:

cephadm add-repo --release quincy
cephadm install ceph-common
# 当然也只装置ceph指令
cephadm install ceph

接下来就能够高兴的运用ceph指令布置软件等等。

三、ceph 指令运用

上面咱们已经装置了ceph的全家桶,这儿就不重复了。

1)增加新节点

ceph orch host add local-168-182-131
ceph orch host add local-168-182-132
#第一次布置新节点时直接用上边的指令即可:
#可是之后的节点新增有或许上述指令犯错:
ceph orch host add local-168-182-131 192.168.182.133  #后边跟上对应的IP
# 检查节点
ceph orch host ls

2)运用 ceph 装置软件

### 1、布置监视器(monitor)
# ceph orch apply mon *<number-of-monitors>*
# 保证在此列表中包含第一台(引导)主机。
ceph orch apply mon local-168-182-130,local-168-182-131,local-168-182-132
### 2、布置 osd
# 检查
ceph orch device ls
# 开端布置
# 【第一种办法】告知Ceph运用任何可用和未运用的存储设备:
ceph orch apply osd --all-available-devices
# 【第二种办法】或许运用下面指令指定运用的磁盘(推荐运用这种办法吧)
# ceph orch daemon add osd *<host>*:*<device-path>*
#例如:
#从特定主机上的特定设备创立OSD:
ceph orch daemon add osd local-168-182-130:/dev/sdb
ceph orch daemon add osd local-168-182-130:/dev/sdc
ceph orch daemon add osd local-168-182-131:/dev/sdb
ceph orch daemon add osd local-168-182-131:/dev/sdc
ceph orch daemon add osd local-168-182-132:/dev/sdb
ceph orch daemon add osd local-168-182-132:/dev/sdc
### 3、布置mds
# ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply mds myfs --placement="3 local-168-182-130 local-168-182-131 local-168-182-132"
### 4、布置RGW
# 为特定领域和区域布置一组radosgw看护程序:
# ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply rgw myorg us-east-1 --placement="3 local-168-182-130 local-168-182-131 local-168-182-132"
###说明:
#myorg : 领域名  (realm-name)
#us-east-1: 区域名 (zone-name)myrgw
### 5、布置ceph-mgr
ceph orch apply mgr local-168-182-130,local-168-182-131,local-168-182-132

删去OSD节点

### 1.中止osd进程
ceph osd stop x  //(x 能够经过ceph osd ls 检查)
#中止osd的进程,这个是通知集群这个osd进程不在了,不供给服务了,由于自身没权重,就不会影响到整体的散布,也就没有搬迁
### 2.将节点状况标记为out
ceph osd out osd.x
#中止到osd的进程,这个是通知集群这个osd不再映射数据了,不供给服务了,由于自身没权重,就不会影响到整体的散布,也就没有搬迁
### 3. 从crush中移除节点
ceph osd crush remove osd.x
# 这个是从crush中删去,
### 4. 删去节点
ceph osd rm osd.x
# 这个是从集群里边删去这个节点的记载ls
### 5. 删去节点认证(不删去编号会占住)
ceph auth del osd.x
#这个是从认证当中去删去这个节点的信息
#【留意】
#比如卸载了node3的某osd,(osd.x 即: node:/dev/sdb),在node3上履行以下操作,能够后持续运用node3:/dev/sdb
#1. lvremove /dev/ceph-3f728c86-8002-47ab-b74a-d00f4cf0fdd2/osd-block-08c6dc02-85d1-4da2-8f71-5499c115cd3c  // dev 后的参数能够经过lsblk检查
#2. vgremove  ceph-3f728c86-8002-47ab-b74a-d00f4cf0fdd2

检查服务

# 其实能够经过docker ps检查,可是不太直观,所以既然有ceph指令,肯定是用ceph检查更为具体直观了。
ceph orch ps 
ceph orch ps --daemon-type alertmanager
ceph orch ps --daemon-type osd
# ceph orch ps --daemon-type [alertmanager|crash|grafana|mds|mgrmon|node-exporter|osd|prometheus|rgw]

分布式存储系统 Ceph 实战操作

3)主机操作

1、列出主机

# ceph orch host ls [--format yaml] [--host-pattern <name>] [--label <label>] [--host-status <status>]
ceph orch host ls

2、增加主机

要将每个新主机增加到群集,请履行以下进程:

  • 【1】在新主机的根用户的 authorized_keys 文件:
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
ssh-copy-id -f -i /etc/ceph/ceph.pub root@192.168.182.133
  • 【2】告知 Ceph 新节点是集群的一部分:
# ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]
ceph orch host add local-168-182-130 192.168.182.130
# 最好显式供给主机 IP 地址。 假如 IP 是 未供给,则主机名将立即经过 将运用该 DNS 和该 IP。

还能够包含一个或多个标签以立即标记 新主机。

ceph orch host add local-168-182-130 192.168.182.130 --labels _admin

3、删去主机

删去一切看护程序后,能够安全地从集群中移除主机 从它。

  • 【1】要从主机中排出一切看护程序,请运转以下方法的指令:
# ceph orch host drain *<host>*
ceph orch host drain local-168-182-130
#将计划删去主机上的一切 osd。您能够经过以下办法检查 osd 删去进度:
ceph orch osd rm status
# 能够运用以下指令检查主机上是否没有看护程序:
# ceph orch ps <host>
ceph orch ps local-168-182-130
  • 【2】删去一切看护程序后,能够运用以下指令删去主机:
# ceph orch host rm <host>
ceph orch host rm local-168-182-130

假如主机处于脱机状况且无法恢复,仍能够经过以下办法将其从群会集移除:

# ceph orch host rm <host> --offline --force
ceph orch host rm local-168-182-130 --offline --force

4、主机标签

业务流程和谐程序支撑将标签分配给主机。标签 是自由方法的,自身和每个主机都没有特定的意义 能够有多个标签。它们可用于指定放置 的看护进程。

  • 【1】增加标签
# ceph orch host add my_hostname --labels=my_label1
ceph orch host add local-168-182-130 --labels=my_label1,my_label2
# 也能够,ceph orch host label add my_hostname my_label
ceph orch host label add local-168-182-130 my_label
  • 【2】删去标签
# ceph orch host label rm my_hostname my_label
ceph orch host label rm local-168-182-130 my_label

特别主机标签

以下宿主标签对头孢具有特别意义。 一切始于 _.

  • _no_schedule: 不要在此主机上调度或布置看护程序.

此标签可防止 cephadm 在此主机上布置看护程序。 假如它被增加到 已经包含 Ceph 看护进程的现有主机,将导致 cephadm 移动 其他方位的看护程序(OSD 在外,不会主动删去)。

  • _no_autotune_memory: 不主动调整此主机上的内存.

此标签将阻挠看护程序内存被调整,即便 osd_memory_target_autotune 或为一个或多个看护程序启用相似选项 在该主机上。

  • _admin: 将 client.admin 和 ceph.conf 分发到此主机.

默许情况下,一个_admin标签应用于群会集的第一个主机(其间 引导程序开始是运转的),并且 client.admin 密钥设置为分发 到该主机经过 功能。 增加此标签 到其他主机通常会导致 CEPHADM 布置装备和密钥环文件 在 .从版本 16.2.10和 17.2.1 开端 增加到默许方位 Cephadm 还存储装备和密钥环 文件中的文件 目录。ceph orch client-keyring .../etc/ceph/etc/ceph//var/lib/ceph/<fsid>/config

4)保护形式

将主机置于保护形式和退出保护形式(中止主机上的一切 Ceph 看护进程):

# 进入保护形式
# ceph orch host maintenance enter <hostname> [--force]
ceph orch host maintenance enter local-168-182-130
# 退出保护形式
# ceph orch host maintenance exit <hostname>
ceph orch host maintenance exit local-168-182-130

5)检查服务状况

检查一个的状况 在 Ceph 集群中运转的服务中,履行以下操作:

# ceph orch ls [--service_type type] [--service_name name] [--export] [--format f] [--refresh]
# 检查一切服务
ceph orch ls
# 检查指定服务
ceph orch ls alertmanager
ceph orch ls  --service_name crash

6)检检查护进程状况

首要,打印业务流程和谐程序已知的一切看护程序的列表:

# ceph orch ps [--hostname host] [--daemon_type type] [--service_name name] [--daemon_id id] [--format f] [--refresh]
ceph orch ps
# 然后查询特定服务实例的状况(mon、osd、mds、rgw)。 对于 OSD,ID 是数字 OSD ID。对于 MDS 服务,id 是文件 体系称号:
ceph orch ps --daemon_type osd --daemon_id 0

7)OSD 服务

1、列出设备

ceph-volume 按顺序不时扫描群会集的每个主机 确定存在哪些设备以及它们是否有资历 用作 OSD。

检查列表,运转以下指令:

# ceph orch device ls [--hostname=...] [--wide] [--refresh]
ceph orch device ls
# 运用 --wide 选项供给与设备相关的一切具体信息, 包含设备或许不符合用作 OSD 条件的任何原因。
ceph orch device ls --wide

分布式存储系统 Ceph 实战操作

在上面的示例中,您能够看到名为“运转状况”、“标识”和“故障”的字段。 此信息经过与 libstoragemgmt.默许情况下, 此集成已禁用(由于 libstoragemgmt 或许不是 100% 与您的硬件兼容)。 要使 cephadm 包含这些字段, 启用CEPHADM的“增强设备扫描”选项,如下所示;

ceph config set mgr mgr/cephadm/device_enhanced_scan true

2、创立新的 OSD

有几种办法能够创立新的 OSD:

  • 【1】告知 Ceph 运用任何可用和未运用的存储设备:
# 假如将新磁盘增加到群集,它们将主动用于 创立新的 OSD。
ceph orch apply osd --all-available-devices
  • 【2】从特定主机上的特定设备创立 OSD:
# ceph orch daemon add osd *<host>*:*<device-path>*
ceph orch daemon add osd local-168-182-133:/dev/sdb
ceph orch daemon add osd local-168-182-133:/dev/sdc
# 或许
# ceph orch daemon add osd host1:data_devices=/dev/sda,/dev/sdb,db_devices=/dev/sdc,osds_per_device=2
ceph orch daemon add osd local-168-182-133:data_devices=/dev/sdb,/dev/sdc
# 运用lvm
# ceph orch daemon add osd *<host>*:*<lvm-path>*
ceph orch daemon add osd host1:/dev/vg_osd/lvm_osd1701
  • 【3】试运转,不是真正的履行
# 这 --dry-run 标志使业务流程和谐程序显现内容的预览 将在不实际创立 OSD 的情况下发生。
ceph orch apply osd --all-available-devices --dry-run

3、移除 OSD

从集群中删去 OSD 触及两个进程:

  • 从集群中撤出一切归置组 (PG)

  • 从集群中删去无 PG 的 OSD

以下指令履行这两个进程:


# ceph orch osd rm <osd_id(s)> [--replace] [--force]
ceph orch osd rm 0

4、监控 OSD 删去的状况

ceph orch osd rm status

5、中止删去 OSD

# ceph orch osd rm stop <osd_id(s)>
ceph orch osd rm stop 4

6、激活现有 OSD

假如从头装置主机的操作体系,则需求激活现有的 OSD 再。对于此用例,cephadm 供给了一个包装器 激活 那 激活主机上的一切现有 OSD。

# ceph cephadm osd activate <host>...
ceph cephadm osd activate local-168-182-133

7、检查数据延迟

ceph osd perf

8、具体列出集群每块磁盘的运用情况

ceph osd df

8)pool相关操作

1、检查ceph集群中的pool数量

ceph osd lspools
#或许 
ceph osd pool ls

2、在ceph集群中创立一个pool

#这儿的100指的是PG组:
ceph osd pool create rbdtest 100

9)PG 相关

PG =“放置组”。当集群中的数据,目标映射到编程器,被映射到这些PGS的OSD。

1、检查pg组的映射信息

ceph pg dump
# 或许
# ceph pg ls

2、检查一个PG的map

ceph pg map 7.1a

3、检查PG状况

ceph pg stat

4、显现一个集群中的一切的pg统计

ceph pg dump --format plain

这儿仅仅列举了一些常用的操作指令,更多的指令能够检查协助或许检查官方文档。

四、实战操作演示

1)块存储运用(RDB )

分布式存储系统 Ceph 实战操作

1、 运用 create 创立 pool 池

ceph osd lspools
# 创立
ceph osd pool create ceph-demo 64 64
# 创立指令时需求指定PG、PGP数量,还能够指定仿制模型仍是纠删码模型,副本数量等等
# osd pool create <pool> [<pg_num:int>] [<pgp_num:int>] [replicated|erasure] [<erasure_code_  create pool profile>] [<rule>] [<expected_num_objects:int>] [<size:int>] [<pg_num_min:int>] [on|off| warn] [<target_size_bytes:int>] [<target_size_ratio:float>]

【温馨提示】PG (Placement Group),pg是一个虚拟的概念,用于寄存object,PGP(Placement Group for Placement purpose),相当所以pg寄存的一种osd排列组合。

获取 pool 池特点信息,能够从头设置,有许多参数,都能够如下设置

# 1、获取 pg 个数
ceph osd pool get ceph-demo pg_num
# 2、获取 pgp 个数
ceph osd pool get ceph-demo pgp_num
# 3、获取副本数
ceph osd pool get ceph-demo size
# 4、获取运用模型
ceph osd pool get ceph-demo crush_rule
# 5、设置副本数
ceph osd pool set ceph-demo size 2
# 6、设置 pg 数量
ceph osd pool set ceph-demo pg_num 128
# 7、设置 pgp 数量
ceph osd pool set ceph-demo pgp_num 128

2、需求初始化 pool

rbd pool init ceph-demo

3、创立 rbd 块设备

# 检查 块设备
rbd -p ceph-demo ls
# 【办法一】创立块设备
rbd create -p ceph-demo --image rbd-demo.img --size 10G
# 【办法二】创立块设备
rbd create ceph-demo/rbd-demo2.img --size 10G
# 检查 块设备
rbd -p ceph-demo ls

4、检查块设备信息

rbd info ceph-demo/rbd-demo2.img

5、删去块设备

rbd rm -p ceph-demo --image rbd-demo2.img

6、设备挂载

由于没有虚拟机进行挂载,所以需求运用内核 map 进行挂载;

rbd map ceph-demo/rbd-demo.img

[root@local-168-182-130 ceph]# rbd map ceph-demo/rbd-demo.img rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with “rbd feature disable ceph-demo/rbd-demo.img object-map fast-diff deep-flatten”. In some cases useful info is found in syslog – try “dmesg | tail”. rbd: map failed: (6) No such device or address

映射的进程当中出现错误,这是由于 Centos7 当中不支撑这几个特性,咱们能够在创立时指定 features 。

rbd feature disable ceph-demo/rbd-demo.img deep-flatten
rbd feature disable ceph-demo/rbd-demo.img fast-diff
rbd feature disable ceph-demo/rbd-demo.img object-map
rbd feature disable ceph-demo/rbd-demo.img exclusive-lock

再次挂载,挂载成功

rbd map ceph-demo/rbd-demo.img

检查设备列表

rbd device list

经过fdisk 检查设备列表

fdisk -l

运用 rbd 设备

# 格式化
mkfs.ext4 /dev/rbd0
# 创立挂载目录
mkdir /mnt/rbd-demo
# 挂载
mount /dev/rbd0 /mnt/rbd-demo/

7、块设备扩容

设备能够扩容,也能够缩容,但不主张运用缩容,有或许产生数据丢失。

# 扩容
rbd resize ceph-demo/rbd-demo.img --size 10G
# 检查
rbd -p ceph-demo info --image rbd-demo.img
# 也能够经过lsblk检查
lsblk

8、卸载

umount /mnt/rbd-demo

2)文件体系运用(CephFS)

分布式存储系统 Ceph 实战操作

1、检查ceph文件体系

ceph fs ls

2、创立存储池

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
# 创立指令时需求指定PG、PGP数量,还能够指定仿制模型仍是纠删码模型,副本数量等等
# osd pool create <pool> [<pg_num:int>] [<pgp_num:int>] [replicated|erasure] [<erasure_code_  create pool profile>] [<rule>] [<expected_num_objects:int>] [<size:int>] [<pg_num_min:int>] [on|off| warn] [<target_size_bytes:int>] [<target_size_ratio:float>]

【温馨提示】PG (Placement Group),pg是一个虚拟的概念,用于寄存object,PGP(Placement Group for Placement purpose),相当所以pg寄存的一种osd排列组合。

3、创立文件体系

ceph fs new 128 cephfs_metadata cephfs_data
#此时再回头检查文件体系,mds节点状况
ceph fs ls
ceph mds stat

4、检查存储池配额

ceph osd pool get-quota cephfs_metadata

5、内核驱动挂载ceph文件体系

【1】创立挂载点

mkdir /mnt/mycephfs

【2】获取存储密钥,假如没有前往办理节点从头仿制

cat /etc/ceph/ceph.client.admin.keyring
#将存储密钥保存到/etc/ceph/admin.secret文件中:
vim /etc/ceph/admin.secret
# AQBFVrFjqst6CRAA9WaF1ml7btkn6IuoUDb9zA==
#假如想开机挂载能够写入/etc/rc.d/rc.local文件中

【3】挂载

# Ceph 存储集群默许需求认证,所以挂载时需求指定用户名 name 和创立密钥文件一节中创立的密钥文件 secretfile ,例如:
# mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs
mount -t ceph 192.168.182.130:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret

分布式存储系统 Ceph 实战操作

【4】卸载

umount /mnt/mycephfs

6、常用指令

# 检查存储池副本数
ceph osd pool get [存储池称号] size
# 修正存储池副本数
ceph osd pool set [存储池称号] size 3
# 打印存储池列表
ceph osd lspools
# 创立存储池
ceph osd pool create [存储池称号] [pg_num的取值] 
# 存储池重命名
ceph osd pool rename [旧的存储池称号] [新的存储池称号]
# 检查存储池的pg_num
ceph osd pool get [存储池称号] pg_num
# 检查存储池的pgp_num
ceph osd pool get [存储池称号] pgp_num
# 修正存储池的pg_num值
ceph osd pool set [存储池称号] pg_num [pg_num的取值]
# 修正存储池的pgp_num值
ceph osd pool set [存储池称号] pgp_num [pgp_num的取值]

3)目标存储运用(RGW)

rados 是和Ceph的目标存储集群(RADOS),Ceph的散布式文件体系的一部分进行交互是一种实用东西。

分布式存储系统 Ceph 实战操作

1、检查ceph集群中有多少个pool

rados lspools
# 同  ceph osd pool ls 输出成果共同

2、显现整个体系运用率

rados df

3、创立一个pool

ceph osd pool create test

4、创立一个目标object

rados create test-object -p test

5、检查目标文件

rados -p test ls

6、删去一个目标

rados rm test-object -p test

7、经过api接口运用 Ceph 存储存储

为了运用 Ceph SGW REST 接口, 咱们需求为 S3 接口初始化一个 Ceph 目标网关用户. 然后为 Swif接口新建一个子用户,最后就能够经过创立的用户拜访目标网关验证了。

官方文档:docs.ceph.com/en/latest/a…

这儿运用radosgw-adminradosgw-admin 是 RADOS 网关用户办理东西,可用于创立和修正用户。

【1】创立 S3 网关用户

radosgw-admin user create --uid="rgwuser" --display-name="This is first rgw test user"

info

{
    "user_id": "rgwuser",
    "display_name": "This is first rgw test user",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "rgwuser",
            "access_key": "48AIAPCYK7S4X9P72VOW",
            "secret_key": "oC5qKL0BMMzUJHAS76rQAwIoJh4s6NwTnLklnQYX"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

分布式存储系统 Ceph 实战操作

【2】测验拜访 S3 接口

#参照官方文档,咱们需求编写一个 Python 测验脚本,该脚本将会衔接 radosgw,然后新建一个新的 bucket 再列出一切的 buckets。脚本变量 aws_access_key_id 和 aws_secret_access_key 的值便是上边返回值中的 access_key 和 secret_key。
#首要,咱们需求装置 python-boto 包,用于测验衔接 S3。:
yum install python-boto -y
# 然后,编写 python 测验脚本。
# cat s3.py
#!/usr/bin/python
import boto
import boto.s3.connection
access_key = '48AIAPCYK7S4X9P72VOW'
secret_key = 'oC5qKL0BMMzUJHAS76rQAwIoJh4s6NwTnLklnQYX'
conn = boto.connect_s3(
    aws_access_key_id = access_key,
    aws_secret_access_key = secret_key,
    host = 'local-168-182-130', port=80,
    is_secure=False,
    calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('my-first-s3-bucket')
for bucket in conn.get_all_buckets():
        print "{name}\t{created}".format(
                name = bucket.name,
                created = bucket.creation_date,
)

【温馨提示】这儿运用了python-boto 包,运用认证信息衔接 S3,然后创立了一个 my-first-s3-bucket 的 bucket,最后列出一切已创立的 bucket,打印称号和创立时间。

分布式存储系统 Ceph 实战操作

【3】创立 Swift 用户

#要经过 Swift 拜访目标网关,需求 Swift 用户,咱们创立subuser作为子用户。
radosgw-admin subuser create --uid=rgwuser --subuser=rgwuser:swift --access=full

info

{
    "user_id": "rgwuser",
    "display_name": "This is first rgw test user",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [
        {
            "id": "rgwuser:swift",
            "permissions": "full-control"
        }
    ],
    "keys": [
        {
            "user": "rgwuser",
            "access_key": "48AIAPCYK7S4X9P72VOW",
            "secret_key": "oC5qKL0BMMzUJHAS76rQAwIoJh4s6NwTnLklnQYX"
        }
    ],
    "swift_keys": [
        {
            "user": "rgwuser:swift",
            "secret_key": "6bgDOAsosiD28M0eE8U1N5sZeGyrhqB1ca3uDtI2"
        }
    ],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

【4】创立密钥

radosgw-admin key create --subuser=rgwuser:swift --key-type=swift --gen-secret
#留意:返回的 Json 值中,咱们要记住swift_keys中的secret_key 由于下边咱们测验拜访 Swift 接口时需求运用。secret_key以这条指令为准

info

{
    "user_id": "rgwuser",
    "display_name": "This is first rgw test user",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [
        {
            "id": "rgwuser:swift",
            "permissions": "full-control"
        }
    ],
    "keys": [
        {
            "user": "rgwuser",
            "access_key": "48AIAPCYK7S4X9P72VOW",
            "secret_key": "oC5qKL0BMMzUJHAS76rQAwIoJh4s6NwTnLklnQYX"
        }
    ],
    "swift_keys": [
        {
            "user": "rgwuser:swift",
            "secret_key": "AVThl3FGiVQW3VepkQl4Wsoyq9lbPlLlpKhXLhtR"
        }
    ],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

【5】测验拜访 Swift 接口

#留意,以下指令需求python环境和可用的pip服务。
yum install python-pip -y
pip install --upgrade python-swiftclient
#测验
swift -A http://192.168.182.130/auth/1.0 -U rgwuser:swift -K 'AVThl3FGiVQW3VepkQl4Wsoyq9lbPlLlpKhXLhtR' list

分布式存储系统 Ceph 实战操作

【5】S3相关操作

# 1、删去S3用户
radosgw-admin  user rm --uid=rgwuser
# 2、权限调整,允许rgwuser读写users信息:
radosgw-admin caps add --uid=rgwuser --caps="users=*"
# 3、允许admin读写一切的usage信息
radosgw-admin caps add --uid=rgwuser --caps="usage=read,write"
# 4、删去swift子用户
radosgw-admin subuser rm  --subuser=rgwuser:swift
# 5、列出当时体系下一切的bucket信息
radosgw-admin bucket list
# 6、检查具体某个BUCKET特点
radosgw-admin bucket stats --bucket=my-first-s3-bucket

一般是经过api接口运用目标存储,这儿仅仅演示了一个十分简略的示例。

散布式存储体系 Ceph 实战操作就先到这儿了,有任何疑问的小伙伴欢迎给我留言或私信,后续会持续更新【大数据+云原生】方向的技术文章,请小伙伴耐性等。也能够关注我的公众号【大数据与云原生技术分享】!!!

分布式存储系统 Ceph 实战操作