Ceph存储

第一章:存储概念介绍

什么是存储storage

简单来说,存储就是存放数据的介质,我们平时最常见的存储就是U盘、移动硬盘、笔记本使用的机械或固态硬盘等等。

在服务器领域,为了数据的安全性,业务数据一般要与系统分开而且重要的业务数据一般是通过某种共享技术(nfs)挂载到远程存储上的,这样即是为了安全,也是为了高可用性。比如:音视频网站,存放音视频的目录一般不能放在根分区下,以防系统挂掉的时候,需要重新系统时,音视频数据还在,同时,由于音视频数据量太大,不可能说把音视频的数据放在本地服务器的磁盘空间上,因为本地服务器的能插硬盘的槽总是有限的,这时我们就引入一个远程存储的概念,即把音视频存放到远程存储上去。在服务器领域,我们一般使用的存储柜。

简单的而言,就是柜子,里面插了好多硬盘,组成了很大的存储空间。

存储的分类
  • DAS直连式存储(direct assess/attach storage)如:机箱里的disk,或通过接口直连到系统总线上的disk(如U盘,移动硬盘),直连存储不受网速限制,速度快,扩容有上限;
  • NAS网络附加存储(network attched storage):常见的技术有nfs、Samba、ftp,NAS共享的是目录,应用服务器直接mount挂载就可以使用,NAS速度受网络影响,但扩容方便,几乎无上限;
  • SAN存储区域网络(storage area network):常见的技术有 scsi、Ceph等,共享的是块设备sdb、dbc,应用服务器挂载之后还需要分区、格式化之后才能使用;
存储类型的分类
  • 文件存储:类似于一个大目录,多个客户端都可以挂载过来使用,优点是利于数据共享,即多个客户端挂载之后数据是共享的,缺点是数据传输速度受网络因素影响, NAS属于这一种,简单来说就是mount后直接使用;

  • 块存储:类似于一个block块设备,客户端可以分区、格式化,挂载并使用,和使用本地一个硬盘一样,受网络因素影响,缺点是数据不共享,即各个客户端自定义自己的块设备分区、格式化,挂载并使用, SAN都属于这一类,简单来说就是类似于/dev/sdb这种,要分区、格式化后才能使用;

  • 对象储存OSS:对象存储主要面向存储大量的非结构化数据,通俗来说,我们日常生活中生成的照片、视频、音频、文档等都属于非结构化数据。这些日常产生的数据都适合存储在对象存储中。

    随着互联网的爆发,数据存储需求发生了两个重大的变化:

    1. 就是数据量爆炸式增长,Web应用的崛起、社交需求的刺激,极大地推动了多媒体内容的创作和分享。人们开始上传大量的照片、音乐、视频,加剧了数据量的爆发。

    2. 是非结构化数据的占比显著增加:
      什么是非结构化数据?我们经常做的excel表格,姓名、身高、体重、年龄、性别,这种用二维表结构可以进行逻辑表达的数据,就是结构化数据。而图像、音频、视频、word文章、演示胶片这样的数据,就是非结构化数据。面对这两大趋势,因为本身技术和架构的限制,DAS、SAN和NAS无法进行有效应对。于是,专家们就搞出了对象存储。

      对象存储 COS 是在云上提供无层次结构的分布式存储产品,为用户提供单价较低且快速可靠的数据存储方案。COS 以冗余的方式跨多个可用区存储用户数据,并允许多个不同的客户端或应用程序线程同时对这些数据进行读或写操作。

什么是分布式存储

前边介绍的NAS是远程网络共享目录,SAN是远程通过网络共享块设备,那么分布式存储可以看做拥有多台存储服务器连接起来的存储设备端,把多台存储服务器的存储组合起来做成一个整体,然后再通过网络进行远程共享,共享的方式可以是目录(文件存储)或块设备(块存储)或者对象存储,常见的分布式存储开源软件有GlusterFS,Ceph,HDFS ,MooseFS,FastDFS等。

分布式存储的优点

1、扩容方便,轻松达到PB级别或以上;
2、提升读写性能(LB)或数据高可用(HA);
3、避免单节点故障导致整个架构问题;
4、价格相对便宜,大量的廉价设备就可以组成分布式存储,比光纤SAN这种便宜;

