在一台机器上搭建一体化 Ceph 存储集群

news/2025/10/21 17:24:28/文章来源:https://www.cnblogs.com/ivorysql/p/19155950

概述

Ceph 是一个开源的软件定义存储平台,它在单个分布式计算机集群上实现对象存储,并提供对象级、块级和文件级存储的三合一接口。Ceph 存储集群由 Ceph 监视器、Ceph 管理器、Ceph 元数据服务器和 OSD 组成,它们协同工作来存储和复制数据,供应用程序、Ceph 用户和 Ceph 客户端使用。Ceph 还提供了使用 PostgreSQL 来利用网络存储的选项。

在这篇文章中,我将指导你通过一个简单的过程在单台机器上搭建一个一体化的 Ceph 存储集群,这样你就可以使用这个设置来运行简单的与存储相关的实验性开发或测试。

搭建 Ceph 存储集群

一个可用于生产环境的 Ceph 存储集群应该包含所有必要的组件以正确管理存储,但这篇博客文章旨在提供一个简单的设置,让开发人员能够快速体验网络存储集群。

搭建基础环境

在本节中,我使用了一台在 VirtualBox 上运行的 CentOS 7 虚拟机,并添加了三个虚拟硬盘(VHD)。这台虚拟机的存储设置如下图所示:
img1.png

登录到 CentOS 后,通过运行以下命令添加一个名为 ceph 的新用户:

$ sudo useradd -d /home/ceph -m ceph
$ sudo passwd ceph
$ echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
$ sudo chmod 0440 /etc/sudoers.d/ceph
$ su - ceph

然后使用以下命令安装基本软件包。Docker 用作容器,NTP 用于同步时钟:

$ sudo yum update
$ sudo yum install lvm2 docker ntp ntpdate ntp-doc python3

检查状态,确保 Docker 和 NTPD 都正常运行:

$ sudo systemctl status ntpd
$ sudo systemctl status docker

搭建集群监视器

有许多工具可用于管理 Ceph 存储集群,但我们将使用简单的 cephadm 作为我们的管理工具。

首先,切换到主目录并通过以下命令下载 cephadm:

$ cd ~
$ curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
$ chmod +x cephadm

接下来,添加 Octopus 版本的仓库并安装 cephadm:

$ sudo ./cephadm add-repo --release octopus
$ sudo ./cephadm install

现在,使用 cephadm 引导程序在 Ceph 存储集群中设置第一个监视器守护进程。将 192.168.0.134 替换为你实际的服务器 IP 地址。我们将使用简单的用户名和密码 admin/password 来简化设置,否则 cephadm 会生成一个随机密码,并要求你在首次登录时更改它。

$ sudo ./cephadm bootstrap --mon-ip 192.168.0.134 --dashboard-password-noupdate --initial-dashboard-user admin --initial-dashboard-password password

如果一切顺利运行,你应该会看到类似以下的一些消息。

Ceph Dashboard is now available at:URL: https://localhost.localdomain:8443/User: adminPassword: passwordYou can access the Ceph CLI with:sudo ./cephadm shell --fsid 1117491a-ca74-11ed-87fc-080027a1115e -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringPlease consider enabling telemetry to help improve Ceph:ceph telemetry onFor more information see:https://docs.ceph.com/docs/master/mgr/telemetry/

设置好集群监视器后,使用 Web 浏览器登录并检查当前状态。通常会显示如下所示的仪表板:
img2.png

你也可以安装一些常用工具,通过命令行检查 Ceph 存储集群:

$ sudo cephadm install ceph-common

然后,使用以下命令检查状态,你应该会看到类似以下的输出:

$ sudo ceph statuscluster:id:     1117491a-ca74-11ed-87fc-080027a1115ehealth: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 1 daemons, quorum localhost.localdomain (age 9m)mgr: localhost.localdomain.trwhwk(active, since 8m)osd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0 objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:

搭建对象存储设备

如你在 ceph status 中所见,我们的这个集群中只有一个监视器在运行,但有 0 个 osd(对象存储设备)。在向这个存储集群添加对象存储设备之前,让我们使用 lsblk 检查当前的磁盘状态。

$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   79G  0 part├─centos-root 253:0    0 49.8G  0 lvm  /├─centos-swap 253:1    0    5G  0 lvm  [SWAP]└─centos-home 253:2    0 24.3G  0 lvm  /home
sdb               8:16   0   30G  0 disk
sdc               8:32   0   30G  0 disk
sdd               8:48   0   30G  0 disk
sr0              11:0    1 1024M  0 rom

