当前位置:首页 » 云服务器 » 泰山服务器搭建ceph存储

泰山服务器搭建ceph存储

发布时间: 2022-09-14 03:08:32

A. Ceph 架构与原理

Ceph 是一个开源项目,它提供软件定义的、统一的存储解决方案 。Ceph 是一个具有高性能、高度可伸缩性、可大规模扩展并且无单点故障的分布式存储系统 。
Ceph 是软件定义存储解决方案
Ceph 是统一存储解决方案
Ceph 是云存储解决方案

高可用性

高扩展性

特性丰富

Ceph独一无二地统一的系统提供了对象存储、块存储和文件存储功能。Ceph存储集群由几个不同的软件守护进程组成(比较重要的两个是MON和OSD),每个守护进程负责Ceph的一个独特功能并将值添加到相应的组件中。

RADOS是CEPH存储系统的核心,也称为Ceph 存储集群。Ceph的数据访问方法(如RBD,CephFS,RADOSGW,librados)的所有操作都是在RADOS层之上构建的。当Ceph 集群接收到来自客户端的请求时,CRUSH算法首先计算出存储位置,最后将这些对象存储在OSD中,当配置的复制数大于1时,RADOS负责的形式将数据分发到集群内的所有节点,最后将这些对象存储在OSD中。当配置的复制数大于1时,RADOS负责数据的可靠性,它复制对象,创建副本并将它们存储在不同的故障区域中。
RADOS包含两个核心组件: OSD和MON

OSD 是Ceph 存储集群中最重要的一个基础组件,他负责将实际的数据以对象的形式存储在每一个集群节点的物理磁盘中。对于任何读写操作,客户端首先向MON请求集群MAP,然后客户端旧可以直接和OSD进行I/O操作。
一个Ceph 集群包含多个OSD。一个典型的Ceph集群方案会为集群节点上的每个物理磁盘创建一个ODS守护进程,这个是推荐的做法。OSD上的每个对象都有一个主副本和几个辅副本,辅副本分散在其他OSD。一个OSD对于一些对象是主副本,同时对于其他对象可能是辅副本,存放辅副本的OSD主副本OSD控制,如果主副本OSD异常(或者对应的磁盘故障),辅副本OSD可以成为主副本OSD。
OSD是有一个已经存在的linux文件系统的物理磁盘驱动器和OSD服务组成。Ceph 推荐OSD使用的文件系统是XFS。OSD的所有写都是先存到日志,再到存储.

MON 负责监控整个集群的健康状况。它以守护进程的形式存在,一个MON为每一个组件维护一个独立的MAP,如OSD,MON,PG,CRUSH 和MDS map。这些map 统称为集群的MAP。MON 不为客户端存储和提供数据,它为客户端以及集群内其他节点提供更新集群MAP的服务。客户端和集群内其他节点定期与MON确认自己持有的是否是集群最新的MAP.一个Ceph集群通常包含多个MON节点,但是同一时间只有一个MON。

librados是一个本地的C语言库,通过它应用程序可以直接和RADOS通信,提高性能

Ceph 块存储,简称 RBD,是基于 librados 之上的块存储服务接口。RBD 的驱动程序已经被集成到 Linux 内核(2.6.39 或更高版本)中,也已经被 QEMU/KVM Hypervisor 支持,它们都能够无缝地访问 Ceph 块设备。Linux 内核 RBD(KRBD)通过 librados 映射 Ceph 块设备,然后 RADOS 将 Ceph 块设备的数据对象以分布式的方式存储在集群节点中

RGW,Ceph对象网关,也称做RADOS网关,它是一个代理,可以将HTTP请求转换为RADOS,也可以把RADOS转换为HTTP请求,从而提供restful接口,兼容S3和Swift。Ceph对象网关使用Ceph对象网关守护进程(RGW)与librgw、librados交互。Ceph对象网关支持三类接口:S3、Swift、管理API(通过restful接口管理Ceph集群)。RGW有自己的用户管理体系

Ceph 元数据服务器服务进程,简称 MDS。只有在启用了 Ceph 文件存储(CephFS)的集群中才需要启用 MDS,它负责跟踪文件层次结构,存储和管理 CephFS 的元数据。MDS 的元数据也是以 Obejct 的形式存储在 OSD 上。除此之外,MDS 提供了一个带智能缓存层的共享型连续文件系统,可以大大减少 OSD 读写操作频率。

CephFS在RADOS层之上提供了一个兼容POSIX的文件系统。它使用MDS作为守护进程,负责管理其元数据并将它和其他数据分开。CephFS使用cephfuse模块(FUSE)扩展其在用户空间文件系统方面的支持(就是将CephFS挂载到客户端机器上)。它还允许直接与应用程序交互,使用libcephfs库直接访问RADOS集群。

Ceph管理器软件,可以收集整个集群的所有状态。有仪表板插件

一个对象通常包含绑定在一起的数据和元数据,并且用一个全局唯一的标识符标识。这个唯一的标识符确保在整个存储集群中没有其他对象使用相同的对象ID,保证对象唯一性。基于文件的存储中,文件大小是有限制的,与此不同的是,对象的大小是可以随着大小可变的元数据而变得很大。对象不使用一个目录层次结构或树结构来存储,相反,它存储在一个包含数十亿对象且没有任何复杂性的线性地址空间中。对象可以存储在本地,也可以存放在地理上分开的线性地址空间中,也就是说,在一个连续的存储空间中。任何应用程序都可以基于对象ID通过调用restful API从对象中获取数据。这个URL可以以同样的方式工作在因特网上,一个对象ID作为一个唯一的指针指向对象。这些对象都以复制的方式存储在OSD中,因为能提供高可用性。

