cenph三大存储方式

接上续https://blog.csdn.net/qq_45817836/article/details/161082594?spm=1001.2014.3001.5502

1客户端进行连接ceph存储

创建/etc/yum.repos.d/ceph.repo文件,加入如下内容;

bash 复制代码
[ceph]
name=Ceph packages for x86_64
baseurl=http://download.ceph.com/rpm-jewel/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

我的客户机是centos7(找源,换源比较复杂),如果别的9,10或者别的系统配置也许就好配置了,但是我用比较老的rbd管理器,,需要单独要下载,现在较新的版本ceph-common里面就包含rbd管理工具,如果是centos7版本就跟着该博主做吧

接着,安装RBD客户端,执行如下命令安装RBD客户端。

bash 复制代码
[root@client ceph]# yum update
[root@client ceph]# yum install epel-release centos-release-ceph-jewel.noarch
[root@client ceph]# yum install rbd-mirror

客户端安装成功之后,我们就可以使用rbd命令来创建块设备了。rbd命令可用来创建,展示、删除块设备映像,也可以克隆映像、创建快照、回滚快照、查看快照等。

拷贝认证信息到ceph客户端,这是链接到ceph的重要步骤

需要将ceph1的/usr/local/ceph/etc/目录下的 ceph.conf 和 ceph.client.admin.keyring 文件拷贝到用户主机的/etc/ceph目录下,因为只有把这些配置信息拷贝到用户主机上,用户主机才能连接上Ceph集群。

/etc/ceph 关于这个东西安装了rbd的管理器, 就会自动创建这个目录

拷贝过去

bash 复制代码
[root@ceph1 ~]# scp  /usr/local/ceph/etc/* root@192.168.20.20:/etc/ceph

ceph-s查看是否连接上

2 OK我们这样就开始第一个存储-----块存储

客户端用户主机上创建pool

bash 复制代码
[root@client ceph]# ceph osd pool create mypool 64

这里创建了一个名称为mypool的存储池,通常在创建pool之前,需要覆盖默认的pg_num,官方推荐: 若少于5个OSD, 设置pg_num为128或64。 5~10个OSD,设置pg_num为512。 10~50个OSD,设置pg_num为4096。 超过50个OSD,可以参考pgcalc计算。 这里我的集群中OSD数量是3个,所以指定的pg_num是64。

#创建rbd镜像

bash 复制代码
[root@client ceph]# rbd create --size 4096  mypool/foo

#查看创建的镜像

bash 复制代码
rbd ls mypool

这里在mypool存储池中创建了一个4G大小的rbd镜像。

、创建块设备映像

rbd镜像创建完成之后,接下来就是在用户机上挂载该Ceph块设备,可以理解为往用户机上插入硬盘:

bash 复制代码
[root@client ceph]# rbd map mypool/foo --name client.admin -m ceph1 -k /etc/ceph/ceph.client.admin.keyring

如果挂载成功的话则会输出 /dev/rbd0,也就是说此时在客户端主机执行fdisk命令就可以看到我们创建的块设备了。

此时哈,如果没有成功要是报错的话(因为我提前做过了哈)

如果是centos7版本环境,可能出现如下错误:

咋解决呢??此时,可执行rbd info mypool/foo 查看rbd支持的特性:

bash 复制代码
[root@client ceph]# rbd info mypool/foo

这是因为CentOS的3.10内核仅支持其中的layering 和 exclusive-lock,其他feature概不支持,此时需要关闭一些RBD特性。

bash 复制代码
[root@ceph-client ~]# rbd feature disable  mypool/foo object-map fast-diff deep-flatten

再看一下rbd支持的特性

看features,只剩下这两layering 和 exclusive-lock

关闭后,再次执行如下命令:

root@client ceph# rbd map mypool/foo --name client.admin -m ceph1 -k /etc/ceph/ceph.client.admin.keyring

成功后,执行如下命令,可以看到客户端用户主机上出现了/dev/rbd0了:

bash 复制代码
 disk  -l|grep /dev/rbd0

我们有这个磁盘就可以挂载使用了呗

但是要格式化,为什么呢看图

