博客
关于我
ceph的三大存储方式(文件系统,对象存储,块存储)
阅读量:343 次
发布时间:2019-03-04

本文共 3145 字,大约阅读时间需要 10 分钟。

Ceph存储是一种高性能、可扩展的分布式存储系统,支持对象存储、块存储和文件系统存储,广泛应用于云计算、虚拟化和大数据存储场景。以下将详细介绍Ceph的部署和使用步骤。


Ceph组件概述

Ceph由多个组件组成,每个组件承担特定的功能:

  • OSD (Object Storage Device): 存储设备,必须的组件。
  • Monitors (ceph-mon): 集群监控组件,至少需要3个mon。
  • RadosGateway (RGW, ceph-radosgw): 对象存储网关。
  • MDS (Metadata Server, ceph-mds): 存放文件系统元数据。
  • Client (ceph-client): 用于与Ceph集群通信。

安装前准备

  • 配置YUM源:

    • 为所有节点配置YUM源服务器。
    • 例如:
      [local_repo]name=CentOS-$releasever - Basebaseurl="ftp://192.168.4.254/centos-1804"enabled=1gpgcheck=0
    • 将配置文件复制到所有节点:
      for i in 10 11 12 13 do    scp /etc/yum.repos.d/ceph.repo 192.168.4.$i:/etc/yum.repos.d/done
  • 同步时间:

    • 所有节点必须与NTP服务器同步时间:
      for i in 10 11 12 13 do    scp /etc/chrony.conf 192.168.4.$i:/etc/    ssh 192.168.4.$i "systemctl restart chronyd"    ssh 192.168.4.$i "chronyc sources"done
  • 物理机准备:

    • 为每个虚拟机准备3块磁盘(可使用virt-manager或命令操作)。

  • 部署Ceph集群

  • 安装Ceph工具:

    • 在节点1上安装ceph-deploy工具:
      yum -y install ceph-deploy
    • 查看工具帮助信息:
      ceph-deploy --help
  • 生成Ceph配置文件:

    • ceph-cluster目录下生成配置文件:
      ceph-deploy new node1 node2 node3
    • 安装相关软件包:
      for i in node1 node2 node3 do    ssh $i "yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw"done
  • 初始化监控组件:

    • 初始化mon服务:
      ceph-deploy mon create-initial
    • 启动mon服务。
  • 配置存储设备:

    • 为每个节点分区:
      for i in node1 node2 node3 do    ssh $i "parted /dev/vdb mklabel gpt"    ssh $i "parted /dev/vdb mkpart primary 1 50%"    ssh $i "parted /dev/vdb mkpart primary 50% 100%"done
    • 修改分区权限:
      for i in node1 node2 node3 do    ssh $i "chown ceph:ceph /dev/vdb1"    ssh $i "chown ceph:ceph /dev/vdb2"done
    • 配置udev规则(永久权限设置):
      echo "ENV{DEVNAME}==\"/dev/vdb1\",OWNER=\"ceph\",GROUP=\"ceph\"'" > /etc/udev/rules.d/70-vdb.rulesecho "ENV{DEVNAME}==\"/dev/vdb2\",OWNER=\"ceph\",GROUP=\"ceph\"'" >> /etc/udev/rules.d/70-vdb.rules
    • 通过scp传输规则到所有节点并重启服务:
      for i in node1 node2 node3 do    scp /etc/udev/rules.d/70-vdb.rules $i:/etc/udev/rules.d/    ssh $i "reboot"done
  • 格式化存储空间:

    • 使用ceph-deploy格式化磁盘:
      for i in node1 node2 node3 do    ceph-deploy disk zap $i:vdc $i:vdddone
    • 创建OSD存储设备:
      ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2

  • Ceph块存储和文件系统

  • 创建块存储镜像:

    • 创建一个10GB的镜像:
      rbd create demo-image --image-feature layering --size 10G
    • 查看镜像列表:
      rbd list
  • 挂载块存储:

    • 客户端安装ceph-common:
      yum -y install ceph-common
    • 挂载镜像:
      rbd map image
    • 查看挂载情况:
      rbd showmapped
  • 格式化和挂载:

    • 格式化分区:
      mkfs.xfs /dev/rbd0
    • 挂载分区:
      mount /dev/rbd0 /mnt/

  • Ceph文件系统

  • 部署MDS节点:

    • 添加一台新的虚拟机(如node4),配置主机名和IP地址。
    • 安装ceph-mds:
      yum -y install ceph-mds
    • 在Ceph集群目录下操作:
      ceph-deploy mds create node4ceph-deploy admin node4
  • 创建存储池:

    • 创建metadata和data池:
      ceph osd pool create cephfs_data 128ceph osd pool create cephfs_metadata 128
  • 创建文件系统:

    • 创建文件系统:
      ceph fs new myfs1 cephfs_metadata cephfs_data
    • 查看文件系统状态:
      ceph mds stat
  • 客户端挂载:

    • 挂载Ceph文件系统:
      mount -t ceph 192.168.4.11:6789:/ /mnt/cephfs/ -o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==

  • Ceph对象存储

  • 部署RGW:

    • 安装RGW软件包:
      ceph-deploy install --rgw node5
    • 同步配置文件和密钥:
      ceph-deploy admin node5
  • 配置RGW服务:

    • 修改RGW服务端口:
      vim /etc/ceph/ceph.conf
    • 启动RGW服务:
      systemctl restart ceph-radosgw@rgw.node5.service
  • 使用RGW:

    • 通过API接口操作对象存储。

  • 注意事项

    • 确保所有主机名与/etc/hosts中的域名一致。
    • 部署Ceph集群时,主机名解析必须正确。
    • 在创建Ceph文件系统时,确保只创建一个文件系统,否则会报错。

    通过以上步骤,可以成功部署并使用Ceph存储解决方案。

    转载地址:http://cteh.baihongyu.com/

    你可能感兴趣的文章
    nodejs端口被占用原因及解决方案
    查看>>
    Nodejs简介以及Windows上安装Nodejs
    查看>>
    nodejs系列之express
    查看>>
    nodejs系列之Koa2
    查看>>
    Nodejs连接mysql
    查看>>
    nodejs连接mysql
    查看>>
    NodeJs连接Oracle数据库
    查看>>
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    NodeMCU教程 http请求获取Json中文乱码解决方案
    查看>>
    Nodemon 深入解析与使用
    查看>>
    NodeSession:高效且灵活的Node.js会话管理工具
    查看>>
    node~ http缓存
    查看>>
    node不是内部命令时配置node环境变量
    查看>>
    node中fs模块之文件操作
    查看>>
    Node中同步与异步的方式读取文件
    查看>>
    node中的get请求和post请求的不同操作【node学习第五篇】
    查看>>
    Node中的Http模块和Url模块的使用
    查看>>
    Node中自启动工具supervisor的使用
    查看>>
    Node入门之创建第一个HelloNode
    查看>>
    node全局对象 文件系统
    查看>>