Openstack云计算(五)ceph

news2025/1/8 3:07:34
  • Ceph简介:

Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。ceph]的统一体现在可以提供文件系统、块存储和对象存储,分布式体现在可以动态扩展。在国内一些公司的云环境中,通常会采用ceph作为openstack的唯一后端存储来提高数据转发效率。

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表) ,并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

官网:https://ceph.com/

官方文档:Welcome to Ceph — Ceph Documentation

  • Ceph特点:

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

b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。

c.能够支持上千个存储节点的规模,支持TB到PB级的数据。

高可用性:

  1. 副本数可以灵活控制。
  2. 支持故障域分隔,数据强一致性。
  3. 多种故障场景自动进行修复自愈。
  4. 没有单点故障,自动管理。

高可扩展性:

  1. 去中心化。
  2. 扩展灵活。
  3. 随着节点增加而线性增长。

特性丰富:

  1. 支持三种存储接口:块存储、文件存储、对象存储。
  2. 支持自定义接口,支持多种语言驱动。
  • Ceph应用场景:

Ceph可以提供对象存储、块设备存储和文件系统服务,其对象存储可以对接网盘(owncloud )应用业务等;其块设备存储可以对接(Iaas) ,当前主流的IaaS运平台软件,如: OpenStack, CloudStack、Zstack, Eucalyptus等以及kvm等。

Ceph是一个高性能、可扩容的分布式存储系统,它提供三大功能:

对象存储(RADOSGW) :提供RESTful接口,也提供多种编程语言绑定。兼容S3、 Swift ;

块存储(RDB):由RBD提供,可以直接作为磁盘挂载,内置了容灾机制;

文件系统(CephFS) :提供POSIX兼容的网络文件系统CephFS ,专注于高性能、大容量存储;

什么是块存储/对象存储/文件系统存储?

  1. 对象存储:

也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL 和其他扩展,代表主要有 Swift、S3 以及 Gluster等;

  1. 块存储:

这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog, AWS的EBS ,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD (RBD是Ceph面向块存储的接口)。在常见的存储中DAS, SAN提供的也是块存储;

  1. 文件系统存储:

通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS (CephFS是Ceph面向文件存储的接口) ,但是有时候又会把GlusterFS , HDFS这种非POSIX接口的类文件存储接口归入此类。当然 NFS、NAS也是属于文件系统存储;

  • Ceph的核心组件:

  1. Monitors :监视器,维护集群状态的多种映射,同时提供认证和日志记录服务,包括有关monitor节点端到端的信息,其中包括Ceph集群ID ,监控主机名和IP以及端口。并且存储当前版本信息以及最新更改信息,通过"ceph mon dump"查看 monitor map.
  2. MDS (Metadata Server) : Ceph元数据,主要保存的是Ceph文件系统的元数据。注意: ceph的块存储和ceph对象存储都不需要MDS。
  3. OSD :即对象存储守护程序,但是它并非针对对象存储。是物理磁盘驱动器,将数据以对象的形式存储到集群中的每个节点的物理磁盘上。OSD负责存储数据、处理数据复制、恢复、回(Backfilling)、再平衡。完成存储数据的工作绝大多数是由OSD daemon进程实现。在构建Ceph OSD的时候,建议采用SSD磁盘以及xfs文件系统来格式化分区。此外OSD还对其它OSD进行心跳检测,检测结果汇报给Monitor
  4. RADOS : Reliable Autonomic Distributed Object Store. RADOS是ceph存储集群的基础。在ceph中,所有数据都以对象的形式存储,并且无论什么数据类型, RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。
  5. librados : librados库,为应用程度提供访问接口。同时也为块存储、对象存储、文件系统提供原生的接口。
  6. RADOSGW :网关接口,提供对象存储服务。它使用librgw和librados来实现允许应用程序与Ceph对象存储建立连接。并且提供S3和Swift兼容的RESTful API接口。
  7. RBD:块设备,它能够自动精简配置并可调整大小,而且将数据分散存储在多个OSD上。(8) CephFS : Ceph文件系统,与POSIX兼容的文件系统,基于librados封装原生接口。
  • Ceph 数据存储过程:

无论使用哪种存储方式(对象、块、文件系统),存储的数据都会被切分成Objects。Objects size大小可以由管理员调整,通常为2M或4M。每个对象都会有一个唯一的OID,由ino与ono生成,虽然这些名词看上去很复杂,其实相当简单。

ino :即是文件的File ID ,用于在全局唯一标识每一个文件

ono:则是分片的编号

比如:一个文件FileID为A,它被切成了两个对象,一个对象编号0,另一个编号1,那么这两个文件的oid则为A0与A1。

File--此处的file就是用户需要存储或者访问的文件。对于一个基于Ceph开发的对象存储应用而言,这个file也就对应于应用中的“对象”,也就是用户直接操作的“对象”。

Ojbect--此处的object是RADOS所看到的"对象"。Object与上面提到的file的区别是, object的最大size由RADOS限定(通常为2MB或4MB) ,以便实现底层存储的组织管理。因此,当上层应用向RADOS存入size很大的file时,需要将file切分成统一大小的一系列object (最后一个的大小可以不同)进行存储。为避免混淆,在本文中将尽量避免使用中文的"对象"这一名词,而直接使用file或object进行说明。

PG (Placement Group)--顾名思义,PG的用途是对object的存储进行组织和位置映射。具体而言,一个PG负责组织若干个object (可以为数千个甚至更多) ,但一个object只能被映射到一个PG中,即,PG和object之间是"一对多"映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即,PG和OSD之间是"多对多"映射关系。在实践当中,n至少为2,如果用于生产环境,则至少为3,一个OSD上的PG则可达到数百个。事实上, PG数量的设置牵扯到数据分布的均匀性问题。

OSD--即object storage device ,前文已经详细介绍,此处不再展开。唯一需要说明的是, osD的数量事实上也关系到系统的数据分布均匀性,因此其数量不应太少。在实践当中,至少也应该是数十上百个的量级才有助于Ceph系统的设计发挥其应有的优势。

基于上述定义,便可以对寻址流程进行解释了。具体而言,Ceph中的寻址至少要经历以下三次映射:

  1. File -> object映射
  2. Object-> PG映射, has(oid) & mask -> pgid
  3. (3) PG-> OSD映射,CRUSH算法

CRUSH , Controlled Replication Under Scalable Hashing ,它表示数据存储的分布式选择算法, ceph的高性能/高可用就是采用这种算法实现。CRUSH算法取代了在元数据表中为每个客户端请求进行查找,它通过计算系统中数据应该被写入或读出的位置。CRUSH能够感知基础架构,能够理解基础设施各个部件之间的关系。并CRUSH保存数据的多个副本,这样即使一个故障域的几个组件都出现故障,数据依然可用。CRUSH算是使得ceph实现了自我管理和自我修复。

RADOS 分布式存储相较于传统分布式存储的优势在于:

1,将文件映射到object后,利用Cluster Map通过CRUSH计算而不是查找表方式定位文件数据存储到存储设备的具体位置。优化了传统文件到块的映射和Block MAp的管理。

  1. RADOS充分利用OSD的智能特点,将部分任务授权给OSD,最大程度地实现可扩展
  • 部署准备:
  1. 所有ceph集群节点(包括客户端)设置静态域名解析;
127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4

::1localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.254.163 dlp

172.16.254.64 node1

172.16.254.65 node2

172.16.254.66 node3

172.16.254.63 controller

  1. 所有集群节点(包括客户端)创建cent用户,并设置密码,后执行如下命令:
useradd cent && echo "123" | passwd --stdin cent

echo -e 'Defaults:cent Irequiretty\ncent ALL = (root) NOPASSwD:ALL' I tee /etc/sudoers.d/cephchmod 440 /etc/sudoers.d/ceph

(3)在部署节点切换为cent用户,设置无密钥登陆各节点包括客户端节点

