通过Cephadm工具搭建Ceph分布式存储以及通过文件系统形式进行挂载的步骤

1、什么是Ceph

Ceph是一种开源、分布式存储系统,旨在提供卓越的性能、可靠性和可伸缩性。它是为了解决大规模数据存储问题而设计的,使得用户可以在无需特定硬件支持的前提下,通过普通的硬件设备来部署和管理存储解决方案。Ceph的灵活性和设计理念使其成为各种数据密集型应用的理想选择,包括云平台、数据中心和科研项目等。

2、本实验拓扑以及与生产环境的差异

本实验拓扑及其相应节点的规划如下:
在这里插入图片描述
需要注意的是,本次实验属于实验环境并非生产环境,受限于服务器数量限制,存在将mon、mgr和osd部署在同一台服务器的情况,这样的部署方式本质上是存在服务中断风险的,所以如果是在生产环境中进行规划,应该尽可能的将mon、mgr、osd或者RGW等服务部署在不同的物理节点上。

3、搭建步骤

(1)通过命令“hostnamectl set-hostname <主机名>”分别在debian1、debian2、debian3节点上修改服务器的主机名,如下:
在这里插入图片描述
上述命令在相应的节点执行完成后,注销并重新登录服务器,使得相应的修改生效。

(2)分别在debian1、debian2和debian3节点上执行命令,写入相应的hosts信息,以达到在实验环境下解析域名的目的,命令代码如下:

cat >> /etc/hosts << EOF
192.168.26.144 debian1
192.168.26.151 debian2
192.168.26.152 debian3
EOF

执行完上述命令后,可以通过ping命令测试,确认是否配置正确。

(3)通过“apt install cephadm -y”命令,在debian1节点上安装cephadm,如下:
在这里插入图片描述
(4)通过命令“cephadm bootstrap --mon-ip 192.168.26.144”命令,在debian1节点上进行初始化,如下:

root@debian1:~# cephadm bootstrap --mon-ip 192.168.26.144
Creating directory /etc/ceph for ceph.conf
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit systemd-timesyncd.service is enabled and running
Repeating the final host check...
podman (/usr/bin/podman) version 4.3.1 is present
systemctl is present
lvcreate is present
Unit systemd-timesyncd.service is enabled and running
Host looks OK
Cluster fsid: 492491c0-b0c1-11ef-acca-000c29ea04eb
Verifying IP 192.168.26.144 port 3300 ...
Verifying IP 192.168.26.144 port 6789 ...
Mon IP `192.168.26.144` is in CIDR network `192.168.26.0/24`
Mon IP `192.168.26.144` is in CIDR network `192.168.26.0/24`
Internal network (--cluster-network) has not been provided, OSD replication will default to the public_network
Pulling container image quay.io/ceph/ceph:v16...
Ceph version: ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start...
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf...
Restarting the monitor...
Setting mon public_network to 192.168.26.0/24
Wrote config to /etc/ceph/ceph.conf
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Creating mgr...
Verifying port 9283 ...
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/15)...
mgr not available, waiting (2/15)...
mgr not available, waiting (3/15)...
mgr not available, waiting (4/15)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for mgr epoch 5...
mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to /etc/ceph/ceph.pub
Adding key to root@localhost authorized_keys...
Adding host debian1...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for mgr epoch 9...
mgr epoch 9 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:URL: https://debian1:8443/User: adminPassword: b4xslut1x4Enabling client.admin keyring and conf on hosts with "admin" label
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:sudo /usr/sbin/cephadm shell --fsid 492491c0-b0c1-11ef-acca-000c29ea04eb -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringOr, if you are only running a single cluster on this host:sudo /usr/sbin/cephadm shellPlease consider enabling telemetry to help improve Ceph:ceph telemetry onFor more information see:https://docs.ceph.com/en/pacific/mgr/telemetry/Bootstrap complete.

初始化过程会生成首次登录Ceph图形化面板的IP地址链接、用户名和密码,需要牢记好!
在这里插入图片描述

除此之外,此初始化过程会执行以下操作:

  • 在本地主机上为新集群创建monitor 和 manager daemon守护程序。
  • 为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。
  • 将public key的副本写入/etc/ceph/ceph.pub。
  • 将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。
  • 向/etc/ceph/ceph.client.admin.keyring写入client.admin可特权管理secret key的副本。

以上操作完成后,在debian1节点上,会运行以下服务:

  • ceph-mgr ceph管理程序
  • ceph-monitor ceph监视器
  • ceph-crash 崩溃数据收集模块
  • prometheus prometheus监控组件
  • grafana 监控数据展示dashboard
  • alertmanager prometheus告警组件
  • node_exporter prometheus节点数据收集组件

