在一台Ubuntu服务器中部署Ceph分布式存储

环境

OS:Linux 5.15.0-82-generic #91-Ubuntu SMP Mon Aug 14 14:14:14 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
ceph version 17.2.6 (d7ff0d10654d2280e08f1ab989c7cdf3064446a5) quincy (stable)

准备

#安装GPG证书 
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -此处流程与docker官网不同,由于docker官网推荐镜像在境外,速度会比较慢,我们这里使用阿里云镜像来自 <https://blog.csdn.net/b1134977524/article/details/120442417> sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

部署

参考官网https://docs.ceph.com/en/latest/install/manual-deployment/

apt -y install cephadm
cephadm bootstrap --mon-ip 192.168.1.20 --single-host-defaults
cephadm add-repo --release reef
cephadm install ceph-common

使用

新增OSD

参考https://docs.ceph.com/en/latest/cephadm/services/osd/#cephadm-deploy-osds
Tell Ceph to consume any available and unused storage device:

查看
ceph orch device ls
方法1
ceph orch apply osd --all-available-devices
Create an OSD from a specific device on a specific host:
方法2
ceph orch daemon add osd :
For example:

ceph orch daemon add osd host1:/dev/sdb

删除OSD

# ceph orch device ls
# ceph orch osd rm 0
Scheduled OSD(s) for removal.
VG/LV for the OSDs won't be zapped (--zap wasn't passed).
Run the `ceph-volume lvm zap` command with `--destroy` against the VG/LV if you want them to be destroyed.#上面这段话表明了以下几个信息:#1.OSD 设备已经被计划移除。
#2.在移除 OSD 设备时,与这些设备相关的卷组(VG)和逻辑卷(LV)不会被删除。
#3.如果需要删除与这些 OSD 设备相关的 VG/LV,需要运行 ceph-volume lvm zap 命令,并添加 --destroy 参数。
#4.换句话说,这个命令告诉你 OSD 设备即将被删除,但是与这些设备相关的 VG/LV 不会被自动删除,如果需要彻底删除这些 VG/LV,需要运行ceph-volume lvm zap 命令,并在命令中添加 --destroy 参数

参考链接: https://www.xiaowangc.com/archives/40095af5.html

