ceph概述

 

基础知识

  • 什么是分布式文件系统

•  分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定 直接连接在本地节点上,而是通过计算机网络与节点相连

•  分布式文件系统的设计基于客户机/服务器模式

  • 常用分布式文件系统

•  Lustre

•  Hadoop

•  FastDFS

•  Ceph

•  GlusterFS

  • 什么是ceph

•  ceph是一个分布式文件系统

•  具有高扩展、高可用、高性能的特点

•  ceph可以提供对象存储、块存储、文件系统存储

•  ceph可以提供PB级别的存储空间(PBàTBàGB)

–  1024G*1024G=1048576G

•  软件定义存储(Software Defined Storage)作为存储行业的一大发展趋势,已经越来越     受到市场的认

  • ceph组件

OSDs:存储设备,ceph对象存储设备,它是唯一的真正存储数据的设备,只由OSD存储设备,它是一个进程,一般来说OSD关联到集群中的每块物理硬盘,所以集群中由多少块硬盘就有多少个OSD进程

Monitors(MON):集群监控组件,ceph通过一系列的映射表来监控集群状态,一般来说MON是奇数个

MDSs:存放文件系统的元数据服务器(对象存储和块存储不需要该组件),元数据是描述数据的数据,MDS为cephFS维护文件系统结构,存储元数据

Client:ceph客户端,需要单独安装组件

Ceph块存储

  • 什么是块存储

单机块设备:光盘,磁盘

分布式块存储:Ceph,Cinder

Ceph块设备也叫做RADOS块设备:RADOS block device:RBD

RBD驱动已经很好的集成在了Linux内核中

RBD提供了企业功能,如快照、COW克隆等等

RBD还支持内存缓存,从而能够大大提高性能

Linux内核可用直接访问Ceph块存储

KVM可用借助于librbd访问

实验环境准备

实验拓扑图

•  1台客户端虚拟机

•  3台存储集群虚拟机

                              

部署ceph集群

一,准备6台虚拟机

1.初始化

node1.tedu.cn  192.168.4.11

node2.tedu.cn  192.168.4.12

node3.tedu.cn  192.168.4.13

node4.tedu.cn  192.168.4.14

node5.tedu.cn  192.168.4.15

client.tedu.cn  192.168.4.10

2.将ceph光盘挂载到物理主机,以便将其作为yum源

2.1创建工作目录

在client上配置yum源

[root@client ~]# yum  -y install  httpd

[root@client ~]# systemctl  restart  httpd

[root@client ~]# systemctl  enable  httpd

[root@client ~]# mkdir  /var/www/html/ceph

2.2永久将光盘挂载到工作目录

[root@room9pc01~]#scp -r ceph 挂载镜像目录/*   192.168.4.10:/var/www/html/ceph

[root@room9pc01~]#scp -r cluster相关软件 /ceph/rhcs2.0-rhosp9-20161113-x86_64.iso  192.168.4.10:/root

[root@client~]#vim /etc/fstab/root/rhcs2.0-rhosp9-20161113-x86_64.iso    /var/www/html/ceph  iso9660   defaults  0 0

[root@client ~]# mount  -a

再修改client的yum源,本地http://var/www/html/ceph

2.3 yum源需要系统和ceph光盘两个源,注意:ceph光盘/var/www/html/ceph/rhceph-2.0-rhel-7-x86_64/目录4.10作为客户端yum源

[root@node1 ~]# vim  /etc/yum.repos.d/dvd.repo

[dvd]

name=123

baseurl=http://192.168.4.254/rh7dvd  真机yum源

enable=1

gpgcheck=0

以下全部是4.10作为客户端yum源

[mon]

name=mon

baseurl=http://192.168.4.10/ceph/rhceph-2.0-rhel-7-x86_64/MON

enable=1

gpgcheck=0

[osd]

name=osd

baseurl=http://192.168.4.10/ceph/rhceph-2.0-rhel-7-x86_64/OSD

enable=1

gpgcheck=0

[Tools]

name=Tools

baseurl=http://192.168.4.10/ceph/rhceph-2.0-rhel-7-x86_64/Tools

enable=1

gpgcheck=0

3.脚本拷贝yum源

[root@node1 ~]# for  i  in  {10..15}

> do