(5)在debian1节点上进入/etc/ceph目录,然后通过以下命令,将cephadm的密钥传送到debian1、debian2和debian3节点上,代码如下:

ssh-copy-id -f -i ceph.pub root@debian1
ssh-copy-id -f -i ceph.pub root@debian2
ssh-copy-id -f -i ceph.pub root@debian3

在这里插入图片描述
(6)在debian1上输入命令“cephadm shell -- ceph orch apply mon --unmanaged”将自动部署mon节点的设置禁用,执行此命令的目的是,不让cephadm在后续添加主机的时候自动向添加的主机部署mon和mgr服务,如下:
在这里插入图片描述
(7)分别在debian2和debian3上,输入命令“apt install podman lvm2 -y”,在相应的节点安装Ceph相关服务所需要podman和lvm2组件,如下:
在这里插入图片描述
(8)在debian1上输入以下命令,在Ceph集群中添加debian1、debian2和debian3节点,如下:

cephadm shell -- ceph orch host add debian1
cephadm shell -- ceph orch host add debian2
cephadm shell -- ceph orch host add debian3

在这里插入图片描述
(9)在debian1上输入命令“cephadm shell -- ceph orch host ls”,查看添加的节点,如下:
在这里插入图片描述
(10)通过命令“cephadm shell -- ceph orch device ls”,查看所有节点的可用设备,需要注意的是,此方式显示的可用设备可能存在错误,例如下图中debian2的节点,显示的是/dev/sda和/dev/sdb两个设备可用,实际上,是/dev/sdb和/dev/sbc可用,因此在添加osd设备时,按照实际的设备名称添加即可,如下:
在这里插入图片描述
(11)在debian1上分别执行以下命令,添加各个节点充当osd的硬盘设备,如下:

ceph orch daemon add osd debian1:/dev/sdb
ceph orch daemon add osd debian1:/dev/sdc
ceph orch daemon add osd debian2:/dev/sdb
ceph orch daemon add osd debian2:/dev/sdc
ceph orch daemon add osd debian3:/dev/sdb
ceph orch daemon add osd debian3:/dev/sdc

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(12)为了使得mon服务在本实验中存在冗余结构,在debian1节点上通过命令“cephadm shell -- ceph orch apply mon debian1,debian2,debian3”将mon服务扩展到每个节点,需要注意的是,受网络和服务器性能进行,此扩展过程需要时间,如下:
在这里插入图片描述
(13)在debian1节点上通过命令“cephadm shell -- ceph orch ls”,查看每个节点的mon运行状态,如下:
在这里插入图片描述
(14)为了使得mgr服务在本实验中存在冗余结构,在debian1节点上通过命令“cephadm shell -- ceph orch apply mgr debian1,debian2”将mon服务扩展到每个节点,需要注意的是,受网络和服务器性能进行,此扩展过程需要时间,如下:
在这里插入图片描述
(15)在debian1节点上通过命令“cephadm shell -- ceph -s”查看mgr服务运行情况,如下:
在这里插入图片描述
(16)除上述通过命令行方式操作外,Ceph也提供了图形化操作面板,具体操作方式为在浏览器里面输入“https://IP地址:8443”(本实验为“https://192.168.26.144:8443”),即可登录图形化界面,需要注意的是,首次登录的用户名为admin,密码为Ceph初始化时,分配的密码,通过此密码登录后,将进入首次修改密码界面,如下:
在这里插入图片描述

(17)密码修改完成,并成功登录后,相应的图形化面板界面如下:
在这里插入图片描述

4、以文件系统形式的挂载步骤

