Ceph 分布式文件系统 搭建及使用

一、Ceph 介绍

在当今数据爆炸式增长的时代,企业对于可靠、可扩展的存储解决方案的需求日益迫切。Ceph 作为一种开源的、可伸缩的分布式存储解决方案,正逐渐成为企业级存储领域的热门选择。Ceph是一种由Radicalbit公司开发的开源分布式存储系统,它通过将数据分布在一个或多个存储节点上,实现了高可靠性、高性能和高扩展性。

Ceph环境的核心组件包括:Ceph OSDCeph MonitorCeph MDSCEPH MGR

  • Ceph OSDs (Object Storage Daemons):OSDCeph集群中负责存储实际数据的守护进程。每个OSD守护进程负责管理一个存储设备(如硬盘或分区)。OSD负责处理数据复制、恢复、再平衡和数据的分发。在Ceph集群中,通常会有大量的OSD,它们分布在不同的服务器上,以确保高可用性和数据冗余。

  • Ceph Monitors (MONs):Monitor维护集群的状态信息,包括映射信息(如数据在哪些OSD上)、OSD状态、归置组(Placement Group, PG)状态等。Monitor负责在发生故障时,确保集群能够自动恢复。为了高可用性,通常会有多个Monitor实例,它们之间通过Paxos算法保持状态一致。

  • Ceph Metadata Server (MDS):MDS仅用于Ceph文件系统(CephFS)。它负责存储文件系统的元数据,如目录树、文件权限等信息。MDS能够提高文件系统的性能和可扩展性。在CephFS集群中,可以有一个或多个MDS实例,以支持大规模的并行文件系统访问。

  • Ceph Manager (MGR):Manager是一个相对较新的组件,它在Ceph Luminous版本(即12.0版本)中首次被引入。Manager提供了一个集中的服务,用于管理和监控Ceph集群的各个方面。它收集和存储集群的监控数据,提供报警和通知,管理服务,执行集群管理任务,生成集群报告,并提供一个REST API

Ceph支持多种存储类型,以满足不同应用场景的需求。主要包括:对象存储、块存储、文件系统存储

  • 对象存储Ceph提供了一个名为RADOSGWRADOS Gateway)的组件,它实现了符合Amazon S3Swift API的接口,允许用户通过HTTP/HTTPS协议存储和检索对象数据。对象存储适合于需要高可用性和可扩展性的应用,如备份、归档和多媒体内容分发。
  • 块存储Ceph的块存储服务称为RBDRADOS Block Device),它提供了一个高性能、可扩展的块存储解决方案。RBD可以在物理服务器或虚拟机中作为磁盘使用,支持快照、克隆和 thin-provisioning 等功能。块存储适用于需要持久化存储的应用,如虚拟机镜像和数据库。
  • 文件系统存储Ceph提供了一个名为CephFSPOSIX-compliant文件系统。CephFS允许用户将Ceph集群作为传统的网络文件系统挂载到服务器上,支持文件层次结构和权限管理。文件系统存储适用于需要共享文件存储的应用,如企业文件共享和协同工作环境。

在这里插入图片描述

下面开始在 3 台机器上,实验搭建 ceph 环境。

二、Ceph 集群环境搭建

部署规划:

ip别名角色
11.0.1.133node1osd、mds、mon、mgr、ceph-deploy
11.0.1.134node2osd、mds
11.0.1.135node3osd、mds

1. 修改 /etc/hosts 增加映射(3台机器)

vi /etc/hosts
11.0.1.133   node1
11.0.1.134   node2
11.0.1.135   node3

2. 关闭防火墙(3台机器)

 #关闭防火墙
systemctl stop firewalld.service  
#禁止防火墙开启自启
systemctl disable firewalld.service 

3. 配置ssh免密登录(node1)

#4个回车 生成公钥、私钥
ssh-keygen 
# 将公钥给三台主机
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

4. 集群时间同步(3台机器)

yum -y install ntpdate
ntpdate ntp4.aliyun.com

5. 添加 Ceph 阿里源(3台机器)

