Ceph存储

news2025/1/10 16:36:12

数据存储类型

块存储

存储设备与客户端主机是 一对一 的关系,块存储设备只能被一个主机挂载使用,数据以块为单位进行存储的,典型代表:硬盘

文件存储

一对多,能被多个主机同时挂载/传输使用,数据以文件的形式存储的,其中文件的元信息和实际数据是分开存储的,并且有目录的层级关系,典型代表:NFS、FTP

对象存储

一对多,能被多个主机/应用程序通过API接口访问使用,数据以文件的形式存储的,一个文件即是一个对象(object),文件的元信息和实际数据是在一起的。

文件是扁平化方式存储的,没有目录的层级关系,典型代表:OSS(阿里云)  S3(AWS)

Ceph 开源的分布式存储系统,具有高性能、高可扩展性、高可用性等特点,还集块存储、文件存储、对象存储功能于一身。

单机存储设备

DAS(直接附加存储,是直接接到计算机的主板总线上去的存储)

IDE、SATA、SCSI、SAS、USB 接口的磁盘
所谓接口就是一种存储设备驱动下的磁盘设备,提供块级别的存储

NAS(网络附加存储,是通过网络附加到当前主机文件系统之上的存储)

NFS、CIFS、FTP文件系统级别的存储,本身就是一个做好的文件系统,通过nfs接口在用户空间输出后,客户端基于内核模块与远程主机进行网络通信,把它转为好像本地文件系统一样来使用,这种存储服务是没办法对它再一次格式化创建文件系统块的

SAN(存储区域网络)

SCSI协议(只是用来传输数据的存取操作,物理层使用SCSI线缆来传输)、FCSAN(物理层使用光纤来传输)、iSCSI(物理层使用以太网来传输)
也是一种网络存储,但不同之处在于SAN提供给客户端主机使用的接口是块级别的存储

什么是Ceph

Ceph使用C++语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展性、高性能、高可靠性的优点。

Ceph的优势

高扩展性

去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB级的扩展。

高可靠性

没有单点故障,多数据副本,自动管理,自动修复。

高性能

摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。

功能强大

Ceph是个大一统的存储系统,集块存储接口(RBD)、文件存储接口(CephFS)、对象存储接口(RadosGW)于一身,因而适用于不同的应用场景。

Ceph架构

客户端 (主机/虚拟机/容器/应用程序)

使用Ceph进行数据读写的客户终端

LibRADOS对象访问接口

提供存储访问接口给客户端使用。Ceph默认提供三个接口:RBD块存储接口、RGW对象存储接口、CephFS文件存储接口。还支持用户使用JAVA/Python/C/PHP等编程语言二次开发自定义访问接口

RADOS基础存储系统 (统一存储池)

提供存储能力的。Ceph中一切都是以对象(object)形象存储的,RADOS就是负责存储这些对象的,并保证数据的一致性和可靠性。

Ceph组件

OSD(ceph-osd)

负责存储数据,一般一个磁盘对应一个OSD,响应客户端的读写请求

Monitor(ceph-mon)

负责保存OSD的元数据,维护Ceph集群状态的各种映射视图(监控全局状态),管理客户端的认证与授权

Manager(ceph-mgr)

负责跟踪Ceph集群状态和监控指标,暴露接口给监控软件获取监控指标数据

MDS(ceph-mds)

负责保存CephFS文件存储系统的元数据,管理目录结构,仅在使用CephFS文件存储接口功能的时候使用

PG

归置组,可理解成保存OSD位置的索引,一个PG可以包含多个数据对象(object),一个数据对象(object)只能属于一个PG

Pool

数据池/资源池/存储池,可理解成一个存放PG的命名空间,一个Pool可以多个PG,不同Pool的PG可以同名


OSD的存储引擎

FileStore

是L(12.X)以前版本的唯一可选的OSD存储引擎,将数据对象(object)存储为文件系统中的文件,性能上存在许多不足

BlueStore

是L(12.X)版本及以后版本默认的OSD存储引擎,将数据对象(object)直接存储在块设备上,具有更好的数据读写性能和可靠性


