1.ceph简介

Ceph在一个统一的系统中独特地提供对象、块和文件存储

1.1 ceph官网架构图

1.2 架构解释

 

CEPH 对象存储

CEPH 块设备

CEPH 文件系统

  • RESTful 接口

  • S3 和 Swift 兼容的 API

  • S3 风格的子域

  • 统一的 S3/Swift 命名空间

  • 用户管理

  • 使用跟踪

  • 条纹对象

  • 云解决方案集成

  • 多站点部署

  • 多站点复制

  • 精简配置

  • 图像高达 16 艾字节

  • 可配置的条带化

  • 内存缓存

  • 快照

  • 写时复制克隆

  • 内核驱动支持

  • KVM/libvirt 支持

  • 云解决方案的后端

  • 增量备份

  • 灾难恢复(多站点异步复制)

  • 符合 POSIX 的语义

  • 将元数据与数据分离

  • 动态再平衡

  • 子目录快照

  • 可配置的条带化

  • 内核驱动支持

  • 保险丝支持

  • NFS/CIFS 可部署

  • 与 Hadoop 一起使用(替换 HDFS)

2.ceph的组件和功能

Ceph 提供了一个基于 RADOS 的可无限扩展的Ceph 存储集群,Ceph 存储集群由多种类型的守护进程组成:
  • Monitors:Ceph Monitor ( ceph-mon) 维护集群状态的映射,包括监视器映射、管理器映射、OSD 映射、MDS 映射和 CRUSH 映射。这些映射是 Ceph 守护进程相互协调所需的关键集群状态。监视器还负责管理守护进程和客户端之间的身份验证。通常至少需要三个监视器才能实现冗余和高可用性。
  • 管理器:Ceph 管理器守护进程 ( ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph 管理器守护进程还托管基于 Python 的模块来管理和公开 Ceph 集群信息,包括基于 Web 的Ceph 仪表板和 REST API。高可用性通常至少需要两个管理器。
  • Ceph OSD:Ceph OSD(对象存储守护进程 ceph-osd)存储数据,处理数据复制、恢复、重新平衡,并通过检查其他 Ceph OSD 守护进程的心跳来向 Ceph 监视器和管理器提供一些监控信息。通常至少需要 3 个 Ceph OSD 来实现冗余和高可用性。
  • MDS:Ceph 元数据服务器(MDS,ceph-mds)代表Ceph 文件系统存储元数据(即 Ceph 块设备和 Ceph 对象存储不使用 MDS)。Ceph的元数据服务器允许POSIX文件系统的用户来执行基本的命令(如 ls,find没有放置在一个Ceph存储集群的巨大负担,等等)。

3.ceph的数据读写流程

转发自 关于ceph CRUSH算法的文章 https://zhuanlan.zhihu.com/p/63725901
 
主要分四层,File->Objects->PGs->OSDs。
  • File: 就是我们想要存储和访问的文件,这个是面向我们用户的,是我们直观操作的对象。
  • Object:object就是Ceph底层RADOS所看到的对象,也就是在Ceph中存储的基本单位。object的大小由RADOS限定(通常为2m或者4m)。就跟HDFS抽象一个数据块一样,这里也是为了方便底层存储的组织管理。当File过大时,需要将File切分成大小统一的objects进行存储。
  • PG (Placement Group): PG是一个逻辑的概念,它的用途是对object的存储进行组织和位置的映射,通过它可以更好的分配数据和定位数据。
  • OSD (Object Storage Device): 它就是真正负责数据存取的服务。
PG和object是一对多的关系,一个PG里面组织若干个object,但是一个object只能被映射到一个PG中。
PG和OSD是多对多的关系,一个PG会映射到多个OSD上(大于等于2,此处即为副本机制),每个OSD也会承载大量的PG。
通过寻址流程图我们可以看到,Ceph中的寻址需要经历三次映射,分别是File->Object,Object->PG,PG->OSD。我们重点提到的CRUSH就是在第三步映射PG->OSD出现的。我们依次看一下。
File->Object
这一步就是将file切分成多个object。每个object都有唯一的id即oid。这个oid是怎样产生的呢,就是根据文件名称得到的。
图中的ino为文件唯一id(比如filename+timestamp),ono则为切分后某个object的序号(比如0,1,2,3,4,5等),根据该文件的大小我们就会得到一系列的oid。
注:将文件切分为大小一致的object可以被RADOS高效管理,而且可以将对单一file的处理变成并行化处理提高处理效率。
Object -> PG
这里需要做的工作就是将每个object映射到一个PG中去,实现方式也很简单就是对oid进行hash然后进行按位与计算得到某一个PG的id。图中的mask为PG的数量减1。这里我们认为得到的pgid是随机的,这与PG的数量和文件的数量有关系。在足够量级的程度上数据是均匀分布的。
PG -> OSD
最后一次映射就是将object所在的PG映射到实际的存储位置OSD上。这里应用的就是CRUSH算法了,通过CRUSH算法可以通过pgid得到多个osd(跟配置有关)。
 
crush算法流程
 

4.Ceph集群部署

4.1 服务器硬件配置及IP规划

OS:Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-153-generic x86_64)
 
