ceph

快照:可用做备份

一、ceph概述

1.1 什么是分布式文件系统

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

1.2 常用分布式文件系统

•  Lustre
•  Hadoop
•  FastDFS
•  Ceph
•  GlusterFS

1.3 什么是ceph

•  ceph是一个分布式文件系统
•  具有高扩展、高可用、高性能的特点
•  ceph可以提供对象存储、块存储、文件系统存储
•  ceph可以提供PB级别的存储空间(PBàTBàGB)
–  1024G*1024G=1048576G
•  软件定义存储(Software Defined Storage)作为存储
行业的一大发展趋势,已经越来越受到市场的认可

1.4 ceph组件

•  OSDs   [有几个OSD就有几个ceph-osd进程 ]
–  存储设备
•  Monitors  [存储集群的入口]
–  集群监控组件
•  MDSs
–  存放文件系统的元数据(对象存储和块存储不需要该组件)
•  Client
–  ceph客户端  [需要拷贝服务端存储的配置文件,和验证文件]

二、ceph实验环境准备

2.1 实验拓扑图

•  1台客户端虚拟机
•  3台存储集群虚拟机

2.2 配置YUM

2.1.1  物理机创建网络yum源服务器

[root@root9pc01    ~]#    yum    -y    install    vsftpd    
[root@root9pc01    ~]#    mkdir        /var/vsftp/ceph    
[root@root9pc01    ~]#    mount    -o    loop    \    
rhcs2.0-rhosp9-20161113-x86_64.iso        /var/vsftp/ceph    
[root@root9pc01    ~]#    systemctl        restart        vsfpd

2.1.2 虚拟机调用YUM源(下面以node1为例)

[root@node1    ~]#    cat    /etc/yum.repos.d/ceph.repo    
[mon]    
name=mon    
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON    
gpgcheck=0    
[osd]    
name=osd    
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD    
gpgcheck=0    
[tools]    
name=tools    
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools    
gpgcheck=0

2.3 配置SSH无密钥连接

2.3.1 修改主机名

[root@node1    ~]#    cat    /etc/hosts    
…    …    
192.168.4.10                                client    
192.168.4.11
    node1    
192.168.4.12
    node2    
192.168.4.13
    node3    
[root@node1    ~]#    for    i    in    10        11        12        13    
>    do    
>    scp        /etc/hosts        192.168.2.$i:/etc/    
>    done

2.3.2 非交互生成密钥对

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

2.3.3 发布密钥到各个主机(包括自己)

[root@node1    ~]#    for    i    in    10        11        12        13    
>    do    
>    ssh-copy-id        192.168.4.$i    
>    done

2.4 NTP时间同步

2.4.1 客户端创建NTP服务器

[root@client    ~]#  yum    -y    install    chrony    
[root@client    ~]#  cat    /etc/chrony.conf    
server 0.rhel.pool.ntp.org iburst
allow    192.168.4.0/24
local    stratum    10    
[root@client    ~]#    systemctl        restart        chronyd

2.4.2 其他所有主机与其同步时间(下面以node1为例)

[root@node1    ~]#        cat    /etc/chrony.conf    
server    192.168.4.10            iburst    
[root@node1    ~]#    systemctl        restart        chronyd

2.5 准备存储磁盘

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

[root@root9pc01    ~]#    virt-manager

三、部署Ceph集群

3.1 准备部署环境

3.1.1  安装部署软件

•  使用node1作为部署主机
[root@node1    ~]#        yum    -y    install    ceph-deploy    
•  ceph-deploy命令与子命令都支持–help查看帮助
[root@node1    ~]#        ceph-deploy        –help

3.1.2  创建目录

•  为部署工具创建目录,存放密钥与配置文件
[root@node1    ~]#        mkdir    ceph-cluster    
[root@node1    ~]#        cd    ceph-cluster/

3.2 部署存储集群

3.2.1 创建ceph集群

