通过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: admin
        Password: b4xslut1x4

Enabling 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.keyring

Or, if you are only running a single cluster on this host:

        sudo /usr/sbin/cephadm shell

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For 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有着无可比拟的优势。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac连接云服务器工具推荐

文章目录 前言步骤1. 下载2. 安装3. 常用插件安装4. 连接ssh测试5. 连接sftp测试注意&#xff1a;ssh和sftp的区别注意&#xff1a;不同文件传输的区别解决SSL自动退出 前言 Royal TSX是什么&#xff1a; Royal TSX 是一款跨平台的远程桌面和连接管理工具&#xff0c;专为 mac…

xterm + vue3 + websocket 终端界面

xterm.js 下载插件 // xterm npm install --save xterm// xterm-addon-fit 使终端适应包含元素 npm install --save xterm-addon-fit// xterm-addon-attach 通过websocket附加到运行中的服务器进程 npm install --save xterm-addon-attach <template><div :…

[2025] 如何在 Windows 计算机上轻松越狱 IOS 设备

笔记 1. 首次启动越狱工具时&#xff0c;会提示您安装驱动程序。单击“是”确认安装&#xff0c;然后再次运行越狱工具。 2. 对于Apple 6s-7P和iPad系列&#xff08;iOS14.4及以上&#xff09;&#xff0c;您应该点击“Optinos”并勾选“允许未经测试的iOS/iPadOS/tvOS版本”&…

网页排名:PageRank 算法的前世今生

PageRank算法全解析&#xff1a;从理论到实践 引言 PageRank 是由拉里佩奇&#xff08;Larry Page&#xff09;和谢尔盖布林&#xff08;Sergey Brin&#xff09;在1996年发明的一种链接分析算法&#xff0c;最初用于Google搜索引擎来评估网页的重要性。该算法通过模拟随机浏览…

嵌入式开发之使用 FileZilla 在 Windows 和 Ubuntu 之间传文件

01-FileZilla简介 FileZilla 是一个常用的文件传输工具&#xff0c;它支持多种文件传输协议&#xff0c;包括以下主要协议&#xff1a; FTP (File Transfer Protocol) 这是 FileZilla 最基本支持的协议。FTP 是一种明文传输协议&#xff0c;不加密数据&#xff08;包括用户名和…

Jmeter的安装与使用

1.下载压缩包&#xff0c;并解压到本地 2.在bin目录下找到jmeter.bat双击打开图形化界面 3.在测试计划上点击右键添加一个线程组 4.可以自定义线程数&#xff0c;Ramp_Up表示在该时间内将一组线程将运行完毕&#xff0c;循环次数可自定义 5.在线程组点击右键添加配置元件…

pycharm pytorch tensor张量可视化,view as array

Evaluate Expression 调试过程中&#xff0c;需要查看比如attn_weight 张量tensor的值。 方法一&#xff1a;attn_weight.detach().numpy(),view as array 方法二&#xff1a;attn_weight.cpu().numpy(),view as array

XIAO ESP32 S3网络摄像头——2视频获取

本文主要是使用XIAO Esp32 S3制作网络摄像头的第2步,获取摄像头图像。 1、效果如下: 2、所需硬件 3、代码实现 3.1硬件代码: #include "WiFi.h" #include "WiFiClient.h" #include "esp_camera.h" #include "camera_pins.h"// 设…

数据仓库中的指标体系模型介绍

数据仓库中的指标体系介绍 文章目录 数据仓库中的指标体系介绍前言什么是指标体系指标体系设计有哪些模型?1. 指标分层模型2. 维度模型3. 指标树模型4. KPI&#xff08;关键绩效指标&#xff09;模型5. 主题域模型6.平衡计分卡&#xff08;BSC&#xff09;模型7.数据指标框架模…

K3知识点

提示&#xff1a;文章 文章目录 前言一、顺序队列和链式队列题目 顺序队列和链式队列的定义和特性实际应用场景顺序表题目 链式队列 二、AVL树三、红黑树四、二叉排序树五、树的概念题目1左子树右子树前序遍历、中序遍历&#xff0c;后序遍历先根遍历、中根遍历左孩子右孩子题目…

jQuery学习笔记1

// jQuery的入口函数 // 1.等着DOM结构渲染完毕即可执行内部代码&#xff0c;不必等到所以外部资源加载完毕&#xff0c;jQuery帮我们完成了封装 // 相当于原生js中的DOMContentLoaded <script src"./jquery.min.js"></script> <style>div {width…

HTML——41有序列表

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>有序列表</title></head><body><!--有序列表&#xff1a;--><!--1.列表中各个元素在逻辑上有先后顺序&#xff0c;但不存在一定的级别关系-->…

典型常见的基于知识蒸馏的目标检测方法总结二

来源&#xff1a;https://github.com/LutingWang/awesome-knowledge-distillation-for-object-detection收录的方法 NeurIPS 2017&#xff1a;Learning Efficient Object Detection Models with Knowledge Distillation CVPR 2017&#xff1a;Mimicking Very Efficient Networ…

计算机网络-L2TP VPN基础实验配置

一、概述 上次大概了解了L2TP的基本原理和使用场景&#xff0c;今天来模拟一个小实验&#xff0c;使用Ensp的网卡桥接到本地电脑试下L2TP拨号&#xff0c;今天主要使用标准的L2TP&#xff0c;其实在这个基础上可以加上IPSec进行加密&#xff0c;提高安全性。 网络拓扑 拓扑说明…

基于BiTCN双向时间卷积网络实现电力负荷多元时序预测(PyTorch版)

Bidirectional Temporal Convolutional Network \begin{aligned} &\text{\Large \color{#CDA59E}Bidirectional Temporal Convolutional Network}\\ \end{aligned} ​Bidirectional Temporal Convolutional Network​ Bidirectional Temporal Convolutional Network (BiTC…

Linux C/C++编程-网络程序架构与套接字类型

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com…

北京某新能源汽车生产及办公网络综合监控项目

北京某新能源汽车是某世界500强汽车集团旗下的新能源公司&#xff0c;也是国内首个获得新能源汽车生产资质、首家进行混合所有制改造、首批践行国有控股企业员工持股的新能源汽车企业&#xff0c;其主营业务包括纯电动乘用车研发设计、生产制造与销售服务。 项目现状 在企业全…

【LeetCode】2506、统计相似字符串对的数目

【LeetCode】2506、统计相似字符串对的数目 文章目录 一、哈希表位运算1.1 哈希表位运算 二、多语言解法 一、哈希表位运算 1.1 哈希表位运算 每个字符串, 可用一个 int 表示. (每个字符 是 int 的一个位) 哈希表记录各 字符组合 出现的次数 步骤: 遇到一个字符串, 得到 ma…

gitlab 还原合并请求

事情是这样的&#xff1a; 菜鸡从 test 分支切了个名为 pref-art 的分支出来&#xff0c;发布后一机灵&#xff0c;发现错了&#xff0c;于是在本地用 git branch -d pref-art 将该分支删掉了。之后切到了 prod 分支&#xff0c;再切出了一个相同名称的 pref-art 分支出来&…

Uncaught ReferenceError: __VUE_HMR_RUNTIME__ is not defined

Syntax Error: Error: vitejs/plugin-vue requires vue (>3.2.13) or vue/compiler-sfc to be present in the dependency tree. 第一步 npm install vue/compiler-sfc npm run dev 运行成功&#xff0c;本地打开页面是空白&#xff0c;控制台报错 重新下载了vue-loa…