Ceph分布式存储的应用接口一般有四种,分别是:应用直接访问的Redos接口、基于S3/Swift的对象存储接口(通常是Amazon和OpenStack使用)、基于librbd的块存储接口和基于libcephfs/posix的文件系统接口。本实验关于Ceph的挂载讲解部分,使用基于libcephfs的文件系统实现。具体步骤如下:
(1)在debian1节点上,通过命令“cephadm shell -- ceph osd pool create cephfs-metadata 32 32”,创建保存元数据的cephfs-metadata存储池,如下:
在这里插入图片描述
(2)在debian1节点上,通过命令“cephadm shell -- ceph osd pool create cephfs-data 64 64”,创建保存数据的cephfs-data存储池,如下:
在这里插入图片描述
(3)在debian1节点上,通过命令“cephadm shell -- ceph orch apply mds mycephfs --placement=”3 debian1 debian2 debian3””,创建一个名为mycephfs的mds,如下:
在这里插入图片描述
(4)在debian1节点上,通过命令“cephadm shell -- ceph fs new mycephfs cephfs-metadata cephfs-data”,创建基于cephfs-metadata/cephfs-data两个存储池,名为mycephfs的cephFS文件系统,如下:
在这里插入图片描述
(5)在debian1节点上,通过命令“cephadm shell -- ceph -s”,查看文件系统mycephfs的部署状态,本截图展示的是文件系统mycephfs部署过程中的状态,如下:
在这里插入图片描述
(6)在debian1节点上,通过命令“cephadm shell -- ceph fs ls”查看和验证刚刚创建的文件系统mycephfs,如下:
在这里插入图片描述
(7)在debian1节点上,通过命令“cephadm shell -- cephfs status mycephfs”查看文件系统mycephfs的运行状态,如下:
在这里插入图片描述
(8)在debian1节点上,通过以下命令,创建和查看用于客户端登录的用户ymh,如下:

cephadm shell -- ceph auth get-or-create client.ymh mon ‘allow r’ mds ‘allow rw’ osd ‘allow rwx pool=cephfs-data’
cephadm shell -- ceph auth get client.ymh

在这里插入图片描述
(9)在debian1节点上通过命令“cephadm shell -- ceph-authtool --create-keyring ceph.client.ymh.keyring”,创建用户ymh的keyring文件,如下:
在这里插入图片描述
(10)在debian1节点上通过命令“cephadm shell -- ceph auth get client.ymh -o ceph.client.ymh.keyring”将用户ymh的信息写入到keyring文件中,如下:
在这里插入图片描述
(11)在debian1节点上通过命令“cephadm shell -- ceph auth print-key client.ymh > ymh.key”将认证相关的加密信息写入到ymh.key文件中,如下:
在这里插入图片描述
(12)在客户端服务器节点(本实验中,客户端服务器安装的是OpenEuler操作系统)上通过命令“yum install ceph-common -y”安装ceph-common,如下:
在这里插入图片描述
(13)在debian1节点上,通过以下命令,将相关ceph配置文件和用户文件移动到同一目录下,并传送到客户端,如下:

mv ceph.client.ymh.keyring ymh.key /etc/ceph
scp /etc/ceph/ceph.conf ceph.client.ymh.keyring ymh.key root@192.168.26.146:/etc/ceph

在这里插入图片描述
(14)在客户端服务器节点上,通过命令“ceph --user ymh -s”,对用户ymh进行权限验证,确认在客户端上通过用户ymh访问服务端是正常的,如下:
在这里插入图片描述
(15)在客户端节点上,通过命令“mount -t ceph 192.168.26.144:6789,192.168.26.151:6789,192.168.26.152:6789:/ /mnt/ceph_test -o name=ymh,secretfile=/etc/ceph/ymh.key”,对搭建完成的Ceph分布式存储集群进行挂载(本实验中,挂载点为/mnt/ceph_test),如下:
在这里插入图片描述
(16)在客户端节点上通过命令“df -Th”,查看挂载情况,如下:
在这里插入图片描述
(17)此时便可以向Ceph集群中进行文件的读写。

5、其他注意事项

5.1、在cephadm下如何删除已经创建的文件系统和存储池

Ceph为了保证数据安全,在默认情况下,通过ceph监控节点(mon节点)是不能对文件系统和存储池做删除操作的,不过可以通过设置临时项放开删除权限,然后就可以进行删除操作了,以上述的mycephfs文件系统以及下层的cephfs-data、cephfs-metadata存储池为例,讲解相应的删除步骤:
(1)在debian1节点上,通过命令“cephadm shell -- ceph fs set mycephfs down true”放开监控节点删除文件系统的权限,如下:
在这里插入图片描述
(2)在debian1节点上,通过命令“cephadm shell -- ceph osd pool get cephfs-metadata nodeleteceph fs rm mycephfs --yes-i-really-mean-it”删除文件系统mycephfs,如下:
在这里插入图片描述
(3)在debian1节点,通过命令“cephadm shell -- ceph osd pool get cephfs-metadata nodelete”确认nodelete参数为false,如果不是false,则需要通过命令“cephadm shell -- ceph osd pool set cephfs-metadata nodelete false”修改为false,如下:
在这里插入图片描述
在这里插入图片描述
(4)在debian1节点上,通过命令“cephadm shell -- ceph tell mon.* injectargs --mon-allow-pool-delete=true”将mon-allow-pool-delete参数修改为true,以达到放开监控节点删除存储池权限之目的,如下:
在这里插入图片描述
(5)在debian1节点上,通过命令“cephadm shell -- ceph osd pool rm cephfs-metadata cephfs-metadata --yes-i-really-really-mean-it”删除存储池cephfs-metadata,如下:
在这里插入图片描述
(6)在debian1节点上,通过命令“cephadm shell -- ceph osd pool rm cephfs-data cephfs-data --yes-i-really-really-mean-it”删除存储池cephfs-data,如下:
在这里插入图片描述