对于Ceph集群的一次读写操作,客户端首先联系MON获取一个集群map副本,然后使用对象和池名/ID将数据转换为对象。接着将对象和PG数一起经过散列来生成其在Ceph池中最终存放的那一个PG。然后前面计算好的PG经过CRUSH查找来确定存储或获取数据所需的主OSD的位置。得到准确的OSD ID之后,客户端直接联系这个OSD来存取数据。所有这些计算操作都由客户端来执行,因此它不会影响Ceph集群的性能。一旦数据被写入主OSD,主OSD所在节点将执行CRUSH查找辅助PG和OSD的位置来实现数据复制,进而实现高可用。
  简单地说,首先基于池ID将对象名和集群PG数应用散列函数得到一个PG ID,然后,针对这个PG ID执行CRUSH查找得到主OSD和辅助OSD,最后写入数据。

PG是一组对象地逻辑集合,通过复制它到不同的OSD上来提供存储系统的可靠性。根据Ceph池的复制级别,每个PG的数据会被复制并分发到Ceph集群的多个OSD上。可以将PG看成一个逻辑容器,这个容器包含多个对象,同时这个逻辑容器被映射到多个OSD。
  计算正确的PG数对一个Ceph存储集群来说是至关重要的一步。PG数计算公式如下

Ceph池是一个用来存储对象的逻辑分区,每个池都包含一定数量的PG,进而实现把一定数量的对象映射到集群内部不同OSD上的目的。每一个池都是交叉分布在集群所有节点上的,这样就能提供足够的弹性。池可以通过创建需要的副本数来保障数据的高可用性。
  Ceph的池还支持快照功能,我们可以使用ceph osd pool mksnap命令来给特定的池制作快照。此外,Ceph池还允许我们为对象设置所有者和访问权限。

数据管理始于客户端向Ceph池中写数据。一旦客户端准备写数据到Ceph池中,数据首先写入基于池副本数的主OSD中。主OSD再复制相同的数据到每个辅助OSD中,并等待它们确认写入完成。只要辅助OSD完成数据写入,就会发送一个应答信号给主OSD。最后主OSD再返回一个应答信号给客户端,以确认完成整个写入操作。

B. Ceph高可用部署和主要组件介绍

本教程用官网最近的cephadm来搭建ceph集群。

第一周作业:1.ceph的组件和功能2.ceph的数据读写流程3.使用ceph-deploy安装一个最少三个节点的ceph集群 推荐3个或以上的磁盘作为专用osd 4.测试ceph的rbd使用

1·Ceph组件和功能

组件

Ceph OSDs : ( Ceph OSD )object storage daemon的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。

Monitors : 维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。

MDSs : Ceph 元数据服务器为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。

CephMgr :在一个主机上的守护进程,负责运行指标,运行状态,性能负载,

其他术语:

RADOS:多个主机组成的存储集群,即可靠,自动化,分布式的对象存储系统。

File:  就是普通文件,ObjectRADOS看到的对象,Object与File的区别是, Object的最大尺寸由RADOS限定(通常为2MB或4MB) ,以便实现底层存储的组织管理。因此,当上层应用向RADOS存入尺寸很大的File时,需要将File切分成统一大小的一系列Objet (最后一个的大小可以不同)进行存储。

librados:RADOS集群的API,支持大部分主流语言。

Pool:存储池,大小取决于底层的存储空间。

PG:placeholder group,一个pool(存储池)内可以有多个PG,pool个pg都是抽象的逻辑概念,可以通过公示计算。PG的用途是对Object的存储进行组织和位置映射的。具体而言,一个PG负责组织若干个Object,但一个Obiect只能被映射到一个PG中,即PG和Object之间是“一对多”的映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即PG和OSD之间是“多对多”的映射关系。在实践当中,n至少为2,如果用于生产环境,则至少为3。一个OSD上的PG可达到数百个。事实上, PG数量的设置关系到数据分布的均匀性问题。

OSD daemon:默认每2秒发送状态数据给monitor,(同时监控组内其他OSD的状态)(up 可以提供IO,down不能提供,in有数据,out没有数据)

PG和OSD之间的关系通过CRUSH算法得出的。常规这三个 OSD daemon 可以在一台机器上,也可以在不同机器上;那么根据 CRUSH 算法会尽可能的保证一个平衡,就是不在同一个机器上;毕竟Ceph中的数据是一个为平衡的状态,一切都是通过CRUSH 算法来实现的数据平衡,而 PG 本身是个有序列表,位于第一的位置是 master;这个列表的产生是由 monitor 来产生的;

寻址流程