•  创建ceph集群配置(所有节点都为mon)
[root@node1    ceph-cluster]#        ceph-deploy    new    node1    node2    node3    
•  给所有节点安装ceph软件包
[root@node1    ceph-cluster]#    ceph-deploy    install    node1    node2    node3    
•  初始化所有节点的mon服务(主机名解析必须对)
[root@node1    ceph-cluster]#    ceph-deploy    mon    create-initial    
//这里没有指定主机,是因为第一步创建的配置文件中已经有了,所以要求主机名解析必须对,否则连接不到对应的主机

3.2.2 创建OSD

1. 所有节点准备磁盘分区(下面以node1为例)
[root@node1    ~]#        parted        /dev/vdb        mklabel        gpt    
[root@node1    ~]#        parted        /dev/vdb        mkpart    primary        1M        50%    
[root@node1    ~]#        parted        /dev/vdb        mkpart    primary        50%        100%    
 //这两个分区用来做存储服务器的日志journal盘

vim /etc/udev/rules.d/100-ceph.rules    //通过udev管理日志磁盘权限,采用这种方式可以在重启机器之后,集群状态正常
ACTION==”add”, KERNEL==”vdb?”,SUBSYSTEM==”block”, OWNER=”ceph”,GROUP=”ceph”   
[root@node2 rules.d]# systemctl restart systemd-udev-trigger.service

//通过命令行修改日志磁盘,这种方式临时修改的,重启机器集群状态不正常.[]
[root@node1    ~]#    chown        ceph.ceph        /dev/vdb1    
[root@node1    ~]#    chown        ceph.ceph        /dev/vdb2

2. 初始化清空磁盘数据(仅node1操作即可)
[root@node1    ~]#    ceph-deploy    disk        zap        node1:vdc            node1:vdd                
[root@node1    ~]#    ceph-deploy    disk        zap        node2:vdc            node2:vdd
[root@node1    ~]#    ceph-deploy    disk        zap        node3:vdc            node3:vdd                    
3. 创建OSD存储空间(仅node1操作即可)
[root@node1    ~]#    ceph-deploy    osd    create    node1:vdc:/dev/vdb1    node1:vdd:/
dev/vdb2            
//创建osd存储设备,vdc为集群提供存储空间,vdb1提供JOURNAL
日志,一个存储设备对应一个日志设备,日志需要SSD,不需要很大
[root@node1    ~]#    ceph-deploy    osd    create    node2:vdc:/dev/vdb1    node2:vdd:/
dev/vdb2    
[root@node1    ~]#    ceph-deploy    osd    create    node3:vdc:/dev/vdb1    node3:vdd:/
dev/vdb2

3.3 验证

3.3.1 查看集群状态

[root@node1    ~]#        ceph        -s

3.3.2 可能出现的错误

–  osd create创建OSD存储空间,如提示run
‘gatherkeys’
[root@node1    ~]#        ceph-deploy    gatherkeys    node1    node2    node3        
–  ceph -s查看状态,如果失败
[root@node1    ~]#        systemctl    restart    ceph\*.service    ceph\*.target    
//在所有节点,或仅在失败的节点重启服务

– 时间同步失败

~] #  vim  /etc/ceph/ceph.conf

vim /etc/ceph/ceph.conf
mon clock drift allowed = 2
mon clock drift warn backoff = 30

cp /etc/ceph/ceph.conf /root/ceph-cluster
cd /root/ceph-cluster
ceph-deploy –overwrite-conf admin node2 node3    //同步配置文件

在所有monitor主机上重启ceph-mon@\*服务

systemctl restart ceph-mon@node1                         
systemctl restart ceph-mon@node2
systemctl restart ceph-mon@node3

四、Ceph块存储  【提供硬盘】

4.1 概述

4.1.1 什么是块存储

什么是块存储
•  单机块设备
–  光盘
–  磁盘
•  分布式块存储
–  Ceph
–  Cinder

•  Ceph块设备也叫做RADOS块设备
–  RADOS block device:RBD
•  RBD驱动已经很好的集成在了Linux内核中
•  RBD提供了企业功能,如快照、COW克隆等等
•  RBD还支持内存缓存,从而能够大大提高性能