Ceph的存储过程

  1. 文件默认会被按照4M大小进行分片成一个或者多个数据对象(object)
  2. 每个数据对象(object)都有一个oid(由文件ID(ino)和分片编号(non组成),通过对oid使用hash算法得到一个16进制的特征码,再除以Pool的PG总数取余,得到数据对象(object)的pgid(由Pool_id+pgid组成)
  3. 通过对pgid使用CRUSH算法得到PG对应的OSD的ID(如果是多副本,则是主从的OSD的ID)
  4. 将数据对象(object)的数据存储到对应的OSD上

部署Ceph集群

基于 ceph-deploy 部署

环境规划
主机名

Public网络

Cluster网络角色
admin192.168.64.10admin(管理节点)、client
node01192.168.64.20 192.168.100.11mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node02192.168.64.30 192.168.100.12mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node03192.168.64.40 192.168.100.13mon、osd(/dev/sdb、/dev/sdc、/dev/sdd)
client192.168.64.50client

环境准备

根据规划设置主机名

hostnamectl set-hostname admin
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname client

配置 hosts 解析

cat >> /etc/hosts << EOF
192.168.64.10 admin
192.168.64.20 node01
192.168.64.30 node02
192.168.64.40 node03
192.168.64.50 client
EOF

安装常用软件和依赖包

yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass

在 admin 管理节点配置 ssh 免密登录所有节点

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node03

配置时间同步

systemctl enable --now chronyd
timedatectl set-ntp true                    #开启 NTP
timedatectl set-timezone Asia/Shanghai        #设置时区
chronyc -a makestep                            #强制同步下系统时钟
timedatectl status                            #查看时间同步状态
chronyc sources -v                            #查看 ntp 源服务器信息
timedatectl set-local-rtc 0                    #将当前的UTC时间写入硬件时钟

重启依赖于系统时间的服务

​​​​​​​systemctl restart rsyslog 
systemctl restart crond

关闭无关服务

​​​​​​​systemctl disable --now postfix

配置 Ceph yum源

wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate

rpm -ivh ceph-release-1-1.el7.noarch.rpm --force

部署 Ceph 集群

为所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行

mkdir -p /etc/ceph

安装 ceph-deploy 部署工具

cd /etc/ceph
yum install -y ceph-deploy

ceph-deploy --version

在管理节点为其它节点安装 Ceph 软件包

cd /etc/ceph
ceph-deploy install --release nautilus node0{1..3} admin

#ceph-deploy 2.0.1 默认部署的是 mimic 版的 Ceph,若想安装其他版本的 Ceph,可以用 --release 手动指定版本

生成初始配置

cd /etc/ceph
ceph-deploy new --public-network 192.168.64.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03

#在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点

ceph-deploy --overwrite-conf mon create-initial		

#配置初始化 mon 节点,并向所有节点同步配置

在 mon 节点上查看自动开启的 mon 进程

ps aux | grep ceph

在管理节点查看 Ceph 集群状态

cd /etc/ceph
ceph -s

查看 mon 集群选举的情况

ceph quorum_status --format json-pretty | grep leader

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

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

相关文章

新年学新语言Go之四

一、前言 任何编程语言都有类型系统&#xff0c;类型系统解决了数据的存取问题&#xff0c;它决定了使用这个类型需要开辟内存空间大小以及数据是如何存放的&#xff0c;也解决如何读出数据&#xff0c;因为在内存中相同二进制值不同类型的含义是不一样的&#xff0c;关于Go基…

单链表的相关操作(初阶)

链表的概念 链表是线性表的一种&#xff0c;它是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻 辑顺序是通过链表中的指针链接次序实现的 。其实链表就相当于一列火车&#xff1a; 链表的结构跟⽕⻋⻋厢相似&#xff0c;淡季⻋厢会相应减少&#xff0c…

再添合作 | 大势智慧与长沙市规划信息服务中心签订战略合作协议

10月18日&#xff0c;武汉大势智慧科技有限公司&#xff08;以下简称&#xff1a;大势智慧&#xff09;与长沙市规划信息服务中心&#xff08;以下简称&#xff09;战略合作签约仪式在长沙举行。大势智慧CTO张帆与长沙市规划信息服务中心生产经营总监杨凤京代表双方签署战略合作…

如何处理前端无障碍(Accessibility)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

酷开会员值得回味的经典老剧还记得吗?酷开系统家庭影院带你重温

那些年&#xff0c;大家的娱乐生活主要集中在那一台9寸的黑白电视机中&#xff1b;那些年&#xff0c;家家户户的孩子们晚上都会聚到电视机前欢声笑语&#xff1b;那些年&#xff0c;是诸多经典的电视剧陪伴了很多人的闲暇时光……那些年陪伴我们成长&#xff0c;在记忆中熠熠生…

向量数据库Transwarp Hippo1.1多个新特性升级,帮助用户实现降本增效

例如,当查询“A公司业务发展情况”时,通过向量检索可以检索出A公司“主要业务”、“经营模式”、“财务情况”、“市场地位”等信息,通过全文检索可以检索出知识库中和关键字“业务”、“发展”相关的结果作为补充,通过将两者检索的结果进行结合,可以使得大模型回答的结果…

nexus私服安装

1.将文件上传到linux服务器中 2.解压、重命名 tar -zxvf nexus-3.7.1-02-unix.tar.gz //解压 mv nexus-3.7.1-02 nexus //重命名 3.自定义配置虚拟机可打开 nexus.vmoptions 文件进行配置 如果Linux硬件配置比较低的话&#xff0c;建议修改为合适的大小&…

前端(十九)——vue/react脚手架的搭建方式

&#x1f604;博主&#xff1a;小猫娃来啦 &#x1f604;文章核心&#xff1a;前端&#xff08;十九&#xff09;——vue/react脚手架的搭建方式 文章目录 前言Vue脚手架搭建方法Vue CLI脚手架Vite脚手架其他方式 React脚手架搭建方法Create React App脚手架Vite脚手架其他方式…

element 日期选择器禁止选择指定日期前后时间

画圈重点&#xff1a;disabledDate的写法要用箭头函数&#xff0c;不能用普通函数写法&#xff0c;否则this指向就错了&#xff0c;会报 undefined <el-date-picker v-model"time" type"date" value-format"yyyy-MM-dd" :…

使用CPR库和Python编写程序

以下是一个使用CPR库和Python编写的爬虫程序&#xff0c;用于爬取。此程序使用了proxy的代码。 import requests from cpr import CPR ​ def get_proxy():url "https://www.duoip.cn/get_proxy"headers {"User-Agent": "Mozilla/5.0 (Windows NT …

C++标准模板(STL)- 类型支持 (数值极限,min,lowest,max)

数值极限 提供查询所有基础数值类型的性质的接口 定义于头文件 <limits> template< class T > class numeric_limits; numeric_limits 类模板提供查询各种算术类型属性的标准化方式&#xff08;例如 int 类型的最大可能值是 std::numeric_limits<int>::ma…

01、MySQL-------性能优化

目录 一、影响性能的相关因素存储过程&#xff1a; 二、sql优化1>、Mysql系统架构2>、引擎区别&#xff1a; 3>、索引1、什么是索引&#xff1f;联合主键索引理解&#xff1a;索引长度理解&#xff1a;什么是慢查询&#xff1f; 1&#xff09;、索引理解2&#xff09;…

Win系统VMware虚拟机安装配置(一)(附激活码安装包)

VMware软件包&#xff08;Mac和Win&#xff09;提取码:hzxyhttps://www.123pan.com/s/JRpSVv-vKnjv.html 一、VMware 安装 一台电脑本身是可以装多个操作系统的&#xff0c;但是做不到多个操作系统切换自如&#xff0c;所以我们 需要一款软件帮助我们达到这个目的&#xff0c…

MIKE水动力笔记16_MIKE中的u、v、Speed、Direction之间的关系

本文目录 前言Step 1 MIKE中u、v、Speed、Direction的界定Step 2 从MIKE中导出u、v、Speed、Direction数据Step 3 数据导入Excel验证 前言 这两天饶有兴趣的做了一下关于MIKE中u、v、Speed、Direction之间关系的小测试&#xff0c;其实主要是为了探究利用u、v得到的角度和Dire…

下笔如有神:用VS Code写markdown

文章目录 Markdown All in One快捷键指令 输出PDFMarkdown Preview Enhancedmarkdown基本语法 Markdown All in One VS Coode中最推荐的Markdown插件是Markdown All in One&#xff0c;下文简称为mdAIO。千万别搜完markdown后下一个叫Markdown的插件&#xff0c;这个插件的名字…

Axi_Lite接口的IP核与地址与缓冲与AxiGP0

AXI Interconnect互连内核将一个或多个 AXI 内存映射主设备连接到一个或多个内存映射从设备。 AXI_GP 接口 AXI_GP 接口是直接连接主机互联和从机互联的端口的。 AXI_HP 接口具有一个 1kB 的数据 FIFO 来做缓冲 [4]&#xff0c;但是 AXI_GP 接口与它不同&#xff0c;没…

相同的树[简单]

一、题目 给你两棵二叉树的根节点p和q&#xff0c;编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true 示例…

Linux常用命令——col命令

在线Linux命令查询工具 col 过滤控制字符 补充说明 col命令是一个标准输入文本过滤器&#xff0c;它从标注输入设备读取文本内容&#xff0c;并把内容显示到标注输出设备。在许多UNIX说明文件里&#xff0c;都有RLF控制字符。当我们运用shell特殊字符>和>>&#x…

基于SSM的工资管理系统

基于SSM的工资管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 管理员界面 通知公告 考勤管理 工资管理 请假管理 摘要 基于SSM&#xff08;Spring、S…

EDID详解

文章目录 字节含义一些概念YCC位 文章目录 字节含义一些概念YCC位 字节含义 EDID通常由128个字节组成&#xff0c;这些字节提供了关于显示器的各种详细信息。以下是EDID中每个字节位表示的一般含义&#xff1a; Header&#xff08;头部&#xff09;: 字节0: Header&#xff…