> scp  /etc/yum.repos.d/dvd.repo  192.168.4.$i:/etc/yum.repos.d/

> done

4.将node1作为管理节点,为其生成SSH密钥,可以免密登录其他节点

[root@node1 ~]# ssh-keygen  -f  /root/.ssh/id_rsa  -N  ''

[root@node1 ~]# for  i  in {10..15}

> do

> ssh-copy-id  192.168.4.$i

> done

5.通过hosts文件配置名称解析只写进本机的循环

[root@node1 ~]# for  i  in  {1..5}

> do

> echo -e  "192.168.4.1$i\tnode$i.tedu.cn\tnode$i"  >>  /etc/hosts

> done

[root@node1 ~]#echo -e "192.168.4.10\tclient.tedu.cn\tclient" >>  /etc/hosts

[root@node1 ~]# for  i  in  {10..15}

> do

> scp  /etc/hosts  192.168.4.$i:/etc/

> done

配置192.168.4.10为NTP服务器

1).安装时间软件

[root@client ~]# yum  -y   install   chrony

[root@client ~]# vim  /etc/chrony.conf

#server 0.rhel.pool.ntp.org iburst

#server 1.rhel.pool.ntp.org iburst

#server 2.rhel.pool.ntp.org iburst

server 3.rhel.pool.ntp.org iburst

26 allow 192.168.4.0/24

29 local stratum 10  第几层的时间服务器

2).重起服务

[root@client ~]# systemctl   restart   chronyd

3).配置node1--node5 为NTP客户端

[root@client ~]# for  i  in  {1..5}

> do

> ssh  node$i  yum  -y  install  chrony

> done

4).配置文件

[root@node1 ~]# vim  /etc/chrony.conf

server 192.168.4.10 iburst    //其他三行注释,只留此行

[root@node1 ~]# systemctl   restart   chronyd

[root@node1 ~]# for  i  in  {2..5}

> do

> scp  /etc/chrony.conf   node$i:/etc/

> done

[root@node1 ~]# for  i  in  {2..5}

> do

> ssh  node$i  systemctl  restart  chronyd

> done

5).node1/node2/node3为共享存储提供硬盘,每个节点加三个硬盘,每个硬盘大小

10GB

•  物理机上为每个虚拟机创建3个磁盘

[root@root9pc01~]#cd /var/lib/libvirt/images

[root@root9pc01~]#qemu-img create -f qcow2 node1-vdb.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node1-vdc.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node1-vdd.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node2-vdb.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node2-vdc.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node2-vdd.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node3-vdb.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node3-vdc.vol 10G

[root@root9pc01~]#qemu-img create -f qcow2 node3-vdd.vol 10G

•  在图形环境中为虚拟机添加磁盘

[root@root9pc01~]#virt-manager

6).在node1上安装ceph管理软件ceph-deploy

[root@node1 ~]# yum  -y  install   ceph-deploy准备存储磁盘

7).创建ceph-deploy的工作目录

[root@node1 ~]# mkdir  ceph-cluster

[root@node1 ~]# cd  ceph-cluster

8).生成管理集群的配置文件和密钥文件

[root@node1 ceph-cluster]# ceph-deploy  new  node{1,2,3}

[root@node1 ceph-cluster]# ls

ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring

9).为所有节点安装ceph软件包

[root@node1 ceph-cluster]# ceph-deploy  install  node{1,2,3}

10).初始化mon服务(主机名解析必须对)

[root@node1 ceph-cluster]# ceph-deploy  mon  create-initial

这里没有指定主机,是因为第一步创建的配置文件中已经有了,所以要求主机名解析必须对,否则连接不到对应的主机

11).为所有节点准备磁盘分区,用来做存储服务器的日志盘

[root@node1 ceph-cluster]# for  i  in  {1..3}

> do

> ssh  node$i  parted  /dev/vdb  mklabel  gpt

> ssh  node$i  parted  /dev/vdb  mkpart  primary  1M  50%

> ssh  node$i  parted  /dev/vdb  mkpart  primary  50%  100%

> done

[root@node1 ceph-cluster]# for  i  in  {1..3}

> do

> ssh  node$i  lsblk

> done

[root@node1 ceph-cluster]# for  i  in  {1..3} 属主属组必须是ceph

> do

> ssh  node$i  chown   ceph.ceph   /dev/vdb1