# cephadm shell
Inferring fsid def7078a-56ce-11ee-a479-1be9fab3deba
Inferring config /var/lib/ceph/def7078a-56ce-11ee-a479-1be9fab3deba/mon.test/config
Using ceph image with id '22cd8daf4d70' and tag 'v17' created on 2023-09-06 00:05:04 +0800 CST
quay.io/ceph/ceph@sha256:6b0a24e3146d4723700ce6579d40e6016b2c63d9bf90422653f2d4caa49be232
# ceph-volume lvm zap --destroy /dev/nvme1n1
--> Zapping: /dev/nvme1n1
--> Zapping lvm member /dev/nvme1n1. lv_path is /dev/ceph-4229b334-54f8-4b21-80ed-3733cc2d4910/osd-block-866ec7e0-8b60-469e-8124-3d770608977e
Running command: /usr/bin/dd if=/dev/zero of=/dev/ceph-4229b334-54f8-4b21-80ed-3733cc2d4910/osd-block-866ec7e0-8b60-469e-8124-3d770608977e bs=1M count=10 conv=fsyncstderr: 10+0 records in
10+0 records outstderr: 10485760 bytes (10 MB, 10 MiB) copied, 0.0173921 s, 603 MB/s
--> Only 1 LV left in VG, will proceed to destroy volume group ceph-4229b334-54f8-4b21-80ed-3733cc2d4910
Running command: nsenter --mount=/rootfs/proc/1/ns/mnt --ipc=/rootfs/proc/1/ns/ipc --net=/rootfs/proc/1/ns/net --uts=/rootfs/proc/1/ns/uts /sbin/vgremove -v -f ceph-4229b334-54f8-4b21-80ed-3733cc2d4910stderr: Removing ceph--4229b334--54f8--4b21--80ed--3733cc2d4910-osd--block--866ec7e0--8b60--469e--8124--3d770608977e (253:3)stderr: Archiving volume group "ceph-4229b334-54f8-4b21-80ed-3733cc2d4910" metadata (seqno 5).stderr: Releasing logical volume "osd-block-866ec7e0-8b60-469e-8124-3d770608977e"stderr: Creating volume group backup "/etc/lvm/backup/ceph-4229b334-54f8-4b21-80ed-3733cc2d4910" (seqno 6).stdout: Logical volume "osd-block-866ec7e0-8b60-469e-8124-3d770608977e" successfully removedstderr: Removing physical volume "/dev/nvme1n1" from volume group "ceph-4229b334-54f8-4b21-80ed-3733cc2d4910"stdout: Volume group "ceph-4229b334-54f8-4b21-80ed-3733cc2d4910" successfully removed
Running command: nsenter --mount=/rootfs/proc/1/ns/mnt --ipc=/rootfs/proc/1/ns/ipc --net=/rootfs/proc/1/ns/net --uts=/rootfs/proc/1/ns/uts /sbin/pvremove -v -f -f /dev/nvme1n1stdout: Labels on physical volume "/dev/nvme1n1" successfully wiped.
Running command: /usr/bin/dd if=/dev/zero of=/dev/nvme1n1 bs=1M count=10 conv=fsyncstderr: 10+0 records in
10+0 records outstderr: 10485760 bytes (10 MB, 10 MiB) copied, 0.0312679 s, 335 MB/s
--> Zapping successful for: <Raw Device: /dev/nvme1n1># ceph osd tree
ID  CLASS  WEIGHT  TYPE NAME      STATUS  REWEIGHT  PRI-AFF
-1              0  root default
-3              0      host test
# ceph statuscluster:id:     def7078a-56ce-11ee-a479-1be9fab3debahealth: HEALTH_WARNmon test is low on available spaceOSD count 0 < osd_pool_default_size 2services:mon: 1 daemons, quorum test (age 24h)mgr: test.ksgjsf(active, since 23h), standbys: test.lizbxaosd: 0 osds: 0 up (since 5m), 0 in (since 3h)data:pools:   0 pools, 0 pgsobjects: 0 objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:

问题记录

1、 ssh 端口不是22 导致安装ceph失败

/usr/bin/ceph: stderr Error EINVAL: Traceback (most recent call last):
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/mgr_module.py", line 1756, in _handle_command
/usr/bin/ceph: stderr     return self.handle_command(inbuf, cmd)
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 171, in handle_command
/usr/bin/ceph: stderr     return dispatch[cmd['prefix']].call(self, cmd, inbuf)
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/mgr_module.py", line 462, in call
/usr/bin/ceph: stderr     return self.func(mgr, **kwargs)
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 107, in <lambda>
/usr/bin/ceph: stderr     wrapper_copy = lambda *l_args, **l_kwargs: wrapper(*l_args, **l_kwargs)  # noqa: E731
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 96, in wrapper
/usr/bin/ceph: stderr     return func(*args, **kwargs)
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/orchestrator/module.py", line 356, in _add_host
/usr/bin/ceph: stderr     return self._apply_misc([s], False, Format.plain)
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/orchestrator/module.py", line 1092, in _apply_misc
/usr/bin/ceph: stderr     raise_if_exception(completion)
/usr/bin/ceph: stderr   File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 225, in raise_if_exception
/usr/bin/ceph: stderr     e = pickle.loads(c.serialized_exception)
/usr/bin/ceph: stderr TypeError: __init__() missing 2 required positional arguments: 'hostname' and 'addr'
/usr/bin/ceph: stderr
ERROR: Failed to add host <test>: Failed command: /usr/bin/docker run --rm --ipc=host --stop-signal=SIGTERM --net=host --entrypoint /usr/bin/ceph --init -e CONTAINER_IMAGE=quay.io/ceph/ceph:v17 -e NODE_NAME=test -e CEPH_USE_RANDOM_NONCE=1 -v /var/log/ceph/29dba80c-5146-11ee-a479-1be9fab3deba:/var/log/ceph:z -v /tmp/ceph-tmphvmle3fb:/etc/ceph/ceph.client.admin.keyring:z -v /tmp/ceph-tmph9if039g:/etc/ceph/ceph.conf:z quay.io/ceph/ceph:v17 orch host add test 192.168.1.20