(4)在部署节点切换为cent用户,在cent用户家目录,设置如下文件: vi~/.ssh/config# create new (define all nodesand users)

Host dlp

Hostname dlp

User cent

Host node1

Hostname node1

User cent

Host node2

Hostname node2

User cent

Host node3

Hostname node3

User cent
  1. 查看版本命令和修改权限命令
Cat /etc/redhat-release

chmod 600 ~/.ssh/config

所有节点配置国内ceph源:

  1. all-node (包括客户端)在/etc/yum.repos.d创建 ceph-yunwei.repo
[ceph-yunwei]

name=ceph-yunwei-install

baseurl=https://mirrors.aliyun.com/centos/7.6.1810/storage/x86_64/ceph-jewel/

enable=1

gpgcheck=0

或者也可以将如上内容添加到现有的 CentOS-Base.repo 中。

 

(2)到国内ceph源中https://mirrors.aliyun.com/centos/7.6.1810/storage/x86_64/ceph-jewel/下载如下所需rpm包。注意:红色框中为ceph-deploy的rpm,只需要在部署节点安装,下载需要到ceph-rpm-jewel-el7-noarch安装包下载_开源镜像站-阿里云中找到最新对应的ceph-deploy-xxxxx.noarch.rpm 下载

清理缓存

Yum clean all

加载插件

Yum makecache

3)将下载好的rpm拷贝到所有节点,并安装。注意ceph-deploy-xxxxx.noarch.rpm 只有部署节点用到,其他节点不需要,部署节点也需要安装其余的rpm

 

(4)在部署节点(cent用户下执行):安装 ceph-deploy,在root用户下,进入下载好的rpm包目录,执行:

yum localinstall -y ./*

(或者sudo yum install ceph-deploy)

创建ceph工作目录

mkdir ceph &&  cd ceph

验证是否安装成功 ceph-deploy --version

  1. 在部署节点(cent用户下执行):配置新集群
ceph-deploy new node1 node2 node3

vim /ceph.conf

添加配置内容

mon_clock_drift_allowed = 2

mon_clock_drift_warn_backoff = 3

osd_pool_default_size = 3

(7)在部署节点执行,所有节点安装ceph软件

ceph-deploy install dlp node1 node2 node3

(8)在部署节点初始化集群(cent用户下执行):

ceph-deploy mon create-initial

(12)准备Object Storage Daemon:

ceph-deploy osd prepare node1:/var/lib/ceph/osd node2:/var/lib/ceph/osd node3:/var/lib/ceph/osd

 

(13)激活Object Storage Daemon:

ceph-deploy osd activate node1:/var/lib/ceph/osd node2:/var/lib/ceph/osd node3:/var/lib/ceph/osd

 

(14)在部署节点transfer config files

ceph-deploy admin dlp node1 node2 node3

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

 

(15)在ceph集群中任意节点检测:

ceph -s

 

三、客户端设置:

(1)客户端也要有cent用户:

useradd cent && echo "123" | passwd --stdin cent

echo-e 'Defaults:cent !requiretty\ncent ALL = (root) NOPASSWD:ALL' | tee /etc/sudoers.d/ceph

chmod440 /etc/sudoers.d/ceph

 

在部署节点执行,安装ceph客户端及设置:

ceph-deploy install controller

ceph-deploy admin controller

 

(2)客户端执行

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

 

(3)客户端执行,块设备rdb配置:

创建rbd:rbd create disk01 --size 10G --image-feature layering    
删除:rbd rm disk01列示rbd:rbd ls -l映射rbd的image map:sudo rbd map disk01      
取消映射:sudo rbd unmap disk01
显示map:rbd showmapped
格式化disk01
文件系统xfs:sudo mkfs.xfs /dev/rbd0
挂载硬盘:sudo mount /dev/rbd0 /mnt
验证是否挂着成功:df -hT

 

(4)File System配置:

在部署节点执行,选择一个node来创建MDS:

ceph-deploy mds create node1

 

以下操作在node1上执行:

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

 

在MDS节点node1上创建 cephfs_data 和  cephfs_metadata 的 pool

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128

 

开启pool:

ceph fs new cephfs cephfs_metadata cephfs_data

 

显示ceph fs:

ceph fs lsceph mds stat

 

以下操作在客户端执行,安装ceph-fuse:

yum -y install ceph-fuse

 

获取admin key:

sshcent@node1"sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key

chmod600 admin.key

 

挂载ceph-fs:

mount-t ceph node1:6789:/ /mnt -o name=admin,secretfile=admin.key
df-hT

 

停止ceph-mds服务:

systemctl stop ceph-mds@node1
ceph mds fail 0
ceph fs rm cephfs --yes-i-really-mean-it  
ceph osd lspools
显示结果:0 rbd,1 cephfs_data,2 cephfs_metadata,  
ceph osd pool rm cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it

 

四、删除环境:

ceph-deploy purge dlp node1 node2 node3 controller

ceph-deploy purgedata dlp node1 node2 node3 controller

ceph-deploy forgetkeys

rm -rf ceph*

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

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

相关文章

基于Java SSM框架实现音乐推荐网站项目【项目源码+论文说明】

基于java的SSM框架实现音乐推荐网站演示 摘要 中国风音乐推介网站近年来已成为风靡全球的新兴艺术形式。国内涌现出了大批优秀、有才华的爱好者和许多经久不衰的经典作品。中国风音乐推介网站的兴起打破了音乐界格局,也突破了原有分类唱法发展中的瓶颈,为声乐艺术的发展开辟了…

儿童护眼台灯什么品牌好?儿童护眼台灯品牌排行

台灯大家都不陌生,但使用它的人有多少呢,准确使用的人又有多少呢,我们就是为了照明才会去买台灯,而时间久了,你就会眼睛刺痛,那就是没有选对台灯和没有正确使用台灯,还是建议大家买具有护眼功能…

python爬虫实战(9)--获取澎pai热榜

1. 需要的类包 import pandas as pd import requests2. 请求地址 通过分析,数据可以直接从接口获取,无需解析页面标签,直接取出我们需要的数据即可。 def fetch_hot_news(api_url):response requests.get(api_url)if response.status_cod…

金融帝国实验室(Capitalism Lab)V10版本游戏平衡性优化与改进

即将推出的V10版本中的各种游戏平衡性优化与改进: ————————————— 一、当玩家被提议收购一家即将破产的公司时,显示商业秘密。 当一家公司濒临破产,玩家被提议收购该公司时,如果玩家有兴趣评估该公司,则无…

TypeScript进阶(三)类型演算与高级内置类型

✨ 专栏介绍 TypeScript是一种由微软开发的开源编程语言,它是JavaScript的超集,意味着任何有效的JavaScript代码都是有效的TypeScript代码。TypeScript通过添加静态类型和其他特性来增强JavaScript,使其更适合大型项目和团队开发。 在TypeS…

python爬虫实战(8)--获取虎pu热榜

1. 需要的类库 import requests from bs4 import BeautifulSoup import pandas as pd2. 请求地址 def fetch_data():url "https://bbs.xxx.com/" # Replace with the actual base URLresponse requests.get(url)if response.status_code 200:return response.c…

外汇天眼:Options与OneTick合作,共同打造全球SAAS分析平台

Options Technology,一家为全球金融领域提供云服务的托管服务提供商,今天宣布与OneMarketData及其旗舰产品OneTick平台的合作。 Options将使OneTick订户能够访问其庞大的市场数据存储库,包括股票、外汇、期货、期权和固定收益数据&#xff0…

掌握Sketch:软件介绍与实用技巧分享

Sketch是最好的UI软件之一。它可以快速交互迭代,每个页面之间的小部件可以直接复制粘贴并修改。在整体架构布局中,可以直接下载很多Mocaup模板,所以非常快。这个工具完全是为应用程序设计的,比PS好得多。 如果你不知道sketch软件…

Android Firebase (FCM)推送接入

官方文档: 向后台应用发送测试消息 | Firebase Cloud Messaging 1、根级(项目级)Gradlegradle的dependencies中添加: dependencies {...// Add the dependency for the Google services Gradle pluginclasspath com.google.gm…

open3d相关操作总结

open3d其实有很多交互式命令,在运行程序打开了open3d渲染的窗口后,鼠标点击窗口,按H就会弹出,交互命令的帮助,如下图所示: 其中比较常用的有: Q :退出当前窗口 H:打印帮…

CAN与CAN FD通信之间存在的问题

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。 目录 1、通讯速率和数据长度不同的问题 2、非ISO CAN FD与ISO CAN FD设备的通讯问题 3、多设备切换的通…

PHP企业物资管理系统源码带文字安装教程

PHP企业物资管理系统源码带文字安装教程 技术架构 主要框架 : PHP7.0 laravel5.4  mysql5.5.36 composer1.3.2(依赖管理) 前端 : jquery bootstrap jstree(树形结构) echart(图表) layer(弹出层) 企…

参数小,性能强!开源多模态模型—TinyGPT-V

安徽工程大学、南洋理工大学和理海大学的研究人员开源了多模态大模型——TinyGPT-V。 TinyGPT-V以微软开源的Phi-2作为基础大语言模型,同时使用了视觉模型EVA实现多模态能力。尽管TinyGPT-V只有28亿参数,但其性能可以媲美上百亿参数的模型。 此外&…

TDengine 签约西电电力

近年来,随着云计算和物联网技术的迅猛发展,传统电力行业正朝着数字化、信息化和智能化的大趋势迈进。在传统业务基础上,电力行业构建了信息网络、通信网络和能源网络,致力于实现发电、输电、变电、配电和用电的实时智能联动。在这…

企业办公终端文件数据\资料防泄密软件系统 | 自动智能透明加密保护核心文件,防止外泄

文档加密/数据安全 天锐绿盾是一款终端文件数据防泄密软件系统,采用自动智能透明加密技术,可以保护核心文件不被外泄。该软件通过对终端文件的加密处理,使得文件只能在经过授权的计算机上正常显示和使用,一旦离开授权范围&#x…

three.js : tweenjs创建threejs动画

效果&#xff1a; 代码 <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div> <div class"box-right"><…

在本地服务器发送邮件不可以,生产环境下跑可以

公司一般会给一个smtp-xxxx.com mail:host: smtp-xxxx.comport: 25properties:mail:smtp:starttls:enable: falsedebug: true然后你会使用堡垒机映射ip 会发现在本地邮件根本不会发出去,只能拿到虚拟机上跑 解决方案 我们需要把smtp-xxxx.com,改成对应的ip地址,只需要把smtp…

JavaScript中7种常见删除数组中指定元素的方法(含代码)

在JavaScript中&#xff0c;有多种方法可以从数组中删除指定的元素。以下是几种常见的方法&#xff1a; 1. 使用 splice() 方法 splice() 方法可以同时从数组中删除和添加元素。如果只提供了两个参数&#xff0c;那么它只会删除元素。 let arr [1, 2, 3, 4, 5]; let ind…

直播预告丨看零售场,如何玩转 MaaS

今年&#xff0c;有一个被频繁提及的词是MaaS 这类工具正在帮助千行百业实现大模型落地产业 在零售场&#xff0c;特别是像京东这样拥有超高并发、超复杂协同的电商场内 也沉淀出了一套通用的AI基础设施——九数算法中台 从提升客户服务体验、平台效率出发&#xff0c;训练各…

JS逆向实战案例2——某房地产token RSA加密

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、 反爬分析 url1&#xff1a;aHR0cDovL3pmY2ouZ3ouZ292LmNuL3pmY2ovZnl4eC94a2I/c1Byb2plY3RJZD05MzBlMDQ0MmJjNjA0MTBkYTgzNzQ0MmQ…