硬件配置:
4核CPU/8GB内存/200G磁盘/2千兆网卡
4个osd节点各额外增加5块100G的磁盘
 
服务器列表
hostname
public-net
cluster-net
ceph-deploy
192.168.2.2
172.1.0.2
mon1
192.168.2.21
172.1.0.21
mon2
192.168.2.22
172.1.0.22
mon3
192.168.2.23
172.1.0.23
mgr1
192.168.2.31
172.1.0.31
mgr2
192.168.2.32
172.1.0.32
osd1
192.168.2.41
172.1.0.41
osd2
192.168.2.42
172.1.0.42
osd3
192.168.2.43
172.1.0.43
osd4
192.168.2.44
172.1.0.44
client1
192.168.2.50
172.1.0.50
 
 

4.2 服务器初始化配置及优化

4.2.1 关闭ssh登录dns域名查询,加速远程登录

pssh -i -h /data/host_list/ceph 'sed -i "s/^#UseDNS no/UseDNS no/g" /etc/ssh/sshd_config'
pssh -i -h /data/host_list/ceph 'service sshd restart'
 

4.2.2 关闭防火墙

pssh -i -h /data/host_list/ceph 'ufw disable'
 

4.2.3 配置定时时间同步

#pssh -i -h /data/host_list/ceph 'echo "*/30 * * * * root /usr/sbin/ntpdate 192.168.1.20 && hwclock -w > /dev/null 2>& 1" >> /var/spool/cron/crontabs/root '
pssh -i -h /data/host_list/ceph ' crontab -l|tail -n 1'
 

4.2.4 ceph安装的版本

2021-03-31
2023-06-01
 
 
 

4.25 .将Ubuntu的apt-get 源改为清华源

Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用 TUNA 的软件源镜像
# mv /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
 

4.2. 6 各节点配置ceph yum 仓库

导入key 文件:
wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -
 
添加清华源ceph源:
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list
 
执行系统更新
apt-get update
 

4.2.7 配置hosts,添加各节点hostname

vim /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.1.0.2 ceph-deploy
172.1.0.21 mon1
172.1.0.22 mon2
172.1.0.23 mon3
172.1.0.31 mgr1
172.1.0.32 mgr2
172.1.0.41 osd1
172.1.0.42 osd2
172.1.0.43 osd3
172.1.0.44 osd4
172.1.0.50 client1
 

4.2.8 Ubuntu 各服务器需要单独安装Python2

# apt install python2.7 -y
# ln -sv /usr/bin/python2.7 /usr/bin/python2

4.3 安装系统常用工具

apt  install iproute2  ntpdate  tcpdump telnet traceroute nfs-kernel-server nfs-common  lrzsz tree  openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute  gcc openssh-server lrzsz tree  openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip -y

4.4 创建普通用户cephuser

4.4.1 创建cephuser普通用户

groupadd -r -g 2023 cephuser && useradd -r -m -s /bin/bash -u 2023 -g 2023 cephuser && echo cephuser:sa@123.. | chpasswd
 

4.4.2 各服务器允许ceph 用户以sudo 执行特权命

echo "cephuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
 

4.4.3 配置免秘钥登录