5.2、Ceph和GlasterFS的区别

Ceph和GlasterFS都是应用非常广泛的开源分布式存储系统,从部署难度上来说GlasterFS部署更加快速容易,可以通过简单的几个配置便可以达到分布式存储的目的,并且对于操作系统基础环境的要求很低,而对比之下,Ceph的部署难度则比GlasterFS高不少。然而,Ceph支持的特性比GlasterFS多很多,例如,GlasterFS只支持文件系统存储,而Ceph除了支持CephFS这一文件系统存储之外,还支持块存储和对象存储,并且每个osd硬盘上都通过文件副本和纠删码等方式进行了加密存储,因此,如果单独把一个osd设备拿出来,其中的文件是不能直接进行使用的,而GlasterFS的每个节点,文件都是直接放在存储节点上,因此这些文件在存储节点单拿出来时,是可以直接使用的。
另外在Amazon和OpenStack等云平台架构中,Ceph是其重要的组成部分,这一点相比于GlasterFS有着无可比拟的优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/499193.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM对象创建过程

1 类加载检查 jvm通过new指令开始创建对象jvm执行new指令时&#xff0c;首先通过指令参数从常量池中取到需要创建的类名检查该类是否被加载&#xff0c;解析&#xff0c;和初始化过如果没有&#xff0c;则执行类的加载过程new指令对应到java语言具体的操作为 new 关键字创建对象…

逆向生成原理

逆向工程原理 前言逆向工程的原理1.Freemarker模板引擎2.逆向工程的原理 前言 在我们实际开发过程中&#xff0c;开发流程大体可以分为需求分析、数据库字段设计、然后再开始编码&#xff0c;然后就开始创建我们实体类、controller、service、serviceImpl、mapper&#xff0c;…

【Unity】 HTFramework框架(五十七)通过Tag、Layer批量搜索物体

更新日期&#xff1a;2024年12月30日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 问题再现通过Tag搜索物体&#xff08;SearchByTag&#xff09;打开SearchByTag窗口搜索标记指定Tag的所有物体批量修改Tag搜索Undefined状态的所有物体 …

JWT包中的源码分析【Golang】

前言 最近在学web编程的途中&#xff0c;经过学长提醒&#xff0c;在进行登陆&#xff08;Login&#xff09;操作之后&#xff0c;识别是否登陆的标识应该要放入authorization中&#xff0c;正好最近也在学鉴权&#xff0c;就顺便来看看源码了。 正文 1. 代码示例 在进行分…

鸿蒙应用开发(1)

可能以为通过 鸿蒙应用开发启航计划&#xff08;点我去看上一节&#xff09; 的内容&#xff0c;就足够了&#xff0c;其实还没有。 可是我还是要告诉你&#xff0c;你还需要学习新的语言 -- ArkTS。 &#xff0c;ArkTS是HUAWEI开发的程序语言。你需要学习这门语言。这会花费你…

python爬虫--小白篇【selenium自动爬取文件】

一、问题描述 在学习或工作中需要爬取文件资源时&#xff0c;由于文件数量太多&#xff0c;手动单个下载文件效率低&#xff0c;操作麻烦&#xff0c;采用selenium框架自动爬取文件数据是不二选择。如需要爬取下面网站中包含的全部pdf文件&#xff0c;并将其转为Markdown格式。…

超大规模分类(一):噪声对比估计(Noise Contrastive Estimation, NCE)

NCE损失对应的论文为《A fast and simple algorithm for training neural probabilistic language models》&#xff0c;发表于2012年的ICML会议。 背景 在2012年&#xff0c;语言模型一般采用n-gram的方法&#xff0c;统计单词/上下文间的共现关系&#xff0c;比神经概率语言…

latex 尖括号怎么写 编译出来是问号

