• ceph分布式存储


    目录

    一、概述

    1、特点

    2、组件

    3、架构图

    二、分布式部署

    1、环境拓扑

    2、实验准备

             3、ceph安装

    安装 

    初始化monitor

    同步管理信息

    安装mgr(管理守护进程)

    安装rgw

    创建mds服务

    OSD安装

    4、dashboard安装

    开启dashboard模块

    生成签名

    创建目录

    启动服务

    设置访问地址与端口

    关闭https

    访问

    5、ceph文件系统创建

    创建存储池

    查看存储池

    创建文件系统

    查看文件系统

    查看mds状态

    三、在客户端挂载


    一、概述

    ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储

    1、特点


        1. 统一存储
            虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。
        2. 高扩展性
            扩容方便、容量大。能够管理上千台服务器、EB 级的容量。
        3. 可靠性强
            支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。
        4. 高性能
            因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的 IOPS和吞吐量越高。另外一点 ceph 客户端读写数据直接与存储设备(osd) 交互。

    2、组件

    1. Monitor
        一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
    2. OSD
        OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
    3. MDS
        MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
    4. Object
        Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
    5. PG
        PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
    6. RADOS
        RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
    7. Libradio
        Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
    8. CRUSH
        CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
    9. RBD
        RBD全称RADOS block device,是Ceph对外提供的块设备服务。
    10. RGW
        RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
    11. CephFS
        CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

    3、架构图


        1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)
        2:切片后的文件object会存入到Ceph中
        3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG
        4:PG是逻辑概念上对文件存储范围划分的索引
        5:根据PG索引将文件存储到指定服务器的OSD中

    二、分布式部署

    1、环境拓扑
    实验拓扑
     centos1 :192.168.115.100  monitor  osd
    centos2 :192.168.115.101   osd 
    centos3 :192.168.115.102    osd
    centos4:192.168.115.103  osd   Client

    2、实验准备
    1. ##在所有的主机上进行如下操作
    2. systemctl stop firewalld.service
    3. systemctl disable firewalld.service
    4. systemctl stop NetworkManager
    5. systemctl disable NetworkManager
    6. systemctl restart network
    7. systemctl stop NetworkManager
    8. setenforce 0
    9. sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
    10. systemctl restart sshd
    11. ##分别修改主机名
    12. hostnamectl set-hostname centos1 && bash
    13. hostnamectl set-hostname centos2 && bash
    14. hostnamectl set-hostname centos3 && bash
    15. hostnamectl set-hostname centos4 && bash
    16. ###每台主机修改hosts文件
    17. vim /etc/hosts
    18. 192.168.115.100 centos1
    19. ###添加磁盘
    20. echo "- - -" > /sys/class/scsi_host/host0/scan
    21. for i in 101 102;do ssh 192.168.115.$i echo "- - -" > /sys/class/scsi_host/host0/scan && lsblk;done
    22. ###格式化
    23. mkfs.xfs /dev/sdb
    24. 192.168.115.101 centos2
    25. 192.168.115.102 centos3
    26. 192.168.115.103 centos4
    27. ###每台主机配置ssh免密
    28. #centos1
    29. ssh-keygen
    30. for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
    31. #centos2
    32. ssh-keygen
    33. for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
    34. #centos3
    35. ssh-keygen
    36. for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
    37. #centos4
    38. ssh-keygen
    39. for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
    40. ##########在centos1上设置同步时间
    41. yum install -y ntp
    42. vim /etc/ntp.conf
    43. 注释
    44. #server 0.centos.pool.ntp.org iburst
    45. #server 1.centos.pool.ntp.org iburst
    46. #server 2.centos.pool.ntp.org iburst
    47. #server 3.centos.pool.ntp.org iburst
    48. 插入
    49. server 127.127.1.0 #定义时间服务器
    50. fudge 127.127.1.0 stratum 8 #定义时间层次
    51. ############
    52. 启动
    53. systemctl start ntpd
    54. systemctl enable ntpd
    55. ###################
    56. 客户端对时
    57. for i in 100 101 102;do ssh 192.168.115.$i ntpdate 192.168.115.100;done

    3、ceph安装

    在centos1上安装

    1. yum install epel-release -y
    2. yum install lttng-ust -y
    3. ###添加源
    4. vim /etc/yum.repos.d/ceph.repo
    5. [Ceph]
    6. name=Ceph packages for $basearch
    7. baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
    8. enabled=1
    9. gpgcheck=1
    10. type=rpm-md
    11. gpgkey=https://download.ceph.com/keys/release.asc
    12. [Ceph-noarch]
    13. name=Ceph noarch packages
    14. # 清华源
    15. baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
    16. enabled=1
    17. gpgcheck=1
    18. type=rpm-md
    19. gpgkey=https://download.ceph.com/keys/release.asc
    20. [ceph-source]
    21. name=Ceph source packages
    22. baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
    23. enabled=1
    24. gpgcheck=1
    25. type=rpm-md
    26. gpgkey=https://download.ceph.com/keys/release.asc
    27. ##########拷贝源
    28. scp /etc/yum.repos.d/ceph.repo 192.168.115.101:/etc/yum.repos.d
    29. scp /etc/yum.repos.d/ceph.repo 192.168.115.102:/etc/yum.repos.d
    30. scp /etc/yum.repos.d/ceph.repo 192.168.115.103:/etc/yum.repos.d
    31. ####安装
    32. yum -y install ceph ceph-deploy
    33. ##创建集群目录
    34. mkdir -p /usr/local/soft/cephcluster
    35. cd /usr/local/soft/cephcluster
    36. ##创建集群
    37. ceph-deploy new centos1 centos2 centos3
    38. ##修改配置文件
    39. /usr/local/soft/cephcluster/ceph.conf
    40. 插入
    41. #对外开放网段
    42. public network = 192.168.115.0/24
    43. # 设置pool池默认分配数量
    44. osd pool default size = 2
    45. # 容忍更多的时钟误差
    46. mon clock drift allowed = 2
    47. mon clock drift warn backoff = 30
    48. # 允许删除pool
    49. mon_allow_pool_delete = true
    50. [mgr]
    51. # 开启WEB仪表盘
    52. mgr modules = dashboard

    安装 
    1. 如果安装失败需要:
    2. ceph-deploy purge centos1 centos2 centos3
    3. ceph-deploy purgedata centos1 centos2 centos3
    4. ceph-deploy forgetkeys
    5. 将三台节点的mon信息也删除:
    6. rm -rf /var/run/ceph/

    ceph-deploy install centos1 centos2 centos3

    初始化monitor

    ceph-deploy mon create-initial

    同步管理信息

    ceph-deploy admin  centos1 centos2 centos3

    安装mgr(管理守护进程)

    ceph-deploy mgr create  centos1 centos2 centos3

    安装rgw

    ceph-deploy rgw create centos1 centos2 centos3

    创建mds服务

    ceph-deploy mds create centos1 centos2 centos3

    OSD安装

    OSD服务是对象存储守护进程, 负责把对象存储到本地文件系统, 必须要有一块独立的磁盘作为存储。如果没有独立磁盘,怎么办? 可以在Linux下面创建一个虚拟磁盘进行挂载。

    1. ##创建OSD
    2. ceph-deploy osd create --data /dev/sdb centos1

    ceph-deploy osd create --data /dev/sdb centos2

    ceph-deploy osd create --data /dev/sdb centos3

    查看集群状态

     ceph -s

    4、dashboard安装

    只在centos1上操作

    开启dashboard模块
    ceph mgr module enable dashboard
    生成签名
    ceph dashboard create-self-signed-cert

    创建目录
    1. mkdir -p /usr/local/jx/cephcluster/mgr-dashboard
    2. cd /usr/local/jx/cephcluster/mgr-dashboard
    3. openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca

    启动服务
    1. ceph mgr module disable dashboard
    2. ceph mgr module enable dashboard
    设置访问地址与端口
    1. ceph config set mgr mgr/dashboard/server_addr 192.168.115.100
    2. ceph config set mgr mgr/dashboard/server_port 9001

    关闭https
    1. ceph config set mgr mgr/dashboard/ssl false
    2. ceph mgr services
    3. ceph dashboard set-login-credentials hy123 123.com

    访问

    https://192.168.115.100:8443

    5、ceph文件系统创建

    centos1上操作

    创建存储池
    1. ceph osd pool create cephfs_data 128
    2. ceph osd pool create cephfs_metadata 64
    3. ####################
    4. 少于5个OSD可把pg_num设置为128
    5. OSD数量在510,可以设置pg_num为512
    6. OSD数量在1050,可以设置pg_num为4096
    7. OSD数量大于50,需要计算pg_num的值

    查看存储池
     ceph osd lspools

    创建文件系统
    ceph fs new  fs_test  cephfs_metadata cephfs_data

    查看文件系统
    ceph fs ls

    查看mds状态
    ceph mds stat
    

    三、在客户端挂载

    在centos1上操作:

    1. 在centos1中:安装
    2. ceph-deploy install centos4
    3. 同步管理信息
    4. ceph-deploy admin centos4
    5. 非集群节点,/var/run/ceph 无内容

    在centos4上操作

    1. yum install -y ceph-fuse
    2. ##如果安装不上请尝试:
    3. 在这种情况下,建议您使用 EPEL(Extra Packages for Enterprise Linux)源。首先,需要确保您的 CentOS 系统已启用 EPEL 源。如果尚未启用,请执行以下命令启用 EPEL 源:
    4. sudo yum install epel-release
    5. 安装完成后,请执行以下命令安装 ceph-fuse:
    6. sudo yum install -y ceph-fuse
    7. 安装完成后,您可以继续按照之前的回答中的步骤进行操作。如果仍然遇到问题,请确保您的 CentOS 系统已更新,并尝试使用以下命令安装 ceph-fuse:
    8. sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    9. sudo yum install -y ceph-fuse
    10. ###############################
    11. 查看信息
    12. ls /etc/ceph
    13. ceph.client.admin.keyring
    14. 创建挂载目录
    15. mkdir /ceph
    16. 挂载ceph文件系统
    17. ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.115.100:6789 /ceph

  • 相关阅读:
    网络模型的参数量和FLOPs的计算 Pytorch
    技术管理者的困惑——技术与管理应该如何平衡?
    mysql安装8.0详细操作
    注入常考面试题总结
    Visual Studio Code配置c/c++环境
    27.方向标
    互联网摸鱼日报(2023-09-06)
    【无标题】
    d为何读写不一致
    数组20—pop() :从数组末尾删除一个元素
  • 原文地址:https://blog.csdn.net/2302_78534730/article/details/133149089