在ceph-deploy 节点配置允许以非交互的方式登录到各ceph osd/mon/mgr 节点,即在ceph-deploy 节点生成秘钥对,然后分发公钥到各被管理节点:
ssh-keygen
ssh-keygen
ssh-copy-id cephuser@172.1.0.2
ssh-copy-id cephuser@172.1.0.21
ssh-copy-id cephuser@172.1.0.22
ssh-copy-id cephuser@172.1.0.23
ssh-copy-id cephuser@172.1.0.31
ssh-copy-id cephuser@172.1.0.32
ssh-copy-id cephuser@172.1.0.41
ssh-copy-id cephuser@172.1.0.42
ssh-copy-id cephuser@172.1.0.43
ssh-copy-id cephuser@172.1.0.44
ssh-copy-id cephuser@172.1.0.50
 

4.5.deploy节点部署

4.5.1 在ceph 部署服务器(192.168.2.2)安装部署工具ceph-deploy

root@ceph-deploy:~# apt install ceph-deploy
 

4.5.2 ceph-deploy 管理ceph 集群

在ceph-deploy 节点配置一下系统环境,以方便后期可以执行ceph 管理命令。
# apt install ceph-common
 

4.5.3 推送正证书给自己

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy admin ceph-deploy
 

4.5.4 证书文件授权

root@ceph-deploy:/data/ceph-cluste# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring

4.6 配置mon节点

4.6.1 在管理节点ceph-depoly上初始化mon节点

root@ceph-deploy:~# mkdir ceph-cluste -p #保存当前集群的初始化配置信息
root@ceph-deploy:~# cd ceph-cluste/
 
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy new --cluster-network 172.1.0.0/24 --public-network 192.168.2.0/24 mon1 mon2 mon3
 
生成如下文件:
-rw-rw-r-- 1 cephuser cephuser 295 Aug 19 11:23 ceph.conf
-rw-rw-r-- 1 cephuser cephuser 11492 Aug 19 11:23 ceph-deploy-ceph.log
-rw------- 1 cephuser cephuser 73 Aug 19 11:23 ceph.mon.keyring
 
ceph.conf #自动生成的配置文件
ceph-deploy-ceph.log #初始化日志
#用于ceph mon 节点内部通讯认证的秘钥环文件
 

4.6.2 配置mon 节点并生成及同步秘钥

4.6.2.1 在各mon节点安装组件ceph-mon,并通过初始化mon 节点,mon 节点ha 还可以后期横向扩容

apt install ceph-mon
 

4.6.2.2 在ceph-deploy 初始化mon节点

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy mon create-initial
 

4.6.2.3 验证mon 节点

ps -ef |grep mon
ceph 20082 1 1 12:00 ? 00:00:00 /usr/bin/ceph-mon -f --cluster ceph --id mon1 --setuser ceph --setgroup ceph

4.7 配置manager 节点

4.7.1 mgr节点安装ceph-mgr安装包

apt install ceph-mgr
 

4.7.2 ceph-deploy节点cephuser账号执行初始化mgr节点

ceph-deploy mgr create mgr1 mgr2
 

4.7.3 验证ceph-mgr 节点

root@mgr1:~# ps -ef |grep mgr
ceph 20913 1 40 12:54 ? 00:00:12 /usr/bin/ceph-mgr -f --cluster ceph --id mgr1 --setuser ceph --setgroup ceph

4.8 mon、mgr初始化安装后集群状态查询

测试ceph 命令:
root@ceph-deploy:/data/ceph-cluste# su - cephuser
cephuser@ceph-deploy:~$ ceph -s
  cluster:
id: d623cb9e-74c4-44ec-ba47-a49272ddd76e
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
OSD count 0 < osd_pool_default_size 3 services:
mon: 3 daemons, quorum mon1,mon2,mon3 (age 59m)
mgr: mgr1(active, since 5m), standbys: mgr2
osd: 0 osds: 0 up, 0 in data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
mon is allowing insecure global_id reclaim #需要禁用非安全模式通信
OSD count 0 < osd_pool_default_size 3 #集群的OSD 数量小于3
 
配置优化
cephuser@ceph-deploy:~$ ceph config set mon auth_allow_insecure_global_id_reclaim false
 
mon is allowing insecure global_id reclaim 警告消失了

4.9 准备OSD 节点

4.9.1 初始化ceph 存储节点