File->Object映射 这次映射的目的是,将用户要操作的File映射为RADOS能够处理的Object,其十分简单,本质上就是按照Object的最大尺寸(默认4M)对File进行切分,相当于磁盘阵列中的条带化过程。这种切分的好处有两个:一是让大小不限的File变成具有一致的最大尺寸、可以被RADOS高效管理的Object;二是让对单一File实施的串行处理变为对多个Object实施的并行化处理。每一个切分后产生的Object将获得唯一的oid,即Object ID,其产生方式也是线性映射,极其简单。 Object →PG映射 在File被映射为1个或多个Object之后,就需要将每个Object独立地映射到1个PG中去。这个映射过程也很简单,如图所示,其计算公式如下:Hash(oid) & mask -> pgid由此可见,其计算由两步组成。首先,使用Ceph系统指定的一个静态哈希算法计算oid的哈希值,将oid映射为一个近似均匀分布的伪随机值。然后,将这个伪随机值和mask按位相与,得到最终的PG序号(pgid) 。根据RADOS的设计,给定PG的总数为m(m应该为2的整数幂),则mask的值为m-1。因此,哈希值计算和按位与操作的整体结果事实上是从所有m个PG中近似均匀地随机选择1个。基于这一机制,当有大量Object和大量PG时, RADOS能够保证Object和PG之间的近似均匀映射。又因为Object是由File切分而来的,大部分Object的尺寸相同,因此,这一映射最终保证了各个PG中存储的Object的总数据量近似均匀。这里反复强调了“大量” ,意思是只有当Object和PG的数量较多时,这种伪随机关系的近似均匀性才能成立, Ceph的数据存储均匀性才有保证。为保证“大量”的成立,一方面, Object的最大尺寸应该被合理配置,以使得同样数量的File能够被切分成更多的Object;另一方面, Ceph也推荐PG总数应该为OSD总数的数百倍,以保证有足够数量的PG可供映射。 PG→ OSD映射 第3次映射就是将作为Object的逻辑组织单元的PG映射到数据的实际存储单元OSD上。RADOS采用一个名为CRUSH的算法,将pgid代入其中,然后得到一组共n个OSD。这n个OSD共同负责存储和维护一个PG中的所有Objecto前面提到过, n的数值可以根据实际应用中对于可靠性的需求而配置,在生产环境下通常为3。具体到每个OSD,则由其上运行的OSD Daemon负责执行映射到本地的Object在本地文件系统中的存储、访问、元数据维护等操作。和“Object →PG"映射中采用的哈希算法不同, CRUSH算法的结果不是绝对不变的,而会受到其他因素的影响。其影响因素主要有两个。一是当前系统状态,也就是在前面有所提及的集群运行图。当系统中的OSD状态、数量发生变化时,集群运行图也可能发生变化,而这种变化将会影响到PG与OSD之间的映射关系。二是存储策略配置。这里的策略主要与安全相关。利用策略配置,系统管理员可以指定承载同一个PG的3个OSD分别位于数据中心的不同服务器或机架上,从而进一步改善存储的可靠性。因此,只有在系统状态和存储策略都不发生变化的时候, PG和OSD之间的映射关系才是固定不变的。在实际使用中,策略一经配置通常不会改变。而系统状态的改变或是因为设备损坏,或是因为存储集群规模扩大。好在Ceph本身提供了对这种变化的自动化支持,因而,即便PG与OSD之间的映射关系发生了变化,也并不会对应用产生影响。事实上, Ceph正是利用了CRUSH算法的动态特性,可以将一个PG根据需要动态迁移到不同的OSD组合上,从而自动化地实现高可靠性、数据分布再平衡等特性。之所以在此次映射中使用CRUSH算法,而不使用其他哈希算法,一方面原因是CRUSH算法具有上述可配置特性,可以根据管理员的配置参数决定OSD的物理位置映射策略;另一方面原因是CRUSH算法具有特殊的“稳定性" ,也即,当系统中加入新的OSD,导致系统规模增大时,大部分PG与OSD之间的映射关系不会发生改变,只有少部分PG的映射关系会发生变化并引发数据迁移。这种可配置性和稳定性都不是普通哈希算法所能提供的。因此, CRUSH算法的设计也是Ceph的核心内容之一。 至此为止, Ceph通过3次映射,完成了从File到Object. Object到PG,PG再到OSD的整个映射过程。从整个过程可以看到,这里没有任何的全局性查表操作需求。至于唯一的全局性数据结构:集群运行图。它的维护和操作都是轻量级的,不会对系统的可扩展性、性能等因素造成影响 。

存储过程总结:

1.计算文件到对象的映射

2.通过哈希算法计算计算出文件对应的pool的PG

3.通过CRUSH把对象映射到PG中的OSD

4.PG种的OSD将对象写入到磁盘

5.主OSD将数据同步到备份OSD,待备份OSD返回确认

6.主OSD的到备份OSD写完操作以后给客户的返回写入成功

2. ceph的读写流程

当某个客户端需要向Ceph集群写入一个File时,首先需要在本地完成寻址流程,将File变为一个Object,然后找出存储该Object的一组共3个OSD,这3个OSD具有各自不同的序号,序号最靠前的那个OSD就是这一组中的Primary OSD,而后两个则依次Secondary OSD和Tertiary OSD。找出3个OSD后,客户端将直接和Primary OSD进行通信,发起写入操作(步骤1)。 Primary OSD收到请求后,分别向Secondary OSD和Tertiary OSD发起写人操作(步骤2和步骤3)。当Secondary OSD和Tertiary OSD各自完成写入操作后,将分别向Primary OSD发送确认信息(步骤4和步骤5)。当Primary OSD确认其他两个OSD的写入完成后,则自己也完成数据写入,并向客户端确认Object写入操作完成(步骤6)。之所以采用这样的写入流程,本质上是为了保证写入过程中的可靠性,尽可能避免出现数据丢失的情况。同时,由于客户端只需要向Primary OSD发送数据,因此在互联网使用场景下的外网带宽和整体访问延迟又得到了一定程度的优化。当然,这种可靠性机制必然导致较长的延迟,特别是,如果等到所有的OSD都将数据写入磁盘后再向客户端发送确认信号,则整体延迟可能难以忍受。因此, Ceph可以分两次向客户端进行确认。当各个OSD都将数据写入内存缓冲区后,就先向客户端发送一次确认,此时客户端即可以向下执行。待各个OSD都将数据写入磁盘后,会向客户端发送一个最终确认信号,此时客户端可以根据需要删除本地数据。分析上述流程可以看出,在正常情况下,客户端可以独立完成OSD寻址操作,而不必依赖于其他系统模块。因此,大量的客户端可以同时和大量的OSD进行并行操作。同时,如果一个File被切分成多个Object,这多个Object也可被并行发送至多个OSD上。从OSD的角度来看,由于同一个OSD在不同的PG中的角色不同,因此,其工作压力也可以被尽可能均匀地分担,从而避免单个OSD变成性能瓶颈。