第二章:Ceph分布式存储

Ceph介绍

Ceph是一个能提供文件存储、块存储、对象存储的分布式存储文件系统,它提供了一个可无限伸缩的Ceph存储集群。

Ceph名词术语

RADOS:Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的, 用户数据的存储最终也都是通过这一层来进行存储的,可以说RADOS就是ceph底层原生的数据引擎, 但实际应用时却不直接使用它,而是分为如下4种方式来使用:LIBRADOS、CEPH FS、RBD、RADOSGW

  • LIBRADOS是一个库, 它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言。如Python,C,C++等,简单来说,就是给开发人员使用的接口。
  • CEPH FS 通过Linux内核客户端和FUSE来提供文件系统。(文件存储)
  • RBD 通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。(块存储)
  • RADOSGW 是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。(对象存储)

Ceph集群包括三种守护进程:Ceph OSD、Ceph Monitor、mgr;

  • Ceph OSD(object storage device):功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitor提供一些监控信息,我们可以简单理解OSD为磁盘设备。
  • Ceph Monitor:是一个监视器,监视Ceph集群状态和维护集群中的各种关系。
  • Manager:集群管理守护进程

Ceph存储集群至少需要1个Ceph Monitor和2个OSD守护进程。

Ceph集群环境准备

准备3个干净的存储服务器+1个干净的客户端服务器,3个存储服务器都挂载1块新磁盘,不用分区;

主机名 角色 IP地址 硬件配置
node01 mon+osd+mgr+deploy 192.168.0.20 4C/4G/50G系统盘/50G不分区
node02 mon+mgr+osd 192.168.0.21 4C/4G/50G系统盘/50G不分区
node03 mon+mgr+osd 192.168.0.22 4C/4G/50G系统盘/50G不分区
client 客户端 192.168.0.23

前期环境准备:

1)配置服务器时间同步(脚本实现)

2)关闭防火墙与SELinux(脚本实现)

3)修改主机名

4)配置服务器之间主机名与IP地址相互解析

5)配置阿里Base源与epel源(脚本实现)

6)配置Ceph源

7)node1部署节点免密链接其他集群节点

注: 配置4个服务器的主机名 与IP地址相互解析

cat /etc/hosts
192.168.0.20 node01
192.168.0.21 node02
192.168.0.22 node03
192.168.0.23 client
配置ssh免密登

此步骤不是必须,如果使用ceph-deploy来安装集群,免密会比较方便;

以node01为部署节点,在node01上配置免密登录;

[root@node01 ~]# ssh-keygen
[root@node01 ~]# for node in node01 node02 node03 client
do
ssh-copy-id $node
done

注: 4台服务器都配置好公网的centos7源+epel源+Ceph源

cat > /etc/yum.repos.d/ceph.repo<<'EOF'
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=https://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1
EOF

以上环境准备完毕开始搭建集群。

创建Ceph集群

以node1为部署节点, ceph-deploy是一个ceph官方维护的基于ceph-deploy命令行部署ceph集群的工具,基于ssh执行sudo权限的shell命令以及一些python脚本实现ceph集群的部署和管理维护。

[root@node01 ~]# yum install ceph-deploy -y

注:ceph-deploy只用于部署和管理ceph集群,客户端需要访问ceph,需要部署客户端工具。

在node1上创建集群

[root@node01 ~]# mkdir /etc/ceph
[root@node01 ~]# cd /etc/ceph


创建一个集群,node01是主机名,不是集群名
[root@node01 ceph]# ceph-deploy new node01		

Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>    
#报错了,原因是缺python-setuptools,安装它即可


安装python-setuptools依赖
[root@node01 ceph]# yum install -y python-setuptools			


继续创建一个集群,node01是主机名,不是集群名
[root@node01 ceph]# ceph-deploy new node01           			
#...
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph自动生成一个名叫ceph的集群


查看一下生成了哪些文件
[root@node01 ceph]# ls			
ceph.conf				集群配置文件			
ceph-deploy-ceph.log	使用ceph-deploy部署的日志记录
ceph.mon.keyring        mon的验证key文件

Ceph集群所有节点安装ceph、ceph-radosgw(对象存储)

[root@node01 ceph]# yum install ceph ceph-radosgw -y			</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栀寒老醑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值