初始化存储节点等于在存储节点安装了ceph 及ceph-rodsgw 安装包,但是使用默认的官方仓库会因为网络原因导致初始化超时,因此各存储节点推荐修改ceph 仓库为阿里或者清华等国内的镜像源。
 
修改ceph 镜像源,之前步骤已经配置过,此步忽略。
 
初始化node 节点过程,此过程会在指定的ceph node 节点按照串行的方式逐个服务器安装epel 源和ceph 源,并按安装ceph ceph-radosgw
ceph-deploy install --no-adjust-repos --nogpgcheck osd1 osd2 osd3 osd4

4.9.1 分发admin 秘钥

root@ceph-deploy:/data/ceph-cluste# apt install ceph-common -y
root@ceph-deploy:/data/ceph-cluste# su - cephuser
cephuser@ceph-deploy:~$ cd ceph-cluster/
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy admin osd1 osd2 osd3 osd4
 

4.9.3 ceph 节点(osd)验证秘钥

root@osd1:~# ll /etc/ceph/
total 24
drwxr-xr-x 2 root root 87 Aug 19 12:06 ./
drwxr-xr-x 95 root root 8192 Aug 19 11:41 ../
-rw------- 1 root root 151 Aug 19 12:06 ceph.client.admin.keyring
-rw-r--r-- 1 root root 295 Aug 19 12:06 ceph.conf
-rw-r--r-- 1 root root 92 Jul 8 22:17 rbdmap
-rw------- 1 root root 0 Aug 19 12:06 tmpSJF5Yk
 

4.9.4 认证文件的属主和属组的修改

为了安全考虑,默认设置为了root 用户和root 组,如果需要ceph用户也能执行ceph 命令,那么就需要对ceph 用户进行授权
root@osd1:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring
root@osd2:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring
root@osd3:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring
root@osd4:~# setfacl -m u:cephuser:rw /etc/ceph/ceph.client.admin.keyring
 

4.9.5 擦除磁盘之前通过deploy 节点对node(osd) 节点执行安装ceph 基本运行环境

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd1
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd2
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd3
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy install --release pacific osd4
 

4.9.6 列出ceph node 节点磁盘

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd1
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd2
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd3
cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy disk list osd4
 

4.9.7 使用ceph-deploy disk zap 擦除各ceph node 的ceph 数据磁盘

cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd1 /dev/vd$i;done
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd2 /dev/vd$i;done
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd3 /dev/vd$i;done
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy disk zap osd4 /dev/vd$i;done
 

4.9.8 添加OSD

数据分类保存方式:
Data:即ceph 保存的对象数据
Block: rocks DB 数据即元数据
block-wal:数据库的wal 日志
 
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd1 --data /dev/vd$i;done
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd2 --data /dev/vd$i;done
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd3 --data /dev/vd$i;done
cephuser@ceph-deploy:~/ceph-cluster$ for i in b c d e f; do ceph-deploy osd create osd4 --data /dev/vd$i;done
 

4.9.10 验证osd添加后集群状态

cephuser@ceph-deploy:~/ceph-cluster$ ceph -s
cluster:
id: d623cb9e-74c4-44ec-ba47-a49272ddd76e
health: HEALTH_OK
 
services:
mon: 3 daemons, quorum mon1,mon2,mon3 (age 86m)
mgr: mgr1(active, since 32m), standbys: mgr2
osd: 20 osds: 20 up (since 42s), 20 in (since 53s)
 
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 152 MiB used, 2.0 TiB / 2.0 TiB avail
pgs: 1 active+clean

5. Ceph块设备RBD

5.1 RBD简介

RBD(RADOS Block Devices)即为块存储的一种,RBD 通过librbd 库与OSD 进行交互,RBD为KVM 等虚拟化技术和云服务(如OpenStack 和CloudStack)提供高性能和无限可扩展性的存储后端,这些系统依赖于libvirt 和QEMU 实用程序与RBD 进行集成,客户端基于librbd 库即可将RADOS 存储集群用作块设备,不过,用于rbd 的存储池需要事先启用rbd功能并进行初始化。例如,下面的命令创建一个名为myrbd1 的存储池,并在启用rbd 功能后对其进行初始化

5.2 RBD创建

5.2.1 创建RBD

创建存储池命令格式: 
$ceph osd pool create <poolname> pg_num pgp_num {replicated|erasure} 
 