vi /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
priority=1[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=0
priority=1[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=0
priority=1

清除 yum 缓存

yum clean all

6. 安装 ceph-deploy 组件(node1)

yum -y install ceph-deploy

7. 初始化 ceph 集群信息(node1)

安装所需依赖:

yum install -y python-setuptools

创建配置目录

mkdir /etc/ceph	&& cd /etc/ceph

初始化

ceph-deploy new node1

在这里插入图片描述
修改 ceph.conf ,默认 osd 最少3个节点,这里可以改成2个,在 [global] 下新增如下配置:

osd_pool_default_size = 2

8. 在所有节点安装 ceph(node1)

该操作会自动使用 ssh 连接,需要确保配置好了免密登录。

ceph-deploy install node1 node2 node3

在这里插入图片描述

验证安装,查看 ceph 版本

ceph -v

在这里插入图片描述

9. 创建 mon 监控节点(node1)

ceph-deploy mon create-initial

在这里插入图片描述

将配置文件信息同步到所有节点

ceph-deploy admin node1 node2 node3

在这里插入图片描述

查看集群状态:

ceph -s

在这里插入图片描述
已经有一个 mon 了。

11. 部署 mgr(node1)

ceph-deploy mgr create node1

在这里插入图片描述
查看集群状态:

ceph -s

在这里插入图片描述

10. 部署osd服务(node1)

查看磁盘:

lsblk  

在这里插入图片描述
我这里使用未挂载的 /dev/sdb 磁盘

创建 osd

ceph-deploy osd create node1 --data /dev/sdb

在这里插入图片描述

再次查看磁盘:

在这里插入图片描述
已经被 ceph 使用。

同样,将 node2、node3 的磁盘创建 osd :

ceph-deploy osd create node2 --data /dev/sdb
ceph-deploy osd create node3 --data /dev/sdb

查看集群状态:

ceph -s

在这里插入图片描述

11. 部署 mds (node1)

ceph-deploy mds create node1 node2 node3

在这里插入图片描述

到此 Ceph 的集群就基本搭建完毕。

三、CephFS 创建 及 客户端挂载

1. 创建存储池

创建数据池 cephfs_data ,用户存储数据

ceph osd pool create cephfs_data 128

在这里插入图片描述

创建 cephfs_metadata ,用于存储元数据:

ceph osd pool create ceph_metadata 60

在这里插入图片描述

2. 创建 FS

ceph fs new cephfs cephfs_data ceph_metadata 

在这里插入图片描述

查看集群状态:

ceph -s

在这里插入图片描述

3 客户端挂载

首先在 node1 查看客户端的秘钥:

cat ceph.client.admin.keyring

在这里插入图片描述

下面在客户端安装依赖

yum -y install epel-release
yum -y install ceph-fuse
yum -y  install ceph-common

创建配置目录:

mkdir /etc/ceph && cd /etc/ceph

将上面查出来的 key 写入 admin.key 文件中:

echo 'AQDRNR5mkX0LCBAArZ4TgYuB19g1EfXK+aiktg==' >>admin.key

创建挂载目录:

mkdir /cephfs_data

挂载:

mount -t ceph node1:6789:/ /cephfs_data -o name=admin,secretfile=/etc/ceph/admin.key

在这里插入图片描述
查看挂载:

df -hT

在这里插入图片描述

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

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

相关文章

ElasticSearch虚拟机安装(单机版)

1.下载7.10.2 下载链接,选择LINUX X86_64下载 2.创建用户 useradd es也可以使用系统默认用户(非root),root用户会报错 3.解压 tar xvf elasticsearch-7.10.2-linux-x86_64.tar.gz假定目录在/home/es/elasticsearch-7.10.2-linux-x86_64 …

Spring Boot | Spring Boot 默认 “缓存管理“ 、Spring Boot “缓存注解“ 介绍

目录: 一、Spring Boot 默认 "缓存" 管理 :1.1 基础环境搭建① 准备数据② 创建项目③ 编写 "数据库表" 对应的 "实体类"④ 编写 "操作数据库" 的 Repository接口文件⑤ 编写 "业务操作列" Service文件⑥ 编写 "applic…

JavaCard学习笔记: CAP Component 之 Class Component

文章目录 整体结构tag和size字段signature_pool_length和signature_pooltype_descriptor结构导入类型编码导入项签名示例导入类导入数组导入远程方法 interfaces[]interface_info结构flagsinteface_countsuperinterfacesinterface_name class_info_compact classes[]结构flagsi…

基于Springboot的网上商城购物系统

基于SpringbootVue的网上商城购物系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 商品信息 商品资讯 后台登录页面 后台管理首页 用户管理 商品分类管…

记录一个hive中跑insert语句说没创建spark客户端的问题

【背景说明】 我目前搭建离线数仓,并将hive的执行引擎改成了Spark,在将ods层的数据装载到dim层,执行insert语句时报如下错误 【报错】 [42000][40000] Error while compiling statement: FAILED: SemanticException Failed to get a spark…

星链全解1

星链基本信息 星链卫星的寿命约为5年,最终目标是发射42000颗卫星。最初,每颗卫星重约260公斤,与1吨以上的大卫星相比属于“小卫星”。现在,向V2版进化的星链卫星重量近800公斤,约为老一代卫星的3倍。 点击“星链地图…

【Entity Framework】聊一聊EF如何使用数据库函数

【Entity Framework】聊一聊EF如何使用数据库函数 文章目录 【Entity Framework】聊一聊EF如何使用数据库函数一、数据库函数的类型二、内置函数与用户定义的函数四、聚合函数、标量函数和表值函数五、Niladic函数六、EF Core 中的数据库函数映射6.1 内置函数映射6.2 EF.Functi…

Redis入门到通关之数据结构解析-QuickList

文章目录 ☃️前提概要☃️ 配置项相关☃️简要源码☃️总结 Redis中的 QuickList 是一种特殊的数据结构,用于存储列表类型的数据。它的设计目的是在内存中高效地存储和操作大量的列表元素,尤其是当列表长度很大时。 QuickList的内部结构是一个由多个节…

ARM与单片机有啥区别?

初学者必知:ARM与单片机到底有啥区别?1、软件方面这应该是最大的区别了。引入了操作系统。为什么引入操作系统?有什么好处嘛? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「ARM的资料从专业入门到高级教…

【Linux驱动层】iTOP-RK3568学习之路(二):vscode中设置头文件路径-完成代码自动补全

在Ubuntu下用vscode写Linux驱动层的时候&#xff0c;需要添加头文件&#xff1a; #include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h>但vscode没有智能提示&#xff0c;因此需要我们手动添加自己的头文件路径&#xff1a; topeetu…

嵌入式Linux开发实操(十七):Linux Media Infrastructure userspace API

视频和无线电流媒体设备使用的Linux内核到用户空间API,包括摄像机、模拟和数字电视接收卡、AM/FM接收卡、软件定义无线电(SDR)、流捕获和输出设备、编解码器设备和遥控器。典型的媒体设备硬件如下: 媒体基础设施API就是用于控制此类设备的,分五个部分。 第一部分V4L2 API…

AI安全之问:我们的智能助手真的安全吗?

在我们日益依赖人工智能来撰写文档、编写程序代码、甚至创作艺术作品的今天&#xff0c;我们是否曾经想过这些智能系统可能面临的被恶意操纵的风险&#xff1f; 分享几个网站 GPT-3.5研究测试&#xff1a; https://hujiaoai.cn GPT-4研究测试&#xff1a; https://higpt4.cn…

MKS 质量MFC流量控制器原理及应用课件PPT

MKS 质量MFC流量控制器原理及应用课件PPT

Git | Git基本命令

Git | Git基本操作 文章目录 Git | Git基本操作一、创建Git本地仓库1、创建Git仓库2、配置Git3、理解工作区、暂存区、版本库关系 二、添加、修改与查看添加文件查看历史提交记录 修改文件查看.git文件 三、版本回退版本回退撤销修改尚未add已add但还未commit已add并commit 删除…

安信可 ESP_01SWIFI模块的使用 (电脑通过usb转tll模块连接wifi模块进行调试)

一&#xff1a;需要用到的模块 &#xff08;1&#xff09;安信可的ESP_01wifi模块 ESP-01是深圳安信可科技基于ESP8266芯片开发的串口wifi模块&#xff0c;模组集成了透传功能&#xff0c;即买即用&#xff0c;支持串口指令集&#xff0c;用户通过串口即可实现网络访问…

List的介绍

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x1…

如何在本地创建一个新的Git仓库?

文章目录 **步骤一&#xff1a;开启项目之旅****步骤二&#xff1a;启动Git引擎****步骤三&#xff1a;验证仓库初始化情况****步骤四&#xff1a;填充项目内容****步骤五&#xff1a;保存更改——初次提交****&#xff08;可选步骤六&#xff1a;关联远程仓库并推送&#xff0…

双向链表-(增删减改)

声明 单链表&#xff08;增删减改&#xff09;单链表实现通讯录项目链表的专用题型-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137722729 双链表和单链表就是异曲同工 链表的分类 这里我们主要讲解的是不带头的单向不循环链表&#xff0c;在题型解析里面…

将Python机器学习模型集成到C++ Qt客户端应用程序中|Qt调用python详解

0、前言 有几个不同的选项可以将你的Python机器学习模型集成到你的C Qt客户端应用程序中。以下是一些可能的解决方案&#xff1a; 创建API&#xff1a; 将你的机器学习模型部署为一个API服务。你可以使用像Flask这样的轻量级Web框架来创建一个简单的HTTP服务。这样&#xff0…

JAVA高阶私房菜:JVM虚拟机核心概念及参数微调实验

目录 基础快速掌握 什么是JVM虚拟机 JVM的的实现 操作系统-虚拟机-JRE-JDK的关系 生产环境部署JDK还是JRE JVM内存组成部分和堆空间分布 内存组成 堆空间内存分布 内存分布 堆空间分配 JVM堆空间垃圾回收流程及JVM参数 垃圾回收流程 JVM参数分类 JVM参数格式分类 …