bash 复制代码
最后,将磁盘挂载到/data目录下
[root@client ceph]# mkdir /data
[root@client ceph]# mount /dev/rbd0  /data -o noatime,discard,nobarrier

格式化一下

bash 复制代码
mkfs.xfs /dev/rbd0

创建文件挂载

bash 复制代码
最后,将磁盘挂载到/data目录下
[root@client ceph]# mkdir /data
[root@client ceph]# mount /dev/rbd0  /data -o noatime,discard,nobarrier

看成果

欧克欧克这样就可以正常存储了

如果磁盘大小不够用也可以扩容,至于扩容的大小就看osd主机的储存的大小了

小小扩容一个案例

bash 复制代码
rbd resize --size 8000 mypool/foo 
bash 复制代码
[root@client ceph]# xfs_growfs -d /mnt

它的作用是:将挂载在 /mnt 目录下的 XFS 文件系统扩展到底层块设备的最大可用大小。

这里扩容8g左右,其实是按需分配,不会立马就给你分配8g,当你客户机有储存需求时,会根据你的需求分配内存,最大8g.

,小小插取一个内容,我们是手动mount挂载的自盘,当虚拟机关机,或者down机的时候我们挂载的磁盘就会消失,当然了 我们可以进行永久挂载

这里是ai的,确实可用这里不我多展示,只是与平常的永久挂载有点点的小区别

收尾工作

1取消映射rbd设备到内核

bash 复制代码
[root@client ceph]# umount /mnt
[root@client ceph]# rbd unmap /dev/rbd0

2、删除镜像与存储池

bash 复制代码
[root@client ceph]# rbd rm mypool/foo
[root@client ceph]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it

这里删除池,必须要跟我的ceph.conf里配置的文件一样

里面有个删除pool池,欧克欧克这样ceph存储的快存储就结束了

3ceph---文件存储

Ceph文件系统是个POSIX兼容的文件系统,它使用Ceph存储集群来存储数据。Ceph块设备和Ceph对象存储不同的是:Ceph文件系统的运行需要ceph-mds元数据的支持,而其余两者则不需要。 ceph-mds是Ceph分布式文件系统的元数据服务器守护进程,一个或者多个ceph-mds进程协作着管理文件系统的命名空间,协调到共享OSD集群的访问。

1、创建ceph文件系统(ceph集群上操作) 首先,创建data pool,存放数据的存储池

bash 复制代码
docker exec osd ceph osd pool create cephfs_data 128 128

然后,创建metadata pool,存放元数据的存储池

bash 复制代码
[root@ceph1 etc]# docker exec osd ceph osd pool create cephfs_metadata 128 128

接着,创建cephfs文件系统(将上面两个存储池合为一个变成一个cephfs1的文件存储系统)

bash 复制代码
[root@ceph1 etc]# docker exec osd ceph fs new cephfs1 cephfs_metadata cephfs_data
[root@ceph1 etc]# docker exec osd ceph fs ls

如果上面的128提示过大,可改小为64、32、16等尝试

2、客户端主机挂载ceph文件系统

首先,需要将主节点ceph1上的配置拷贝到客户端主机client上