#创建存储池,指定pg 和pgp 的数量,pgp 是对存在于pg 的数据进行组合存储,pgp 通常等于pg 的值 
cephuser@ceph-deploy:~/ceph-cluster$ ceph osd pool create rbd-test1 64 64
$ ceph osd pool --help 
cephuser@ceph-deploy:~/ceph-cluster$ ceph osd pool application enable rbd-test1 rbd 

5.2.2 通过RBD 命令对存储池初始化

$ rbd -h

rbd pool init -p rbd-test1 

5.2.3 创建并验证img

不过,rbd 存储池并不能直接用于块设备,而是需要事先在其中按需创建映像(image),并把映像文件作为块设备使用,rbd 命令可用于创建、查看及删除块设备相在的映像(image),以及克隆映像、创建快照、将映像回滚到快照和查看快照等管理操作,例如,下面的命令能够创建一个名为img-test1 的映像: 
cephuser@ceph-deploy:~/ceph-cluster$ rbd create img-test1 --size 5G --pool rbd-test1 
cephuser@ceph-deploy:~/ceph-cluster$ rbd create img-test2 --size 3G --pool rbd-test1 --image-format 2 --image-feature layering 
 
#后续步骤会使用 img-test2,由于系统内核较低无法挂载使用,因此只开启部分特性。 
除了layering 其他特性需要高版本内核支持 
 
列出img: 
cephuser@ceph-deploy:~/ceph-cluster$ rbd ls --pool rbd-test1 
img-test1 
img-test2 

5.2.4 查看指定rdb 的信息

cephuser@ceph-deploy:~/ceph-cluster$ rbd --image img-test1 --pool rbd-test1 info 
rbd image 'img-test1': 
size 5 GiB in 1280 objects 
order 22 (4 MiB objects) 
snapshot_count: 0

id: 1295c66bf942

block_name_prefix: rbd_data.1295c66bf942 
format: 2 
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

op_features:

flags: 
create_timestamp: Thu Aug 19 13:42:45 2021

access_timestamp: Thu Aug 19 13:42:45 2021

modify_timestamp: Thu Aug 19 13:42:45 2021
cephuser@ceph-deploy:~/ceph-cluster$ rbd --image img-test2 --pool rbd-test1 info

rbd image 'img-test2':

size 3 GiB in 768 objects

order 22 (4 MiB objects)

snapshot_count: 0 
id: 129e31139198 
block_name_prefix: rbd_data.129e31139198

format: 2

features: layering 
op_features: 
flags:

create_timestamp: Thu Aug 19 13:44:39 2021

access_timestamp: Thu Aug 19 13:44:39 2021

modify_timestamp: Thu Aug 19 13:44:39 2021
 

5.3 客户端使用块存储

5.3.1 查看当前ceph 状态

cephuser@ceph-deploy:~/ceph-cluster$ ceph df
--- RAW STORAGE ---
CLASS SIZE AVAIL USED RAW USED %RAW USED
hdd 2.0 TiB 2.0 TiB 162 MiB 162 MiB 0
TOTAL 2.0 TiB 2.0 TiB 162 MiB 162 MiB 0
 
--- POOLS ---
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL
device_health_metrics 1 1 0 B 0 0 B 0 633 GiB
rbd-test1 2 64 405 B 7 48 KiB 0 633 GiB
 

5.3.2 在客户端安装ceph-common

root@client1:~# apt install ceph-common
 

5.3.3 从ceph-deploy服务器同步认证文件

cephuser@ceph-deploy:~/ceph-cluster$ scp ceph.conf ceph.client.admin.keyring root@172.1.0.50:/etc/ceph/
 

5.3.4 客户端映射img

root@client1:/etc/ceph# rbd -p rbd-test1 map img-test1
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd-test1/img-test1 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
 
root@client1:/etc/ceph# rbd -p rbd-test1 map img-test2
/dev/rbd0
 

5.3.5 客户端验证RBD

root@client1:/etc/ceph# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
rbd0 251:0 0 3G 0 disk
vda 252:0 0 200G 0 disk
├─vda1 252:1 0 4.7G 0 part /boot
└─vda2 252:2 0 195.4G 0 part /
 

5.3.6 客户端格式化磁盘并挂载使用