先把ssh端口修改成22,等Ceph安装后再将ssh改回原来的端口号(如2002),同时执行如下命令,将端口号加入ssh_config中:

# ceph cephadm get-ssh-config > ssh_config
# vi ssh_config
Host *User rootStrictHostKeyChecking noPort                  2002UserKnownHostsFile /dev/nullConnectTimeout=30# ceph cephadm set-ssh-config -i ssh_config
# ceph health detail

参考如下文章解决:
cephadm bootstrap fails with custom ssh port
来自 https://tracker.ceph.com/issues/48158

2、忘记初始密码

#创建密码文件
cat >/opt/secretkey<<EOF 
123123
EOFceph dashboard ac-user-set-password admin -i secretkey --force-password

参考 https://i4t.com/6075.html

3、重启systemctl restart ceph.target后报错

monclient(hunting): authenticate timed out after 300

systemctl --all | grep mon

发现:

ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service   loaded    failed   failed    Ceph mon.test for def7078a-56ce-11ee-a479-1be9f

继续查询日志

journalctl -xeu ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service

发现

error: monitor data filesystem reached concerning levels of available storage space (available: 3% 7.9 GiB

清理磁盘空间后

systemctl reset-failed  ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service
systemctl status ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service
journalctl -xeu ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service
systemctl restart  ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service
systemctl status ceph-def7078a-56ce-11ee-a479-1be9fab3deba@mon.test.service
ceph -s

参考https://lists.ceph.io/hyperkitty/list/ceph-users@ceph.io/thread/4EJN52JDTGI4D2PSQYHJEK5PZ5RQWM2H/
更进一步,可以将阈值从默认的5%改到3%

ceph config set mon mon_data_avail_crit 3
ceph config show mon.test mon_data_avail_crit

上面命令中的mon.test要根据实际情况修改

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

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

相关文章

中断机制-中断协商机制、中断方法

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: 4.1.2 什么是中断机制 首先&#xff0c;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止&#xff0c;自己来决定自己的命运&#xff0c;所以&#xff0c;…

#力扣:125. 验证回文串@FDDLC

125. 验证回文串 一、Java class Solution {public boolean isPalindrome(String s) {for (int l 0, r s.length() - 1; l < r; l, r--) {while (l < r && !Character.isLetterOrDigit(s.charAt(l))) l;while (l < r && !Character.isLetterOrDig…

项目管理工具的功能与帮助一览

项目管理的概念并不新鲜&#xff0c;但是伴随着技术解决方案的出现&#xff0c;项目管理工具帮助企业建立规范科学的管理流程&#xff0c;为企业的管理工作提供助力。 Zoho Projects 是一款适合全行业的标准化项目管理工具&#xff0c;它提供了重要的功能&#xff0c;如任务列…

1488. 避免洪水泛滥

你的国家有无数个湖泊&#xff0c;所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的&#xff0c;那么它就会装满水。如果第 n 个湖泊下雨前是 满的 &#xff0c;这个湖泊会发生 洪水 。你的目标是避免任意一个湖泊发生洪水。 给你一个整数数组 rains &#xff0c;其中&…

JS标准库

学习一门编程语言不仅是掌握其语法。同等重要的是学习其标准库&#xff0c;从而熟练掌握语言本身提供的所有工具。 1 定型数组 js常规数组与C和Java等较低级语言的数组类型还是有很大区别。ES6新增了定型数组&#xff0c;与这些语言的低级数组非常接近。 定型数组严格来说并…

1.11.C++项目:仿muduo库实现并发服务器之LoopThread的设计

文章目录 一、LoopThread模块二、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 三、代码 一、LoopThread模块 目标&#xff1a;将eventloop模块和线程整合起来&#xff01; eventloop 和 线程是一一对应的&#…

ruoyi 若依 前端vue npm install 运行vue前端

1. 安装jdk ​​​​​​​https://blog.csdn.net/torpidcat/article/details/90549551 2. nginx 3. mysql 4. redis 首次导入&#xff0c;需要先执行 npm install #进入到前端模块目录下 cd ruoyi-ui # 安装 npm install 启动后端项目 运行前端项目&#xff1a;运行成功…

时序数据库InfluxDB了解

参考&#xff1a;https://blog.csdn.net/u014265785/article/details/126951221

【Pytorch】深度学习之优化器

文章目录 Pytorch提供的优化器所有优化器的基类Optimizer 实际操作实验参考资料 优化器 根据网络反向传播的梯度信息来更新网络的参数&#xff0c;以起到降低loss函数计算值&#xff0c;使得模型输出更加接近真实标签的工具 学习目标 Pytorch提供的优化器 优化器的库torch.opt…

JVM:虚拟机类加载机制

JVM:虚拟机类加载机制 什么是JVM的类加载 众所周知&#xff0c;Java是面向对象编程的一门语言&#xff0c;每一个对象都是一个类的实例。所谓类加载&#xff0c;就是JVM虚拟机把描述类的数据从class文件加载到内存&#xff0c;并对数据进行校验&#xff0c;转换解析和初始化&a…

【yolov5】改进系列——特征图可视化(V7.0 的一个小bug)

文章目录 前言一、特征图可视化1.1 V7.0的小bug 二、可视化指定层三、合并通道可视化总结 前言 对于特征图可视化感兴趣可以参考我的另一篇记录&#xff1a;六行代码实现&#xff1a;特征图提取与特征图可视化&#xff0c;可以实现分类网络的特征图可视化 最近忙论文&#xf…

使用JAVA发送邮件

这里用java代码编写发送邮件我采用jar包&#xff0c;需要先点击这里下载三个jar包&#xff1a;这三个包分别为&#xff1a;additionnal.jar&#xff1b;activation.jar&#xff1b;mail.jar。这三个包缺一不可&#xff0c;如果少添加或未添加均会报下面这个错误&#xff1a; C…

School‘s Java test

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;第四周素数和念整数 &#…

导入Maven项目遇到的一些问题及解决

开发工具是IDEA&#xff0c; 一个Maven项目初次导入IDEA中&#xff0c;需要注意的几件事&#xff1a; 设置项目的编码格式&#xff08;或者提前设置全局的编码格式&#xff09;&#xff0c;一般是UTF-8&#xff1b;检查JDK版本和编译级别&#xff1b;检查Maven的版本&#xf…

公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用

当企业需要进行大数据可视化看板的设计和开发时&#xff0c;除了Excel&#xff0c;还有许多其他强大且适合大数据可视化的软件工具。以下是几种常用的好用软件&#xff0c;以及它们的特点和优势&#xff0c;供您参考。 一、Datainside 特点和优势&#xff1a; - **易于使用**…

【Java】Math 类

java.lang.Math&#xff08;类&#xff09;&#xff1a;Math包含执行基本数字运算的方法。它不能创建对象&#xff0c;它的构造方法被"私有"了。因为它内部都是“静态方法”&#xff0c;通过“类名”直接调用即可。 方法名称说明public static int abs(E e)返回绝对值…

爬虫feaplat平台-搭建

流程说明&#xff1a; 安装docker 启动docker-swarm 安装docker-compose 下载feaplat源代码 docker-compose启动 step1&#xff1a;安装指定版本的docker 如果之前有安装过docker&#xff0c;需要先删除原有的docker sudo yum remove docker \docker-client \docker-client-l…

C++类总结

参考&#xff1a; C中的private, public, protected_c private-CSDN博客https://www.cnblogs.com/corineru/p/11001242.html C 中 Private、Public 和 Protected 的区别 Private Public Protected 声明为private类成员只能由基类内部的函数访问。 可以从任何地方访问声明…

# Web server failed to start. Port 9793 was already in use

Web server failed to start. Port 9793 was already in use. 文章目录 Web server failed to start. Port 9793 was already in use.报错描述报错原因解决方法Spring Boot 修改默认端口号关闭占用某一端口号的进程关闭该进程 报错描述 Springboot项目启动控制台报错 Error st…

使用Plotly可视化

显示项目受欢迎程度 改进图表 设置颜色&#xff0c;字体