上面是 lsblk 命令的输出,它显示了系统当前的磁盘状态。它列出了所有可用的块设备,包括它们的名称、主要和次要设备编号、大小、类型以及挂载点(如果有的话)。在这种情况下,我们可以看到有三个额外的磁盘(sdb、sdc 和 sdd)尚未被使用。

接下来,让我们使用 Ceph 设备管理命令检查这三个磁盘是否可以添加。

$ sudo ceph orch device ls
Hostname               Path      Type  Serial               Size   Health   Ident  Fault  Available
localhost.localdomain  /dev/sdb  hdd   VBc50561fa-4658471a  32.2G  Unknown  N/A    N/A    Yes
localhost.localdomain  /dev/sdc  hdd   VBc775712c-0dbb8b17  32.2G  Unknown  N/A    N/A    Yes
localhost.localdomain  /dev/sdd  hdd   VB4dfb0df0-a8f28653  32.2G  Unknown  N/A    N/A    Yes

这三个磁盘在“Available”列中都显示为“是”,表明我们可以将它们添加到存储集群中。要将这些设备添加到集群中,我们需要运行以下命令:

$ sudo ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...

输出表明设备正在处理中,这可能需要一些时间。请等待几秒钟或几分钟,然后检查 ceph 集群状态。

$ sudo ceph statuscluster:id:     1117491a-ca74-11ed-87fc-080027a1115ehealth: HEALTH_OKservices:mon: 1 daemons, quorum localhost.localdomain (age 12m)mgr: localhost.localdomain.trwhwk(active, since 11m)osd: 3 osds: 3 up (since 20s), 3 in (since 20s); 1 remapped pgsdata:pools:   1 pools, 1 pgsobjects: 0 objects, 0 Busage:   3.0 GiB used, 87 GiB / 90 GiB availpgs:     1 active+undersized+remappedprogress:Rebalancing after osd.1 marked in (18s)[............................]

现在我们可以看到,3 个 OSD 已添加到这个 Ceph 存储集群中。如果我们再次运行“lsblk”命令,应该会看到类似以下的输出,表明 sdb、sdc 和 sdd 现在正被 Ceph 存储集群使用。

$ lsblk
NAME                                                                                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                                                                                     8:0    0   80G  0 disk
├─sda1                                                                                                  8:1    0    1G  0 part /boot
└─sda2                                                                                                  8:2    0   79G  0 part├─centos-root                                                                                       253:0    0 49.8G  0 lvm  /├─centos-swap                                                                                       253:1    0    5G  0 lvm  [SWAP]└─centos-home                                                                                       253:2    0 24.3G  0 lvm  /home
sdb                                                                                                     8:16   0   30G  0 disk
└─ceph--7062ccde--bf6b--4252--ba0a--a66e02c0839d-osd--block--5ca780b0--b4a3--49c3--b58d--3aba26b88d14 253:3    0   30G  0 lvm
sdc                                                                                                     8:32   0   30G  0 disk
└─ceph--c38c357f--71ef--4641--acd4--8cb7bdf53520-osd--block--ae0bc25d--299e--45f0--af4f--890263970f1d 253:4    0   30G  0 lvm
sdd                                                                                                     8:48   0   30G  0 disk
└─ceph--debbc90a--860a--4e8f--9e93--a3c6e48e7994-osd--block--ccd3d288--f87f--4fa3--983a--102d838ea2a1 253:5    0   30G  0 lvm
sr0

如果你的 Ceph 存储集群的健康状态仍然处于 HEALTH_WARN 状态,你可以尝试运行本文中描述的命令来解决该问题。

解决问题后,你的 ceph 存储集群应该处于 HEALTH_OK 状态。

$ sudo ceph statuscluster:id:     1117491a-ca74-11ed-87fc-080027a1115ehealth: HEALTH_OKservices:mon: 1 daemons, quorum localhost.localdomain (age 17m)mgr: localhost.localdomain.trwhwk(active, since 16m)osd: 3 osds: 3 up (since 5m), 3 in (since 5m)data:pools:   1 pools, 1 pgsobjects: 0 objects, 0 Busage:   3.0 GiB used, 87 GiB / 90 GiB availpgs:     1 active+clean

本地测试 Ceph 存储集群

搭建 Ceph 存储集群主要是为了网络存储场景,但我们稍后会考虑块、对象和文件系统的不同访问网络场景。在这里,我们将创建一个 Cephfs 文件系统,将其本地挂载,并执行一个简单的测试。

要创建 Cephfs 文件系统,请运行以下命令并进行验证:

$ sudo ceph fs volume create cephfs
$ sudo ceph fs volume ls
[{"name": "cephfs"}
]