bash 复制代码
 scp -r /usr/local/ceph/etc/* client:/etc/ceph
#可以这写后面那段 root@192.168.20.20:/etc/ceph 也就是我的客户机ceph文件存储地方

用第一段的前提,前提是已经在主节点ceph1上配置了客户端主机名client的host,host的配置在/etc/hosts文件中。

然后,在客户端主机client上安转ceph-fuse客户端

bash 复制代码
[root@client ceph]# yum -y install ceph-fuse

最后,执行挂载即可,首先创建挂载目录

bash 复制代码
[root@client ceph]# mkdir /data/mycephfs

接着,将ceph文件系统挂载到指定目录下

bash 复制代码
[root@client ceph]# ceph-fuse -m ceph1:6789,ceph2:6789,ceph3:6789 /data/mycephfs 

一开始没做hosts映射配置所以就不行

直接写ip地址就行

这样就直接可以往mycephfs里写东西就可以

那么文件存储就可以了

4ceph--对象存储

Ceph对象网关就是一个与Nginx和Apache并无特殊差别的HTTP服务器。通过这个网关入口,用户可以采用HTTP协议,通过RESTful的方式访问Ceph的对象存储。 而Ceph对象存储使用Ceph对象网关守护进程(rgw),它是个与Ceph存储集群交互的FastCGI模块。也就是说要想使用Ceph对象存储,必须先启动网关组件rgw。然后,通过AWS的S3接口或者Openstack Swift接口来操作对象网关,实现文件的上传与下载。

对象存储其实就是将文件 以对象的形式存储到存储桶中,而每个存储桶都要在特定的用户下创建。Ceph对象存储的模型如图所示:

使用对象存储,首先要创建用户,然后,在该用户下创建存储桶,最后就是通过接口 向存储桶中存放文件。

在配置RGW网关之前,首先需要检查一下网关服务是否正常。首先通过docker exec mon ceph -s 查看集群的状态是否HEALTH_OK,同时需要看看rgw组件是否正确启动,本案例,我设置的rgw端口号是20003,即地址是: http://{服务器IP}:20003,正常可以显示信息。

在ceph集群上执行如下脚本,创建网关用户:

bash 复制代码
#!/bin/bash
SYSTEM_ACCESS_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1)
SYSTEM_SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1)
docker exec rgw radosgw-admin user create --uid=rgw --display-name=rgw --access-key=$SYSTEM_ACCESS_KEY --secret=$SYSTEM_SECRET_KEY --system

docker exec mon sh -c "echo $SYSTEM_ACCESS_KEY > /tmp/access_key"
docker exec mon sh -c "echo $SYSTEM_ACCESS_KEY > /tmp/secret_key"

docker exec mon ceph dashboard set-rgw-api-access-key -i /tmp/access_key
docker exec mon ceph dashboard set-rgw-api-secret-key -i /tmp/secret_key
docker exec rgw radosgw-admin user info --uid="rgw"

上面的六个命令就是主要就做了两件事,分别是创建API操作用户以及打印出access-key以及secret-key。在S3中,access_key和secret_key分别扮演着用户名ID和用户密码的角色,这两个重要的参数在后面调用S3接口时需要用到。

安装与配置s3客户端 安装S3客户端的命令很简单,我们直接通过yum的命令就可以进行安装。'

bash 复制代码
[root@client ceph]#  yum install -y epel-release
[root@client ceph]#  yum install -y s3cmd

'安装完S3客户端之后,就可以配置S3客户端了。配置命令为:

bash 复制代码
[root@client ceph]#  s3cmd --configure

通过如上命令打开S3的配置文件,这里只需要输入Access Key和Secret Key,这两个就是我们前面生成的access_key和secret_key,此外需要修改如下两个配置:

Use HTTPS protocol Yes: no Test access with supplied credentials? Y/n n

安装S3客户端完成后,默认会在当前用户根目录下生成隐藏的.s3cfg文件,编辑.s3cfg 文件,修改 host_base和host_bucket 两项配置,要改成我们ceph集群的rgw的地址,修改结果如下:

host_base = ceph1:20003

host_bucket = %(bucket).ceph1:20003

、创建存储桶 下面的命令是创建名称为first-bucket的存储桶。

bash 复制代码
[root@client ceph]# s3cmd mb s3://first-bucket

接着可一通过get 和put两个命令进行拿文件放文件

复制代码
s3cmd put /path/to/local/file.txt s3://first-bucket/
相关推荐
杨浦老苏8 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
回忆2012初秋9 小时前
【Nginx】原理、配置与运维实战(2)
运维·nginx·策略模式
Urbano10 小时前
工装外套全制作流程、工序痛点及自动化设备升级方案
运维·自动化
映翰通朱工10 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
洪晓露10 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
谢平康11 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
IP老炮不瞎唠11 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
GIS数据转换器11 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
Tokai_Teio_112 小时前
第四届黄河流域 misc
运维·服务器
hj28625112 小时前
Linux 网络服务综合笔记(概念 + 命令 + 实操案例)2
linux·运维·网络