> ssh  node$i  chown   ceph.ceph   /dev/vdb2

> done

[root@node1 ceph-cluster]# for  i  in  {1..3}

> do

> ssh  node$i   ls  -lh  /dev/vdb?

> done

12).查看磁盘

[root@node1 ceph-cluster]# ls  -ld  /dev/vdb?

brw-rw----. 1 ceph ceph 252, 17 5月  21 14:54 /dev/vdb1

brw-rw----. 1 ceph ceph 252, 18 5月  21 14:54 /dev/vdb2

这两个分区用来做存储服务器的日志journal盘

13).配置OSD,初始化磁盘

[root@node1 ceph-cluster]# for  i   in  {1..3}

> do

> ceph-deploy   disk zap  node$i:vdc  node$i:vdd

> done

14).创建OSD存储空间,在node1上做

[root@node1 ceph-cluster]# for  i  in  {1..3}

> do

> ceph-deploy  osd  create  node$i:vdc:/dev/vdb1  node$i:vdd:/dev/vdb2

> done

15).查看ceph状态

[root@node1 ceph-cluster]# ceph  -s

cluster 7e157181-1c02-4607-92f4-38ee9e36ca54

health HEALTH_OK

如果正常的话,可以看到health  HEALTH_OK

1.如果是HEALTH_ERR,可以重启服务

[root@node1 ceph-cluster]# for  i  in  {1..3}

> do

> ssh  node$i  systemctl  restart  ceph\*.service  ceph\*.target

> done

在所有节点,或仅在失败的节点重启服务

2.可能出现的错误

osd create创建OSD存储空间,如提示run  'gatherkeys’

[root@node1 ~]#  ceph-deploy  gatherkeys  node1  node2  node3

排错:如果ceph节点关机重启,/dev/vdb1,/dev/vdb2属主属组又变成了root:disk,ceph-osd\*服务就起不来,可以先chown  ceph:ceph  /dev/vdb1,chown  ceph:ceph  /dev/vdb2,然后systemctl  start  ceph-osd\*,将有报错信息,最后一行提示先执行systemctl  reset  XXX,再执行systemctl  start  ceph-osd\*,

重启系统,还希望vdb1/vdb2属主是ceph,则

[root@node1 ceph-cluster]# vim   /etc/udev/rules.d/10-chowndis.rules

ACTION=="add",KERNEL=="vdb[12]",OWNER="ceph",GROUP="ceph"

 


部署Ceph集群

  • 使用ceph块设备

1.块设备存在于存储池中,默认ceph集群已有有一个名为rdb池

[root@node1 ceph-cluster]#  ceph  osd  lspools

0 rbd,

2.在默认池里创建一个名为demo-image的镜像,镜像可以当成远程主机的硬盘

[root@node1 ceph-cluster]# rbd  create  demo-image  --image-feature  layering --size  10G

3.指定在rdb池中创建一个名为image镜像

[root@node1 ceph-cluster]# rbd create  rbd/image --image-feature  layering --size  10G

4.查看镜像信息

[root@node1 ceph-cluster]# rbd  ls

demo-image

image

[root@node1 ceph-cluster]# rbd  info  image

rbd image 'image':

size 10240 MB in 2560 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.16fa0238e1f29

format: 2

features: layering

flags:

5.缩减/增容镜像

[root@node1 ceph-cluster]# rbd  resize  --size  7G  image --allow-shrink  缩小镜像

[root@node1 ceph-cluster]# rbd  info  image

rbd image 'image':

size 7168 MB in 1792 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.16fa0238e1f29

format: 2

features: layering

flags:

[root@node1 ceph-cluster]# rbd  resize  --size  15G image  增大镜像

[root@node1 ceph-cluster]# rbd  info  image

rbd image 'image':

size 15360 MB in 3840 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.16fa0238e1f29

format: 2

features: layering

flags:

6.如果需要使用ceph的块存储,那么首先要把ceph镜像映射到本地

[root@node1 ceph-cluster]# lsblk    //此时还没有ceph存储

[root@node1 ceph-cluster]# rbd map demo-image

/dev/rbd0

[root@node1 ceph-cluster]# lsblk    //此时多了一个10GB的/dev/rbd0

rbd0          251:0    0   10G  0 disk