•  Linux内核可用直接访问Ceph块存储
•  KVM可用借助于librbd访问

4.2 块存储集群

4.2.1 创建镜像

•  查看存储池(默认有一个rbd池)
[root@node1    ~]#    ceph    osd    lspools    
0    rbd,    
•  创建镜像、查看镜像
[root@node1    ~]#    rbd    create    demo-image    –image-feature        layering    –size    10G    
[root@node1    ~]#    rbd    create    rbd/image    –image-feature        layering    –size    10G    
[root@node1    ~]#    rbd    list    
[root@node1    ~]#    rbd    info    demo-image    
rbd    image    ‘demo-image’:    
    size    10240    MB    in    2560    objects    
    order    22    (4096    kB    objects)    
    block_name_prefix:    rbd_data.d3aa2ae8944a    
    format:    2    
    features:    layering

4.2.2 动态调整大小

•  缩小容量
[root@node1    ~]#    rbd    resize    –size    7G    image    –allow-shrink    
[root@node1    ~]#    rbd    info    image    
•  扩容容量
[root@node1    ~]#    rbd    resize    –size    15G    image    
[root@node1    ~]#    rbd    info    image

4.2.3 集群内通过KRBD访问

•  将镜像映射为本地磁盘
[root@node1    ~]#    rbd    map    demo-image    
/dev/rbd0    
[root@node1    ~]#    lsblk    
…    …    
rbd0                                        251:0                0            10G        0    disk    
•  接下来,格式化了!
[root@node1    ~]#    mkfs.xfs    /dev/rbd0    
[root@node1    ~]#    mount        /dev/rbd0        /mnt

4.2.4 客户端通过KRBD访问

•  客户端需要安装ceph-common软件包
•  拷贝配置文件(否则不知道集群在哪)
•  拷贝连接密钥(否则无连接权限)
[root@client    ~]#    yum    -y        install    ceph-common    
[root@client    ~]#    scp    192.168.4.11:/etc/ceph/ceph.conf        /etc/ceph/    
[root@client    ~]#    scp    192.168.4.11:/etc/ceph/ceph.client.admin.keyring    \    
/etc/ceph/    
•  映射镜像到本地磁盘
[root@client    ~]#    rbd    map    image    
[root@client    ~]#        lsblk    
[root@client    ~]#    rbd    showmapped    
id    pool    image    snap    device                    
0        rbd        image    -                /dev/rbd0

•  客户端格式化、挂载分区
[root@client    ~]#    mkfs.xfs    /dev/rbd0    
[root@client    ~]#    mount    /dev/rbd0    /mnt/    
[root@client    ~]#    echo    “test”    >    /mnt/test.txt

4.2.5 创建镜像快照

•  查看镜像快照
[root@node1    ~]#    rbd    snap    ls    image    
•  创建镜像快照
[root@node1    ~]#    rbd    snap    create    image    –snap    image-snap1    
[root@node1    ~]#    rbd    snap    ls    image    
SNAPID    NAME                   SIZE        
        4    image-snap1    15360    MB    
•  注意:快照使用COW技术,对大数据快照速度会很快!

4.2.6 使用快照恢复数据

•  删除客户端写入的测试文件
[root@client    ~]#    rm        -rf            /mnt/test.txt    
•  还原快照
[root@node1    ~]#    rbd    snap    rollback    image    –snap    image-snap1    
•  客户端重新挂载分区
[root@client    ~]#    umount        /mnt    
[root@client    ~]#    mount    /dev/rbd0    /mnt/    
[root@client    ~]#    ls        /mnt

4.2.7 快照克隆