要在本地挂载 cephfs 文件系统,

  1. 通过运行以下命令为 cephfs 创建一个密钥:
$ sudo ceph fs authorize cephfs client.user / rw | sudo tee /etc/ceph/ceph.client.user.keyring
[client.user]key = AQCcFR5kLAgrERAAdfgLAUqdGvRxghJrLUkBMw==

此命令将创建一个密钥并将其写入密钥环文件。

  1. 通过运行以下命令挂载 cephfs 文件系统:
$ sudo mount -t ceph :/ /media/cephfs -o name=user,secret=AQCcFR5kLAgrERAAdfgLAUqdGvRxghJrLUkBMw==

此命令将把 cephfs 文件系统挂载到 /media/cephfs 目录。

  1. 通过运行以下命令将挂载目录的所有权更改为 ceph:ceph:
$ sudo chown -R ceph:ceph /media/cephfs/
  1. 在挂载目录中创建一个文件并验证其内容:
$ echo "hello ceph storage cluster" > /media/cephfs/hello.txt
$ cat /media/cephfs/hello.txt
hello ceph storage cluster

此时,你可以尝试使用类似以下的一些命令在另一台 CentOS 机器上挂载这个 Ceph 存储集群。不过,我们将在下一篇博客文章中讨论这个主题。

ssh ceph@192.168.0.134 'sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring' > client.admin.key
sudo mount -t ceph 192.168.0.134:/ /mnt/cephfs -o name=admin,secretfile=client.admin.key

总结

在这篇博客文章中,我们介绍了在单个虚拟机上搭建简单的 Ceph 存储集群并在 Cephfs 存储集群上执行基本测试的过程。我们创建了一个 Ceph 用户,设置了 Ceph 监视器和管理器,添加了对象存储设备,并创建了一个 Cephfs 文件系统。然后我们在本地挂载了 Cephfs 文件系统,创建了一个文件,并读取其内容以验证挂载是否成功。在未来的文章中,我们将探索更高级的用例,例如使用 Cephfs 文件系统在一体化 Ceph 存储集群上运行 PostgreSQL。

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

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

相关文章

2025年硅锰合金厂家推荐排行榜,硅锰合金颗粒,硅锰合金粉,高纯度硅锰合金材料源头厂家深度解析

2025年硅锰合金厂家推荐排行榜,硅锰合金颗粒,硅锰合金粉,高纯度硅锰合金材料源头厂家深度解析 一、行业背景与发展趋势 硅锰合金作为钢铁冶炼过程中不可或缺的脱氧剂和合金添加剂,在冶金工业中占据重要地位。随着钢…

byte,short,int,Long,char数据类型复习