[root@node1 ceph-cluster]# mkfs.xfs /dev/rbd0

[root@node1 ceph-cluster]# mount /dev/rbd0 /mnt/

[root@node1 ceph-cluster]# df -h /mnt/

文件系统          容量    已用     可用    已用% 挂载点

/dev/rbd0          10G      33M      10G       1%      /mnt

[root@node1 ceph-cluster]# cp /etc/hosts /mnt/   //此步骤只是测试共享存储可用

[root@node1 ceph-cluster]# cat /mnt/hosts

配置ceph客户端

1、安装软件包

[root@client ~]# yum install -y ceph-common

2、为了让客户端能够找到集群,需要集群配置文件

[root@node1 ceph-cluster]# scp /etc/ceph/ceph.conf  192.168.4.10:/etc/ceph/

3、客户端访问集群,需要授权,可以为客户端创建用户,也可以使用默认创建的admin帐户

[root@node1ceph-cluster]#scp /etc/ceph/ceph.client.admin.keyring 192.168.4.10:/etc/ceph/

4、使用ceph块设备

[root@client ~]# rbd ls

demo-image

Image

[root@client ~]# rbd map image

/dev/rbd0

[root@client ceph]# lsblk

loop0           7:0    0 935.4M  0 loop /var/www/html/ceph

[root@client ~]# mkfs.xfs  /dev/rbd0

[root@client ~]# rbd showmapped    查看ceph块设备信息

id pool image snap device

0  rbd  image -    /dev/rbd0

[root@client ~]# mount /dev/rbd0 /mnt/

[root@client ~]# echo 'Hello ceph' > /mnt/mytest.txt  # 只是测试查看ceph存储的大小

[root@node1 ceph-cluster]# rados df

管理快照

快照:某一状态点的镜像,将来有任何误操作,都可以通过还原快照来恢复

1、查看image的快照

[root@client ~]# rbd snap ls image

2、为image创建名为image-snap1的快照

[root@client ~]# rbd snap create image --snap image-snap1

[root@client ~]# rbd snap ls image

SNAPID  NAME           SIZE

4      image-snap1    15360 MB

快照使用COW技术,对大数据快照速度会很快!

3、模拟误删除操作

(1)删除文件

[root@client ~]# cat /mnt/mytest.txt

Hello ceph

[root@client ~]# rm -f /mnt/mytest.txt

(2)卸载存储并还原快照

[root@client ~]# umount /mnt/

[root@client ~]# rbd snap rollback image --snap image-snap1

(3)挂载存储,检查数据是否恢复

[root@client ~]# mount /dev/rbd0 /mnt/

[root@client ~]# ll /mnt/

[root@client ~]# cat /mnt/mytest.txt

克隆镜像

如果想从快照恢复出来一个新的镜像,则可以使用克隆

注意,克隆前,需要对快照进行<保护>操作,被保护的快照无法删除,取消保护(unprotect)

1、通过快照进行镜像克隆,首先保护快照

[root@client ~]# rbd snap protect image --snap image-snap1

2、创建名为image-clone的克隆镜像

[root@client ~]# rbd clone image --snap image-snap1 image-clone --image-feature layering

3、查看克隆镜像与父镜像关系

[root@client ~]# rbd  info image-clone

rbd image 'image-clone':

size 15360 MB in 3840 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.1218d238e1f29

format: 2

features: layering

flags:

parent: rbd/image@image-snap1

overlap: 15360 MB

4、合并克隆镜像,使之成为一个整体

克隆镜像很多数据都来自于快照链

如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!

[root@client ~]# rbd flatten image-clone

[root@client ~]# rbd  info image-clone   已经没有父镜像了

rbd image 'image-clone':

size 15360 MB in 3840 objects

order 22 (4096 kB objects)

block_name_prefix: rbd_data.1218d238e1f29

format: 2

features: layering

flags:

删除操作

1、取消RBD映射

[root@client ~]# umount /mnt/

[root@client ~]# rbd unmap /dev/rbd/rbd/image

[root@client ~]# lsblk   没有rbd0了

NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sr0            11:0    1  1024M  0 rom

vda           252:0    0    20G  0 disk

├─vda1        252:1    0     1G  0 part /boot

└─vda2        252:2    0    19G  0 part