•  如果想从快照恢复出来一个新的镜像,则可以使用克隆
•  注意,克隆前,需要对快照进行<保护>操作
•  被保护的快照无法删除,取消保护(unprotect)
[root@node1    ~]#        rbd    snap    protect    image    –snap    image-snap1    
[root@node1    ~]#        rbd    snap    rm    image    –snap    image-snap1                //会失败
[root@node1    ~]#    rbd clone \
image –snap image-snap1 image-clone –image-feature layering
//使用image的快照image-snap1克隆一个新的image-clone镜像

•  查看克隆镜像与父镜像快照的关系
[root@node1    ~]#        rbd    info    image-clone    
rbd    image    ‘image-clone’:    
    size    15360    MB    in    3840    objects    
    order    22    (4096    kB    objects)    
    block_name_prefix:    rbd_data.d3f53d1b58ba    
    format:    2    
    features:    layering    
    flags:        
    parent:    rbd/image@image-snap1

•  克隆镜像很多数据都来自于快照链
•  如果希望克隆镜像可以独立工作,就需要将父快照中
的数据,全部拷贝一份,但比较耗时!!!
[root@node1    ~]#        rbd    flatten    image-clone    
[root@node1    ~]#        rbd    info    image-clone    
rbd    image    ‘image-clone’:    
    size    15360    MB    in    3840    objects    
    order    22    (4096    kB    objects)    
    block_name_prefix:    rbd_data.d3f53d1b58ba    
    format:    2    
    features:    layering    
    flags:        
//注意,父快照信息没了!

4.2.8 客户端撤销磁盘映射

•  umount挂载点
[root@client    ~]#    umount    /mnt    
•  取消RBD磁盘映射
[root@client    ~]#    rbd    showmapped    
id    pool    image                                snap    device                    
0        rbd        image                                -                /dev/rbd0    
//语法格式:
[root@client    ~]#    rbd    unmap    /dev/rbd/{poolname}/{imagename}    
[root@client    ~]#    rbd    unmap    /dev/rbd/rbd/image

4.2.9 删除快照与镜像

•  删除快照(确保快照未被保护)
[root@node1    ~]#    rbd    snap    rm    image    –snap    image-snap

•  删除镜像
[root@node1    ~]#    rbd        list    
[root@node1    ~]#    rbd        rm        image

ceph FS  提供共享文件夹,不是很成熟                    ceph组件 搭建流程

对象存储  需要专门的客户端,了解

node1-3 mon/osd

node4:   mds       CEPH FS需要

node5:   RADOS  对象存储需要

node6: 客户端

dump2fs -h /dev/vde1

?表示任意一个字符

ext4 比较适合存放小文件   网页文件

xfs比较适合存放大文件    视频

搭建类:如ceph/openstack/elk

配置类:zabbix配置,自动发现,监控模板

应用类:ansible

losetup -a   //查看镜像所在目录

virsh  secret-list         //查看生成的secret

virsh secret-undefine   uuid

ntpdate IP   手动同步时间

ceph auth list   查看认证的key

[root@node1 ceph]# ceph auth list

[root@node1 ceph-cluster]# cat /root/ceph-cluster/ceph.bootstrap-mds.keyring       //这里面的key值要和ceph auth list查看到的值是一样的,如果不一样,需要手动将ceph.bootstrap-mds.keyring的值改成和ceph auth list查看到的值一致。

在部署节点上     /var/lib/ceph/bootstrap-rgw目录下的ceph.keyring里面的key要和管理节点上查看到的key值一样