root@client1:/etc/ceph# fdisk /dev/rbd0
 
root@client1:/etc/ceph# mkfs.xfs /dev/rbd0p1
 
root@client1:/etc/ceph# mkdir /mnt/rbd0
root@client1:/etc/ceph# mount /dev/rbd0p1 /mnt/rbd0/
 
root@client1:/etc/ceph# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/rbd0p1 3.0G 36M 3.0G 2% /mnt/rbd0
 

5.3.7 客户端验证

root@client1:/etc/ceph# dd if=/dev/zero of=/mnt/rbd0/ceph-test-file bs=1MB count=300
300+0 records in
300+0 records out
300000000 bytes (300 MB, 286 MiB) copied, 0.537179 s, 558 MB/s
 
ceph 验证数据
root@client1:/etc/ceph# df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 5.9M 792M 1% /run
/dev/vda2 196G 4.7G 191G 3% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 4.7G 183M 4.5G 4% /boot
tmpfs 798M 0 798M 0% /run/user/0
/dev/rbd0p1 3.0G 323M 2.7G 11% /mnt/rbd0
 

6.ceph radosgw(RGW)对象存储

6.1 RGW简介

RGW 提供的是REST 接口,客户端通过http 与其进行交互,完成数据的增删改查等管理操。

radosgw 用在需要使用RESTful API 接口访问ceph 数据的场合,因此在使用RBD 即块存储得场合或者使用cephFS 的场合可以不用启用radosgw 功能。

6.2 部署radosgw 服务

如果是在使用radosgw 的场合,则以下命令以mgr1 节点为例部署为RGW 主机:
首先在需要安装radosgwf服务的服务器上,比如mgr1上安装radosgw安装包 
root@mgr1:~# apt install radosgw=16.2.5-1bionic

6.3 radosgw节点的初始化

在ceph-deploy节点用cephuser账号执行radosgw节点的初始化命令

cephuser@ceph-deploy:~/ceph-cluster$ ceph-deploy --overwrite-conf rgw create mgr1

6.4 验证mgr1 上radosgw 服务

root@mgr1:~# ps -ef |grep radosgw

root 22253 1 2 15:41 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.mgr1 --setuser ceph --setgroup ceph

6.5 查看radosgw服务的监听端口

root@mgr1:~# netstat -ntlp |grep radosgw

tcp 0 0 0.0.0.0:7480 0.0.0.0:* LISTEN 22253/radosgw

tcp6 0 0 :::7480 :::* LISTEN 22253/radosgw

6.6 访问测试

cephuser@ceph-deploy:~/ceph-cluster$ curl "http://mgr1:7480" 
<?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>
验证ceph 状态 
cephuser@ceph-deploy:~/ceph-cluster$ ceph -s 
cluster: 
id: d623cb9e-74c4-44ec-ba47-a49272ddd76e

health: HEALTH_OK

services:

mon: 3 daemons, quorum mon1,mon2,mon3 (age 3h)

mgr: mgr1(active, since 2h), standbys: mgr2

osd: 20 osds: 20 up (since 2h), 20 in (since 2h)

rgw: 1 daemon active (1 hosts, 1 zones)

data: 
pools: 6 pools, 169 pgs 
objects: 282 objects, 300 MiB 
usage: 2.0 GiB used, 2.0 TiB / 2.0 TiB avail 
pgs: 169 active+clean
 

6.7 验证radosgw 存储池

初始化完成radosgw 之后,会初始化默认的存储池如下:

cephuser@ceph-deploy:~/ceph-cluster$ ceph osd pool ls

device_health_metrics

rbd-test1

.rgw.root

default.rgw.log

default.rgw.control

default.rgw.meta