byte,short,int,Long,char数据类型复习byte, short, int, Long, char数据类型复习 package com.kun.base;/**byte的取值范围:-128~127(-2的7次方到2的7次方-1)short的取值范围:-32768~32767(-2的15次方到…

PyCharm下载安装教程及激活步骤(附安装包)超详细保姆级教程

目录一、PyCharm 2024 到底是啥?写 Python 为啥都用它?二、PyCharm 2024下载及安装准备2.1 电脑需满足这些条件2.2 下载PyCharm 2024三、PyCharm 2024 安装与激活步骤(详细分步)3.1 解压 PyCharm 2024 安装包3.2 解…

2025 年活性炭源头厂家最新推荐榜,技术实力与市场口碑深度解析,筛选优质可靠品牌颗粒/柱状/粉末/煤质/木质活性炭

引言 当前活性炭市场虽蓬勃发展,但乱象丛生,部分厂家用劣质原料降低成本,导致产品吸附性能不稳定,无法满足食品、医药等高端领域需求;落后生产工艺不仅效率低,还高碳排放,违背绿色发展趋势;品控缺失使产品关键…

2025年手持光谱仪厂家推荐排行榜,光谱分析仪,便携式光谱仪,矿石元素分析仪,合金金属不锈钢铝合金,贵金属三元催化检测设备公司精选

2025年手持光谱仪厂家推荐排行榜:光谱分析技术革新与选购指南 手持光谱仪作为现代工业检测领域的重要工具,在材料分析、质量控制和科研检测中发挥着不可替代的作用。随着技术的不断进步,2025年的手持光谱仪市场呈现…

Windows下利用 Python OCR 识别电子发票(增值税专用发票)(使用 GhostScript 和 Tesseract )

在早起Python公众号下,作者陈熹的解放双手|Python 批量自动提取、整理 PDF 发票!文章中,看到根据坐标识别图片的方法,觉得代码不是太详细。 试着在windows下重现,如下。 所需 requirements.txt 可以是 # Wand - …

2025年臭氧检测仪厂家权威推荐榜:在线式/固定式/便携式/手持式/工业臭氧检测仪专业选购指南

2025年臭氧检测仪厂家权威推荐榜:在线式/固定式/便携式/手持式/工业臭氧检测仪专业选购指南 一、行业技术发展现状与趋势 随着工业安全与环境保护意识的不断提升,臭氧检测仪作为关键的气体监测设备,在半导体制造、水…

✨WPF编程基础【2.2】:布局面板实战 - 详解

✨WPF编程基础【2.2】:布局面板实战 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

2025年拖鞋机厂家权威推荐榜:酒店拖鞋生产线,全自动拖鞋机,一次性拖鞋机,酒店一次性拖鞋机器专业选购指南

2025年拖鞋机厂家权威推荐榜:酒店拖鞋生产线,全自动拖鞋机,一次性拖鞋机,酒店一次性拖鞋机器专业选购指南 行业背景与发展趋势 随着全球酒店业的快速发展和卫生标准的不断提升,一次性拖鞋作为酒店必备用品,其生产…

2025年不锈钢酸洗钝化液厂家推荐排行榜:环保型不锈钢清洗钝化液,不锈钢管酸洗钝化处理,不锈钢清洗剂专业选购指南

2025年不锈钢酸洗钝化液厂家推荐排行榜:环保型不锈钢清洗钝化液,不锈钢管酸洗钝化处理,不锈钢清洗剂专业选购指南 行业背景与发展趋势 随着制造业转型升级和环保政策趋严,不锈钢表面处理行业正经历深刻变革。不锈钢…

达梦8加密函数是什么怎么调用,达梦数据库加密算法

达梦数据库透明加密方法,可以分为全库加密、表空间加密、日志加密。 全库加密和日志加密,只有在初始化实例的时候配置生效。 配置了全库加密,则所有表空间也是加密的,不允许表空间再单独加密。 DB用户使用加密表空…

电话呼叫软件网页版实测报告:体验、稳定性与推荐名单

在呼叫中心、客服外呼、销售跟进等业务场景中,电话呼叫软件已成为企业的“标配工具”。但近年来,随着企业信息化转型的深入,越来越多的团队开始从传统的本地安装系统,转向部署更轻量、更灵活的网页版电话呼叫软件。…

【2025最新】ArcGIS for JS 实现地图卷帘效果,动态修改参数(进阶版) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于Windows,Docker用法

1、安装Docker Desktop2、打开Docker Desktop,查找Images来Pull安装node:latestnginx:latest3、挂载本地目录 docker run -it --rm -v F:/demo:/app -w /app -p 5173:5173 node:latest bash # -v:与 /app 相互映射# …

厨房电子秤方案:厨房秤常规的功能有那些?

厨房秤的常规功能围绕精准称重和便捷操作两大核心设计,覆盖从基础称重到辅助烹饪的多个场景,满足日常家用和轻度专业需求。这些功能看似基础,却能大幅提升烹饪的精准度和效率,尤其适合烘焙、减脂餐制作等对食材重量…

Pandas -

Pandas - import pandas as pd import numpy as npdf_tables = pd.read_csv(tables.csv, names=[table_name], header=None)df_tables[split_list] = df_tables[table_name].str.split(_)df_tables[layer] = np.where(…

A-Beta 剪枝

模型介绍 Alpha-Beta 剪枝是极小化极大算法(Minimax)的优化版本,用于两人零和博弈的决策树搜索。它通过剪枝来减少需要评估的节点数量,同时保证找到与 Minimax 算法相同的最优解。 核心思想:Alpha:MAX 玩家能保证…

MySQL 死锁 怎么处理?

一、什么是死锁(Deadlock) 定义:死锁是指两个或多个事务在执行过程中,互相占用资源且等待对方释放,导致事务都无法继续执行的状态。简单例子:事务A事务BUPDATE t1 SET ... WHERE id=1; UPDATE t1 SET ... WHERE …

MyBatis 的 @SelectProvider 是一个强大的注解,用于动态生成 SQL 语句

MyBatis 的 @SelectProvider 是一个强大的注解,用于动态生成 SQL 语句。让我详细介绍一下它的用途和使用方法。 一、@SelectProvider 的作用 主要用途:动态 SQL 构建 - 根据条件动态生成复杂的 SQL 代码逻辑控制 - 使…

跨境客服系统如何保障国际数据传输安全?

在跨境业务不断扩张的今天,客户数据的流动已经不再局限于单一国家或地区。无论是欧洲客户的售后请求,还是东南亚市场的订单咨询,都意味着企业的客服系统需要跨越多国网络,实时响应用户需求。然而,在全球数据监管趋…