问:为什么要设计三层映射而不是一层?

答:如果将object直接映射到一组OSD上,如果这种算法是固定的哈希算法,则意味着一个object被固定映射在一组OSD上,当其中一个OSD损坏时,object也无法部署到新的OSD上(因为映射函数不允许)。

如果设计一个动态算法(例如CRUSH算法)来完成这一映射,结果将是各个OSD所处理的本地元数据暴增,由此带来的计算复杂度和维护工作量也是难以承受的。

综上所诉,引入PG的好处至少有二:一方面试下呢object和OSD之间的动态映射,从而为Ceph的可靠性、自动化等特性的实现留下了空间;另一方面也有效简化了数据的存储组织,大大降低了系统的维护管理开销。

1.准备工作

时间同步`

安装ntpdate(时间同步工具)

# apt install ntpate

0* * * * ntpdate time1.aliyun.com

echo'0 * * * * ntpdate time1.aliyun.com'>> /var/spool/cron/crontabs/root

或者 可以通过

ansible all-mshell-a"echo  '0 * * * * ntpdate time1.aliyun.com' >> /var/spool/cron/crontabs/root"

关闭 selinux 和防火墙

root@node1:~# sudo ufw status  ##查看状态

Status: inactive

root@node1:~# sudo ufw disable

Firewall stopped and disabled on system startup##禁用

root@node1:~#

配置域名解析或通过 DNS 解析

root@node1:~# cat /etc/hosts

127.0.0.1 localhost

root@node1:~# hostnamectl set-hostname 对应的名称

## 以下是新增的 可以按照自己的习惯配置

192.168.106.101  node1

192.168.106.102  node2

192.168.106.103  node3

安装python

root@node1:~# apt install python  ##python2

源修改成国内源  -- 具体步骤自行网络

https://mirrors.aliyun.com/ceph/#阿里云镜像仓库

http://mirrors.163.com/ceph/#网易镜像仓库

https://mirrors.tuna.tsinghua.e.cn/ceph/#清华大学镜像源

ceph用到的端口 (防火墙和安全中记得放开)

Ceph Monitor:启用 Ceph MON 服务或端口 6789 (TCP)。

Ceph OSD 或元数据服务器:启用 Ceph OSD/MDS 服务或端口 6800-7300 (TCP)。

iSCSI 网关:打开端口 3260 (TCP)。

对象网关:打开对象网关通讯所用的端口。此端口在 /etc/ceph.conf 内以 rgw frontends = 开头的行中设置。HTTP 的默认端口为 80,HTTPS (TCP) 的默认端口为 443。

NFS Ganesha:默认情况下,NFS Ganesha 使用端口 2049(NFS 服务、TCP)和 875 (rquota 支持、TCP)。

SSH:打开端口 22 (TCP)。

NTP:打开端口 123 (UDP)。

2.搭建ceph集群

安装cephadm

root@node1:~#  wget https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm ## node1 管理节点上执行

root@node1:~#  chmod +x cephadm

root@node1:~# ./cephadm add-repo --release pacific  ##设置要安装的版本

root@node1:~#  which cephadm   ##确认是否安装成功

初始化集群

root@node1:~# cephadm bootstrap --mon-ip 192.168.106.101   ##ceph集群第一个节点的ip

初始化完了以后就可以访问dashboard了 地址 : https://node1:8443/#/dashboard 访问用户密码上一步生成

添加其他节点和其他组件

root@node1:~# ssh-keygen

## 配置免密通信

root@node1:~#  ssh--id -f -i /etc/ceph/ceph.pub root@node2

root@node1:~#  ssh--id -f -i /etc/ceph/ceph.pub root@node3

## 添加node

root@node1:~#  ceph orch host add node2 192.168.106.102

root@node1:~#  ceph orch host add node3 192.168.106.103

## 添加osd

root@node1:~#  ceph orch daemon add osd node1:/dev/sdb

root@node1:~#  ceph orch daemon add osd node1:/dev/sdb

root@node1:~#  ceph orch daemon add osd node3:/dev/sdb

测试

root@node1:~#  ceph fs volume create testfs  ##添加测试fs

root@node1:~#  ceph orch apply mds testfs --placement="3" ##设置备份数

root@node1:~#   ceph orch daemon add mds testfs node1

root@node1:~#   ceph mds stat

## 在集群之外的或者任意机器上操作

root@node4:~#  apt install ceph-common -y

node1初始化集群的节点操作

root@node1:~#  scp /etc/ceph/ceph.client.admin.keyring user@node4:/etc/ceph

##  集群之外的clinet或者测试节点执行

root@node4:~#  mount -t ceph node1:/ /mnt/testfs -o name=admin,secret=AQAoJjBh7OPVNhAAQZyzLhDfgSj+KPmeU5RVlA==,fs=testfs  

root@node4:~#  mount -t ceph node2:/ /mnt/cephfs -o name=admin,secret=AQAoJjBh7OPVNhAAQZyzLhDfgSj+KPmeU5RVlA==,fs=testfs

root@node4:~#  df -h

Filesystem                  Size  Used Avail Use% Mounted on

udev1.4G01.4G0% /dev

tmpfs                       293M1.2M  292M1% /run

....

192.168.106.101:/            18G 1000M   17G6% /mnt/testfs

192.168.106.102:/            18G 1000M   17G6% /mnt/cephfs

root@node4:~#  cd /mnt/cephfs

root@node4:/mnt/cephfs#  dd if=/dev/zero of=test bs=1M count=100 ##生成文件

这时候文件是直接写在ceph集群上看了, 可以通过dashboard观察👀。

C. 请教:基于块存储和基于文件系统的存储

Ceph布式存储系统支持象文件快接口设计目标:

? 所组件横向扩展

? 没单点故障

? 普通厂商硬件使用

? 所机制都能自我管理

? 源

布式存储应用场景相于其存储接口现流行三种:

  1. 象存储: 通意义键值存储其接口简单GET,PUTDEL其扩展七牛、拍SwiftS3等

  2. 2.块存储: 种接口通QEMUDriver或者KernelMole式存种接口需要实现LinuxBlock Device接口或者QEMU提供Block Driver接口SheepdogAWSEBS青云云硬盘阿云盘古系统CephRDB(RDBCeph面向块存储接口)

  3. 3、文件存储: 通意义支持POSIX接口跟传统文件系统Ext4类型区别于布式存储提供并行化能力CephCephFS(CephFSCeph面向文件存储接口)候GFSHDFS种非POSIX接口类文件存储接口归入类

  4. 提存储种类提另外题:存储能做统化必须要同软件栈管理同存储设备:SSDSATA等

  5. Ceph提同观点RADOS提供基础存储设备管理、数据控制流访问管理提供靠持久数据存储平台基于其我实现同接口户实现面向同需求接比象存储我单独库实现满足同存储需要比我块存储通RDP实现

  6. 统存储并意味着所存储都同接口同实现同软件栈其实使用同设备管理命周期数据访问效控制提供相合理非适合运维利于本利于软件靠性控制机制保证我存储靠

  7. 举例部存储厂商甚至网络厂商都自核软件栈文件系内核基于其演化各种同产品线厂商要追求各产品线极致应该每产品完全独立追求极致事实核底层技术栈需要高质量代码、完备测试期使用Ceph布式系统并发IO、布式恢复、数据端端校验等等关键实现唯实现熟系统系统些实现需要经定量级间考验才Ceph所谓统存储其接口堆叠式发

  8. 【Ceph其源布式存储、其商用存储区别处哪】

  9. 众所周知传统厂商立、富士通等存储厂采用Ceph作存储硬件载体Ceph能提供企业级存储服务定优势才能让传统存储厂商弃采用源存储案

  10. 1、化系统我认数据控制系统面做较迁移运维面提供较实现却元数据瓶颈访问数据需要经元数据服务器查询再寻找相应数据服务器规模扩展遇性能瓶颈问题

  11. 2、全布式系统虽提供较数据访问能力能高效处理客户端LO请求却没提供非数据控制实现比故障处理能力足数据恢复困难跳化元数据存储系统没办做强致性数据恢复

  12. 弹性数据布策略物理拓扑输入实现高用性高持久性Ceph高性能重构体现利用CRush算数进行约束避免数据布所集群节点利用Ceph设计并提供由CRush算支持高自由化存储集群设计实现高靠性高持久性高性能

D. 如何搭建私有云存储

虚拟化技术在企业私有云IT基础架构中仍然占据重要地位,同时,为了进一步提升应用效率,越来越多的生产环境也正在逐步变革,从以虚拟机为中心的架构向以容器和微服务为中心的云原生架构过渡,在这个过程中,存储如何有效支撑各种云主机应用与微服务应用,对于企业的私有云数据中心提出了新的挑战。

企业面临的问题

存储设施七国八制,硬件锁定缺少弹性

多种云平台对于存储的要求各不相同,块/文件/对象存储对应不同类型的应用,对外提供不同的服务接口,一种存储设备无法满足多种类型的云平台存储需求,而且传统存储在扩展性方面不能满足云时代大规模云平台对存储在线弹性扩容的需求,在可维护性方面则面临硬件架构绑定、运维复杂、难以维保等问题,而且这些问题会随着存储设备种类和数量的增多进一步放大。

业务调度变更频繁,资源不能共享

随着开发测试虚拟机以及容器、微服务平台在企业私有云平台的上线,大型企业的应用快速迭代、频繁发布对存储系统的支撑提出了严峻挑战,不同业务的数据保存在不同厂商的存储设备中,数据流动性差,不仅导致存储空间及性能资源浪费严重,数据灾备方案也很难统一化。

开源产品难以维护,不能实现企业级产品化

基于开源虚拟化技术的云平台如OpenStack为众多客户提供了快速构建私有云基础设施的能力,但是存储部分却不一样,开源的存储系统如Ceph虽然可以小规模部署试用, 但在大规模商用时会遇到很多问题:与硬件和企业级应用生态融合程度不高,严重依赖人工开发运维,在性能和服务质量方面不能满足核心业务的需求

杉岩私有云存储解决方案

杉岩私有云存储解决方案充分发挥了杉岩统一存储平台(USP)的云适配、开放等优势,支持各种复杂的应用负载,可灵活支撑私有云的虚拟化平台,如VMware、Citrix、OpenStack等虚拟化和云平台,以及通过Kubernetes软件一致性认证的所有容器云平台,如:Rancher、Openshift、Kubernetes等。

通过杉岩统一存储平台,用户可快速构建能够兼容所有主流虚拟化平台与容器微服务平台的统一存储资源池,面对各种虚拟机和微服务需求,池化的存储平台为大规模云环境提供了可靠的存储基础架构支撑,帮助用户从纷繁复杂的基础架构运维工作中解放出来,更关注于私有云上运行的业务本身。

客户价值

资源整合,链接企业信息孤岛

单资源池提供块、文件、对象多种存储服务,支持虚拟化平台和数据库应用;强大的存储资源生命周期管理能力,跨云平台在线迁移数据,实现数据共享和提高资源利用率;存储卷QoS等级和性能优先级在线调整,可根据企业资源和业务需求合理配置资源。

开放兼容,适配多种私有云平台

通过VMware VAAI和Citrix Ready认证,针对主流虚拟化平台优化I/O性能,大幅提升虚拟机访问的性能。通过OpenStack Cinder认证,可提供块和对象存储基础架构支撑支持容器平台CSI接口认证,为Kubernetes生态的容器应用提供块和文件存储服务。

智能管理,解决规模化运维难题

向导式安装部署和自助扩容配置,极大提升易用性和可维护性,管理自动化降低运维成本;针对大规模集群优化的可靠性管理,检测和修复硬盘软错误的专利技术,节约用户硬件投资。存储视角的管理功能,可视化展示主机、容器与存储的映射关系和性能监控协助管理员快速定位和解决问题。

E. 如何自己在linux上搭建类似云盘的分布式云存储

我们常用的系统大多数是Windows和Mac,但是相比较来说在Linux上部署云盘更稳定。楼主的想要的是如何从0到1,一步步开发、搭建云存储,但相对于大众来说,难度系数太高,毕竟不是人人都有IT技术,也不是每个公司都有IT人员能够完成开发、搭建、部署、运维的。

楼上已经有答案说到开发的层面,那我就来说说更适合大众的搭建方式,那就是拿成熟的云盘产品直接搭建。

现在云盒子企业私有云盘的官网上提供了云盒子Linux服务器安装包,大家有服务器或者闲置电脑的话,可以直接进入下载板块下载适用,为方便大家搭建,云盒子还附上了使用帮助,根据提示轻松部署。

Linux搭建云存储

关于运维也不用担心,云盒子配备了实施工程师,排查、解决、更新都不用你操心。

有兴趣的朋友可以试试

F. 如何在Ubuntu 16.04中安装Ceph存储集群

第 1 步 - 配置所有节点
这次安装,我将配置所有的 6 个节点来准备安装 Ceph 集群软件。所以你必须在所有节点运行下面的命令。然后确保所有节点都安装了 ssh-server。
创建 Ceph 用户
在所有节点创建一个名为 cephuser 的新用户
useradd -m -s /bin/bash cephuserpasswd cephuser

创建完新用户后,我们需要给 cephuser 配置无密码的 sudo 权限。这意味着 cephuser 可以不先输入密码而获取到 sudo 权限运行。
运行下面的命令来完成配置。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuserchmod 0440 /etc/sudoers.d/cephusersed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

安装和配置 NTP
安装 NTP 来同步所有节点的日期和时间。先运行 ntpdate 命令通过 NTP 设置日期。我们将使用 US 池的 NTP 服务器。然后开启并使 NTP 服务在开机时启动。
sudo apt-get install -y ntp ntpdate ntp-docntpdate 0.us.pool.ntp.orghwclock --systohcsystemctl enable ntpsystemctl start ntp

安装 Open-vm-tools

G. 如何在CentOS 7.0上配置Ceph存储

Ceph 是一个将数据存储在单一分布式计算机集群上的开源软件平台。当你计划构建一个云时,你首先需要决定如何实现你的存储。开源的 Ceph 是红帽原生技术之一,它基于称为 RADOS 的对象存储系统,用一组网关 API 表示块、文件、和对象模式中的数据。由于它自身开源的特性,这种便携存储平台能在公有云和私有云上安装和使用。Ceph 集群的拓扑结构是按照备份和信息分布设计的,这种内在设计能提供数据完整性。它的设计目标就是容错、通过正确配置能运行于商业硬件和一些更高级的系统。

Ceph 能在任何 Linux 发行版上安装,但为了能正确运行,它需要最近的内核以及其它最新的库。在这篇指南中,我们会使用最小化安装的 CentOS-7.0。

系统资源
**CEPH-STORAGE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.136.163
FQDN: ceph-storage.linoxide.com
**CEPH-NODE**
OS:CentOSLinux7(Core)
RAM:1 GB
CPU:1 CPU
DISK:20
Network:45.79.171.138
FQDN: ceph-node.linoxide.com

安装前的配置
在安装 Ceph 存储之前,我们要在每个节点上完成一些步骤。第一件事情就是确保每个节点的网络已经配置好并且能相互访问。
配置 Hosts
要在每个节点上配置 hosts 条目,要像下面这样打开默认的 hosts 配置文件(LCTT 译注:或者做相应的 DNS 解析)。
#vi/etc/hosts
45.79.136.163 ceph-storage ceph-storage.linoxide.com
45.79.171.138 ceph-node ceph-node.linoxide.com
安装 VMware 工具
工作环境是 VMWare 虚拟环境时,推荐你安装它的 open VM 工具。你可以使用下面的命令安装。
#yum install -y open-vm-tools
配置防火墙
如果你正在使用启用了防火墙的限制性环境,确保在你的 Ceph 存储管理节点和客户端节点中开放了以下的端口。
你必须在你的 Admin Calamari 节点开放 80、2003、以及4505-4506 端口,并且允许通过 80 号端口访问到 Ceph 或 Calamari 管理节点,以便你网络中的客户端能访问 Calamari web 用户界面。
你可以使用下面的命令在 CentOS 7 中启动并启用防火墙。
#systemctl start firewalld
#systemctl enable firewalld
运行以下命令使 Admin Calamari 节点开放上面提到的端口。
# firewall-cmd --zone=public--add-port=80/tcp --permanent
# firewall-cmd --zone=public--add-port=2003/tcp --permanent
# firewall-cmd --zone=public--add-port=4505-4506/tcp --permanent
# firewall-cmd --reload
在 Ceph Monitor 节点,你要在防火墙中允许通过以下端口。
# firewall-cmd --zone=public--add-port=6789/tcp --permanent
然后允许以下默认端口列表,以便能和客户端以及监控节点交互,并发送数据到其它 OSD。
# firewall-cmd --zone=public--add-port=6800-7300/tcp --permanent
如果你工作在非生产环境,建议你停用防火墙以及 SELinux 设置,在我们的测试环境中我们会停用防火墙以及 SELinux。
#systemctl stop firewalld
#systemctl disable firewalld
系统升级
现在升级你的系统并重启使所需更改生效。
#yum update
#shutdown-r 0

设置 Ceph 用户
现在我们会新建一个单独的 sudo 用户用于在每个节点安装 ceph-deploy工具,并允许该用户无密码访问每个节点,因为它需要在 Ceph 节点上安装软件和配置文件而不会有输入密码提示。
运行下面的命令在 ceph-storage 主机上新建有独立 home 目录的新用户。
[root@ceph-storage ~]#useradd-d /home/ceph -m ceph
[root@ceph-storage ~]#passwd ceph
节点中新建的每个用户都要有 sudo 权限,你可以使用下面展示的命令赋予 sudo 权限。
[root@ceph-storage ~]#echo"ceph ALL = (root) NOPASSWD:ALL"|sudotee/etc/sudoers.d/ceph
ceph ALL =(root) NOPASSWD:ALL
[root@ceph-storage ~]#sudochmod0440/etc/sudoers.d/ceph

设置 SSH 密钥
现在我们会在 Ceph 管理节点生成 ssh 密钥并把密钥复制到每个 Ceph 集群节点。
在 ceph-node 运行下面的命令复制它的 ssh 密钥到 ceph-storage。
[root@ceph-node ~]#ssh-keygen
Generatingpublic/private rsa key pair.
Enterfilein which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (emptyforno passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Yourpublic key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
5b:*:*:*:*:*:*:*:*:*:c9 root@ceph-node
The key's randomart image is:
+--[ RSA 2048]----+
[root@ceph-node ~]#ssh--id ceph@ceph-storage

SSH key

配置 PID 数目
要配置 PID 数目的值,我们会使用下面的命令检查默认的内核值。默认情况下,是一个小的最大线程数 32768。
如下图所示通过编辑系统配置文件配置该值为一个更大的数。

更改 PID 值

配置管理节点服务器
配置并验证了所有网络后,我们现在使用 ceph 用户安装 ceph-deploy。通过打开文件检查 hosts 条目(LCTT 译注:你也可以用 DNS 解析来完成)。
#vim/etc/hosts
ceph-storage 45.79.136.163
ceph-node 45.79.171.138
运行下面的命令添加它的库。
# rpm -Uhv http://ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm

添加 Ceph 仓仓库
或者创建一个新文件并更新 Ceph 库参数,别忘了替换你当前的 Release 和版本号。
[root@ceph-storage ~]#vi/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
之后更新你的系统并安装 ceph-deploy 软件包。

安装 ceph-deploy 软件包
我们运行下面的命令以及 ceph-deploy 安装命令来更新系统以及最新的 ceph 库和其它软件包。
#yum update -y &&yum install ceph-deploy -y

配置集群
使用下面的命令在 ceph 管理节点上新建一个目录并进入新目录,用于收集所有输出文件和日志。
#mkdir~/ceph-cluster
#cd~/ceph-cluster
# ceph-deploy new storage

设置 ceph 集群
如果成功执行了上面的命令,你会看到它新建了配置文件。
现在配置 Ceph 默认的配置文件,用任意编辑器打开它并在会影响你公共网络的 global 参数下面添加以下两行。
#vim ceph.conf
osd pool defaultsize=1
public network =45.79.0.0/16

安装 Ceph
现在我们准备在和 Ceph 集群关联的每个节点上安装 Ceph。我们使用下面的命令在 ceph-storage 和 ceph-node 上安装 Ceph。
# ceph-deploy install ceph-node ceph-storage

安装 ceph
处理所有所需仓库和安装所需软件包会需要一些时间。
当两个节点上的 ceph 安装过程都完成后,我们下一步会通过在相同节点上运行以下命令创建监视器并收集密钥。
# ceph-deploy mon create-initial

Ceph 初始化监视器

设置 OSD 和 OSD 守护进程
现在我们会设置磁盘存储,首先运行下面的命令列出你所有可用的磁盘。
# ceph-deploy disk list ceph-storage
结果中会列出你存储节点中使用的磁盘,你会用它们来创建 OSD。让我们运行以下命令,请使用你的磁盘名称。
# ceph-deploy disk zap storage:sda
# ceph-deploy disk zap storage:sdb
为了最后完成 OSD 配置,运行下面的命令配置日志磁盘以及数据磁盘。
# ceph-deploy osd prepare storage:sdb:/dev/sda
# ceph-deploy osd activate storage:/dev/sdb1:/dev/sda1
你需要在所有节点上运行相同的命令,它会清除你磁盘上的所有东西。之后为了集群能运转起来,我们需要使用以下命令从 ceph 管理节点复制不同的密钥和配置文件到所有相关节点。
# ceph-deploy admin ceph-node ceph-storage

测试 Ceph
我们快完成了 Ceph 集群设置,让我们在 ceph 管理节点上运行下面的命令检查正在运行的 ceph 状态。
# ceph status
# ceph health
HEALTH_OK
如果你在 ceph status 中没有看到任何错误信息,就意味着你成功地在 CentOS 7 上安装了 ceph 存储集群。

H. 如何搭建ceph虚拟基础设施 windows环境

搭建虚拟化服务器,在Hyper-v管理器中,安装windows server 2012虚拟机系统。
打开Hyper-v管理器,右击hyper-v服务器—新建---虚拟机。
在弹出虚拟机新建向导页面,单击下一步。
指定虚拟机在Hyper-v中的显示名称,选择虚拟机的存储位置,选择完毕后,单击下一步。
根据虚拟机具体需求,分配内存。
选择虚拟机要使用的网络连接。
选择创建虚拟硬盘,指定虚拟硬盘的位置和大小。
选择安装介质,可使用物理CD/DVD驱动器安装,也可直接用映像文件进行安装。
虚拟机摘要中,确认相关信息无误后,单击完成,完成创建虚拟机向导。
打开Hyper-v管理器,右击新建的虚拟机,单击启动选项,开始安装虚拟机系统,再次右击虚机选择选项,即可打开虚拟机的控制台界面。
安装过程与物理机安装操作系统相同。

I. 如何基于Ceph构建高性能块存储服务

Ceph是一个分布式存储系统,支持对象文件快接口,设计目标是:
• 所有组件横向扩展
• 没有单点故障
• 可以在普通厂商硬件使用
• 所有机制都能自我管理
• 开源
分布式存储的应用场景相对于其存储接口,现在流行分为三种:
1.对象存储: 也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,如七牛、又拍,Swift,S3等。
2.块存储: 这种接口通常以QEMUDriver或者KernelMole的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RDB(RDB是Ceph面向块存储的接口)。
3、文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。
提到存储的种类就不得不提到另外一个话题:存储不能做统一化吗?因为必须要有多个不同的软件栈去管理不同的存储设备:SSD,SATA等。
Ceph就此提出了不同观点,RADOS提供了基础的存储设备的管理、数据控制流访问的管理,提供的是一个可靠持久的数据存储平台,基于其上,我们可以实现多个不同的接口户来实现面向不同需求的对接,比如对象存储我们有一个单独的库实现去满足不同的存储需要,比如我们块存储是通过RDP来实现。
统一存储并不意味着所有存储都的同一个接口,同一个实现,同一个软件栈,它其实只是使用了同一个设备管理的生命周期和数据访问的有效控制,它提供了一个相对合理,非常适合运维的,利于成本,利于软件可靠性控制的的机制去保证我们的存储的可靠。
举一个例子,大部分存储厂商甚至网络厂商都有一个自己的核心软件栈,如文件系内核。基于其上演化出各种不同的产品线。如果厂商要追求各个产品线的极致是不是就应该每个产品完全独立来追求极致,但事实上一个核心的底层技术栈需要高质量的代码、完备的测试和长期的使用。在Ceph这里,一个分布式系统的并发IO、分布式恢复、数据端到端校验等等关键实现是唯一实现,成熟的系统系统在这些实现上需要经过一定量级和时间的考验,这才是Ceph所谓的统一存储,而不是其他的接口堆叠式开发。
【Ceph和其他开源分布式存储、其他商用存储的区别之处在哪?】
众所周知,很多传统厂商如日立、富士通等存储大厂也采用了Ceph作为它们存储硬件的载体,Ceph能提供企业级的存储服务一定有它的优势,才能让传统的存储厂商弃而采用开源的存储方案。
1、中心化系统我们认为它在数据控制系统方面做的较好,在迁移运维方面提供较好的实现,但却有元数据的瓶颈。在访问数据时需要经过元数据服务器的查询再去寻找相应的数据服务器会在大规模扩展时遇到性能瓶颈问题。
2、全分布式系统虽然提供较好的数据访问能力,能高效处理客户端的LO请求,但是却没有提供一个非常好的数据控制的实现,比如故障处理能力不足,数据恢复的困难,如果跳出中心化的元数据存储系统它没办法做到强一致性的数据恢复。
弹性的数据分布策略和物理拓扑输入实现了高可用性和高持久性,Ceph的高性能重构还体现在利用CRush算法对数进行约束,避免数据分布到所有的集群的一个节点上,利用Ceph设计并提供的一个由CRush算法来支持一个高自由化的存储集群的设计,实现高可靠性,高持久性,高性能。

J. 如何使用国内源部署Ceph

Ceph是一个 Linux PB 级分布式文件系统。 其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是 "Sammy",一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。 Ceph 最初是一项关于存储系统的 PhD 研究项目,由 Sage Weil 在 University of California, SantaCruz(UCSC)实施。 简单定义为以下3项: 1. 可轻松扩展到数 PB 容量 2. 支持多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽) 3. 高可靠性 但是,这些目标之间会互相竞争(例如,可扩展性会降低或者抑制性能或者影响可靠性)。Ceph 的设计还包括保护单一点故障的容错功能,它假设大规模(PB 级存储)存储故障是常见现象而不是例外情况。 它的设计并没有假设某种特殊工作负载,但包括了适应变化的工作负载,并提供最佳性能的能力。它利用 POSIX 的兼容性完成所有这些任务,允许它对当前依赖 POSIX 语义(通过以 Ceph 为目标的改进)的应用进行透明的部署。 Ceph 生态系统架构可以划分为四部分: 1. Clients:客户端(数据用户) 2. cmds:Metadata server cluster,元数据服务器(缓存和同步分布式元数据) 3. cosd:Object storage cluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能) 4. cmon:Cluster monitors,集群监视器(执行监视功能)

热点内容
安卓如何玩手机游戏 发布:2024-05-21 10:03:15 浏览:109
好的少儿编程学校 发布:2024-05-21 10:02:38 浏览:439
c语言字符个数统计 发布:2024-05-21 09:54:31 浏览:415
ubuntupython文件 发布:2024-05-21 09:41:01 浏览:161
java后端接口 发布:2024-05-21 09:40:59 浏览:931
豪华尊贵分别对应哪些配置 发布:2024-05-21 09:40:56 浏览:621
逗号帮手体验密码是多少 发布:2024-05-21 09:31:44 浏览:131
vb数据库excel 发布:2024-05-21 09:18:57 浏览:319
资本论第一卷中央编译局 发布:2024-05-21 09:06:21 浏览:67
我的世界多人游戏服务器有哪些 发布:2024-05-21 09:02:48 浏览:590