基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。的更多相关文章

  1. Ubuntu 14.04主机上部署k8s集群

    部署结构 3台虚拟机,其中1台作为master,2台作为minion,都安装了最新版本的docker engine(目前是1.11.2) k8s版本是1.3.0 主要问题 部署步骤基本按照官方文档:h ...

  2. Ubuntu 18.04.1 LTS + kolla-ansible 部署 openstack Rocky all-in-one 环境

    1. kolla 项目介绍 简介 kolla 的使命是为 openstack 云平台提供生产级别的.开箱即用的自动化部署能力. kolla 要实现 openetack 部署分为两步,第一步是制作 do ...

  3. Ubuntu 18.04.2 LTS美化方案

    Ubuntu 18.04.2 LTS美化方案记录 根据个人经验,我将Ubuntun美化分为四个部分:1)桌面:2)对话框界面:3)图标:4)登录及锁屏界面:5)终端.由于Ubuntu系统默认采用GNO ...

  4. Ubuntu 18.04.4 LTS 更换国内系统源

    Ubuntu 18.04.4 LTS 更换国内系统源 1.1) 好习惯先做备份在干活: mv /etc/apt/sources.list /etc/apt/sources.list.bak 1.2) ...

  5. zookeeper部署及集群测试

    zookeeper部署及集群测试 环境 三台测试机 操作系统: centos7 ; hostname: c1 ; ip: 192.168.1.80 操作系统: centos7 ; hostname: ...

  6. Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS

    1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...

  7. 基于ubuntu 14.04 kvm虚拟化部署

    1. 宿主机环境(dell备份服务器) Ubuntu 14.04 LTS 64位 内存:16G 硬盘:2T 2. 确认CPU是否支持硬件虚拟化 root@shwilling:~# egrep -o ' ...

  8. Ubuntu 14.04下Hadoop2.4.1集群安装配置教程

    一.环境 系统: Ubuntu 14.04 64bit Hadoop版本: hadoop 2.4.1 (stable) JDK版本: OpenJDK 7 台作为Master,另3台作为Slave. 所 ...

  9. Ubuntu 12.04下spark1.0.0 集群搭建(原创)

    spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.str ...

随机推荐

  1. C#并行编程:Parallel的使用

    前言:在C#的System.Threading.Tasks 命名空间中有一个静态的并行类:Parallel,封装了Task的使用,对于执行大量任务提供了非常简便的操作.下面对他的使用进行介绍. 本篇内 ...

  2. UF_CAMGEOM_ask_custom_points 封装缺陷

    如果当前设置为0个点时,取自定义点就会报错,这又是一个封装错误 解决办法,只能是这么搞了:

  3. 第0次 Beta Scrum Meeting

    本次会议为Beta阶段第0次Scrum Meeting会议 会议概要 会议时间:2021年5月27日 会议地点:「腾讯会议」线上进行 会议时长:1小时 会议内容简介:本次会议为Beta阶段启程会议,主 ...

  4. Noip模拟34 2021.8.9

    T1 Merchant 一眼二分,然后想了想维护凸包,好像并没有什么关系, 然后又想了想维护一个栈,发现跳指针细节过多不想打 最后直接打了二分,大点跑的飞快,感觉比较稳,出来$78$分 是没用神奇的$ ...

  5. 六个好习惯让你的PCB设计更优

    PCB layout工程师每天对着板子成千上万条走线,各种各样的封装,重复着拉线的工作,也许很多人会觉得是很枯燥无聊的工作内容.看似软件操作搬运工,其实设计人员在过程中要在各种设计规则之间做取舍,兼顾 ...

  6. numpy.zeros()的作用和实操

    numpy.zeros()的作用: 通常是把数组转换成想要的矩阵 numpy.zeros()的使用方法: zeros(shape, dtype=float, order='C') shape:数据尺寸 ...

  7. Python课程笔记(六)

    今天上课补上了上次未学完比较重点的鼠标和键盘事件,同时开始学习运用turtle进行绘图. 本次课程的代码: https://gitee.com/wang_ming_er/python_course_l ...

  8. objdump--反汇编查看

    转载:objdump命令_Linux objdump 命令用法详解:显示二进制文件信息 (linuxde.net) objdump命令 编程开发 objdump命令是用查看目标文件或者可执行的目标文件 ...

  9. linux 内核源代码情景分析——Intel X86 CPU 系列的寻址方式

    当我们说一个CPU是"16位"或"32"位时,指的是处理器中"算数逻辑单元"(ALU)的宽度.数据总线通常与ALU具有相同的宽度.当Inte ...

  10. git安装心得

    每天码代码打卡任务,老师需要我们提交链接,这就需要我们把自己打的代码文件上传到GitHub上来,以此获得链接. 自己是一个新人,安装git也是什么都不懂(跟着网上的教程也总是能出错) 安装正常操作:h ...