Cluster04 - Ceph概述 部署Ceph集群 Ceph块存储相关推荐

  1. Ceph原理、部署、存储集群、块存储及对象存储centos7.5

    目录 ​编辑 一.Ceph概述 1.基础知识 1. 分布式存储定义 2. 常用的分布式文件系统 3. Ceph定义 4. Ceph组件 二.实验环境准备 1.实验拓扑图 2.配置yum源 3.配置SS ...

  2. 部署Ceph集群(块存储,文件系统存储,对象存储)

    一 前言 分布式文件系统(Distributed File System):文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于C/S模式 1, ...

  3. 部署Ceph分布式高可用集群中篇

    前言 如何快速部署Ceph分布式高可用集群 Ceph分布式存储底层实现原理 上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)本文继续介绍下ceph的部署 部署OSD 查看磁盘使用情况 ...

  4. ceph 部署单机集群

    文章目录 ceph-deploy部署集群 ceph-deploy 部署单机 ceph-deploy 创建osd ceph osd创建资源池 ceph创建rbd块设备 ceph创建fs文件系统 本文档主 ...

  5. Openstack集群-Ceph集群作为存储的部署

    1.安装Ceph集群 1.1 设置ceph的yum源 ceph版本:12.2.5 ceph-deploy版本: 2.0.0 注:此处用控制节点部署mod和mgr ,OSD部署在计算节点上 [root@ ...

  6. 玩转Docker Ceph集群及对象存储

    为什么80%的码农都做不了架构师?>>>    [编者按]Ceph是一种集高性能.高可靠性和高可扩展性为一体的统一的.分布式的存储系统."统一的"意味着Ceph可 ...

  7. Ceph (3) - 安装Ceph集群方法3:使用 ceph-ansible 离线安装 Red Hat Ceph Storage 4.1 集群

    <OpenShift 4.x HOL教程汇总> 文章目录 安装前说明 准备主机环境 创建虚拟主机并配置网络 配置主机名和域名 设置环境变量 设置主机hosts 配置免密登录 设置节点主机名 ...

  8. 还在手动部署 Kubernetes 集群吗,是时候使用 Kubespray 完成自动化部署了!

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 前言 部署 Kubernetes 除了手动方式外,还有诸如 Kubeadm.Kubespray.Breeze.Ra ...

  9. kubekey部署k8s集群

    基本介绍:KubeKey 是 KubeSphere 社区开源的一款高效集群部署工具,运行时默认使用 Docker , 也可对接 Containerd CRI-O iSula 等 CRI 运行时,且 E ...

最新文章

  1. BZOJ1251: 序列终结者
  2. Nature封面重磅!剑桥大学团队揭开老年痴呆背后的罪魁祸首
  3. leetcode算法题--二叉树中的伪回文路径
  4. 为什么matlab显示error,【求救】我安装了资源 MATLAB R2012b 后,显示有error……
  5. hadoop重命名文件_Hadoop -- 3. 从Flume到HDFS
  6. 第九集 生死穿越风火山,感受尘世间轮回
  7. android mqtt详解_Android mqtt入门 Android studio(转)
  8. hadoop没有datanode_Hadoop运行在Kubernetes平台实践
  9. python加密字符串小写字母循环后错两位_Python简单加密程序:如何将Z循环回
  10. 大型网站技术架构(三)架构核心要素
  11. 云课堂在登陆时显示服务器错误,我的云课堂不能登陆怎么解决
  12. ADSL共享上网(简单方法)
  13. QT打印打印excel
  14. java处理Emoji表情
  15. Nginx:[emerg] unknown directive “server” in*******
  16. 搭建机器人电控系统——PID算法——位置式、增量式、模糊式PID
  17. 怎样让chatGPT给你打工然后月入过千?
  18. Java的一些基本概念和它们之间的关系
  19. 点击验证码刷新的实现
  20. 程序猿一般喜欢游览哪些网站,推荐?

热门文章

  1. Kafka教程(三):原理及存储
  2. 性的短暂而致真情永失
  3. java.io.IOException: java.io.FileNotFoundException: C:\Users\26904\AppData 找不到指定的路径,自动跑到C盘里找,太离谱了。
  4. 百度地图实现普通地图、卫星图、三维图、混合图(卫星图+路网)
  5. 一名普通22届本科毕业生|前端程序员|22年年终总结
  6. SAP 消息号 F5113 科目确认没有对交易. SKE (在会计科目表 XXXX 中)定义
  7. python PEP8问题及解决
  8. 【数论】——Catalan 卡特兰数
  9. win7运行c语言程序,win7打开程序弹出错误0xc000005的解决方法
  10. 获取、设置响应头、设置缓冲区