├─rhel-root 253:0    0    17G  0 lvm  /

└─rhel-swap 253:1    0     2G  0 lvm  [SWAP]

loop0           7:0    0 935.4M  0 loop /var/www/html/ceph

2、删除快照

[root@client ~]# rbd snap unprotect image --snap image-snap1  取消保护

[root@client ~]# rbd snap rm image --snap image-snap1

3、删除镜像

[root@client ~]# rbd list

demo-image

image

image-clone

[root@client ~]# rbd rm image

[root@node1 ceph-cluster]# rbd list

demo-image

image-clone

ceph概述的更多相关文章

  1. Ceph 概述和理论

    1.1 Ceph概述 官网地址:https://docs.ceph.com/docs/master/ 1.Ceph简介 概述:Ceph是可靠的.可扩展的.统一的.分布式的存储系统.同时提供对象存储RA ...

  2. 二十八. Ceph概述 部署Ceph集群 Ceph块存储

    client   :192.168.4.10 node1 :192.168.4.11 ndoe2 :192.168.4.12 node3 :192.168.4.13   1.实验环境 准备四台KVM虚 ...

  3. CEPH集群操作入门--配置

      参考文档:CEPH官网集群操作文档   概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ...

  4. ceph笔记(一)

    一.ceph概述本质上是rados:可靠的.自动的.分布式对象存储特性:高效性(大型的网络raid,性能无限接近raid).统一性(支持文件存储.块存储.对象存储).可扩展性数据库的一个弱点:查表ce ...

  5. CentOS7下搭建Ceph分布式存储架构

    (1).Ceph概述 Ceph是为了优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统,并且还是一个开源的分布式文件系统.因为其支持块存储.对象存储,所以很自然的被用做云计算框架opensta ...

  6. 001.Ceph简介概述

    一 Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同 ...

  7. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  8. 理解 OpenStack + Ceph (3):Ceph RBD 接口和工具 [Ceph RBD API and Tools]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  9. ceph之纠删码

    转自:http://m.blog.csdn.net/blog/skdkjxy/45695355 一.概述 按照误码控制的不同功能,可分为检错码.纠错码和纠删码等. 检错码仅具备识别错码功能 而无纠正错 ...

随机推荐

  1. JS实战(京东秒杀)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 一致性hash算法之php实现

    源码地址:https://github.com/killallspree/myFrame/blob/master/framework/components/Flexihash.php

  3. MySQL使用前查看状态

    1.检查MySQL服务器是否启动:ps -ef | grep mysqld 如果MySql已经启动,以上命令将输出mysql进程列表,如下所示:mysql下一行 如果mysql未启动,你可以使用以下命 ...

  4. lesson01

    题目: Action3:  统计全班的成绩 班里有5名同学,现在需要你用numpy来统计下这些人在语文.英语.数学中的平均成绩.最小成绩.最大成绩.方差.标准差.然后把这些人的总成绩排序,得出名次进行 ...

  5. js 实现弹性运动的简单应用----导航栏中弹性

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. DOM-XSS攻击原理与防御

    XSS的中文名称叫跨站脚本,是WEB漏洞中比较常见的一种,特点就是可以将恶意HTML/JavaScript代码注入到受害用户浏览的网页上,从而达到劫持用户会话的目的.XSS根据恶意脚本的传递方式可以分 ...

  7. Netty Hello World 入门源码分析

    第一节简单提了什么是网络编程,Netty 做了什么,Netty 都有哪些功能组件.这一节就具体进入 Netty 的世界,我们从用 Netty 的功能实现基本的网络通信开始分析 各个组件的使用. 1. ...

  8. 原来rollup这么简单之 rollup.watch篇

    大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 大家的支持是我创作的动力. 计划 rollup系列打算一章一章的放出 ...

  9. iframe框架及优缺点

    iframe框架及优缺点 HTML5不再支持使用frame,关于frame与iframe的区别,可以参阅 iframe与frame的区别 基本使用 src:规定在iframe中显示的文档的URL. f ...

  10. 题解 P6249 【神帖】

    这道题目我一看到就想起了经典题--关路灯 但是时间好像不太好搞啊! 我们可以枚举时间qwq 考虑 \(4\) 维 \(dp\) \(f_{i,j,t,0/1}\) 表示 \(zrl\) 看了第 \(i ...