首先引入\usepackage{amsmath}使用\langle \range&#xff0c; 如下&#xff1a; These knowledge graphs represent real-world facts in the form of triples of \(\langle entity, relationship, entity \rangle \)编译展示出来如下&#xff1a;

永磁同步电机控制算法--最大转矩电流比控制(牛顿迭代法)

一、原理介绍 搭建了基于牛顿迭代法的MTPA双闭环矢量控制系统 二、仿真验证 在MATLAB/simulink里面验证所提算法&#xff0c;采用和实验中一致的控制周期1e-4&#xff0c;电机部分计算周期为1e-6。仿真模型如下所示&#xff1a; 对直接公式计算法和牛顿迭代法进行仿真对比验…

[Win32/ATL]_[初级]_[处理WM_PAINT消息注意事项]

场景 在开发Win32/WTL程序时&#xff0c;遇到了使用CFolderDialog(atldlgs.h)打不开目录选择对话框的情况。具体表现是执行了窗口的DoModal&#xff0c;却没有窗口弹出来。 可以确定执行操作是在主线程,并不是工作线程。调试时暂停看堆栈&#xff0c;知道到DoModal方法里的SHB…

华为配置 之 RIP

简介&#xff1a; RIP&#xff08;路由信息协议&#xff09;是一种广泛使用的内部网关协议&#xff0c;基于距离向量算法来决定路径。它通过向全网广播路由控制信息来动态交换网络拓扑信息&#xff0c;从而计算出最佳路由路径。RIP易于配置和理解&#xff0c;非常适用于小型网络…

RCE-PLUS (学习记录)

源码 <?php error_reporting(0); highlight_file(__FILE__); function strCheck($cmd) {if(!preg_match("/\;|\&|\\$|\x09|\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){return($cmd);}else{die("i hate this"…

Unity Mesh生成Cube

1. 配置一个Cube的每个面的数据 一共是6个面&#xff0c;每个面包含的数据包括4个顶点的相对顶点坐标&#xff08;Cube的中心为原点&#xff09;&#xff0c;法线方向&#xff0c;UV坐标&#xff0c;顶点渲染顺序&#xff0c;以及这个面用到的材质&#xff0c;因为这里是Top&am…

【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测

目录 论文信息 论文创新点 1.自适应轻量通道分割和洗牌&#xff08;ALSS&#xff09;模块 2.轻量坐标注意力&#xff08;LCA&#xff09;模块 3.单通道聚焦模块 4.FineSIOU损失函数 摘要 架构设计 轻量高效网络架构 - ALSS模块 LCA模块 单通道聚焦模块 损失函数优…

【亚马逊云】基于Amazon EC2实例部署 NextCloud 云网盘并使用 Docker-compose 搭建 ONLYOFFICE 企业在线办公应用软件

文章目录 1. 部署EC2实例2. 安装 Docker 服务3. 安装docker-compose4. 创建Docker-compose文件5. 创建nginx.conf文件6. 运行docker-compose命令开始部署7. 访问ONLYOFFICE插件8. 访问NextCloud云盘9. 下载并启用ONLYOFFICE插件10. 上传文件测试11. 所遇问题12. 参考链接 1. 部…

使用爬虫技术获取网页中的半结构化数据

目录 前言1. 半结构化数据与爬虫技术简介1.1 半结构化数据的定义与特性1.2 爬虫技术的基本原理 2. 爬取半结构化数据的实现过程2.1 明确目标与准备2.2 发送HTTP请求2.3 解析网页内容2.4 动态内容的处理2.5 数据存储与清洗 3. 技术挑战与应对策略3.1 处理反爬机制3.2 提高爬取效…

win10、win11-鼠标右键还原、暂停更新

系统优化 win 10jihuo win 11jihuo鼠标右键还原暂停更新 update 2024.12.28win 10 jihuo winx&#xff0c;打开powershell管理员&#xff0c;输入以下命令,选择1并等待 irm https://get.activated.win | iex参考&#xff1a;https://www.bilibili.com/video/BV1TN411M72J/?sp…

【蓝桥杯选拔赛真题87】python输出字符串 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python输出字符串 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python输出字符串 第十五届蓝桥杯青少年组python比赛选拔赛真题详细解析…

有什么AI辅助阅读文献工具推荐?

AI的发展速度非常快&#xff0c;在很多方面都已经可以提供货真价实的辅助能力。 比如AI辅助阅读方面&#xff0c;可以获取、分析和理解大量文献资料。这可以帮助我们快速浏览和理解PDF文件和其他文档&#xff0c;提高我们的工作效率和学习效率&#xff0c;达到降本增效。 作为…