Ceph概述、准备ceph部署环境、cephadm概述、安装Ceph集群、ceph块存储、存储池、rbd镜像管理、ceph客户端配置

本文主要是介绍Ceph概述、准备ceph部署环境、cephadm概述、安装Ceph集群、ceph块存储、存储池、rbd镜像管理、ceph客户端配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ceph概述

  • ceph可以实现的存储方式:

    • 块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”
    • 文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹
    • 对象存储:像百度云盘一样,需要使用单独的客户端
  • Ceph存储集群至少需要一个Ceph监视器、Ceph管理器和Ceph OSD(对象存储守护程序)。运行Ceph文件系统客户端时,需要Ceph元数据服务器。

    • 监视器:Ceph Monitor(ceph-mon)维护集群状态图,包括监视器图、管理器图、OSD图、MDS图和CRUSH图。这些映射是Ceph守护进程相互协调所需的关键集群状态。监视器还负责管理守护程序和客户端之间的身份验证。为了冗余和高可用性,通常至少需要三台Monitor。
    • 管理器:Ceph Manager(ceph-mgr)负责跟踪ceph集群的运行时指标和当前状态,包括存储利用率、当前性能指标和系统负载。Ceph Manager守护进程还托管基于python的模块来管理和公开Ceph集群信息,包括基于web的Ceph仪表板和REST API。高可用性通常需要至少两台Manager。
    • Ceph OSD:ceph-osd存储数据,处理数据复制、恢复、重新平衡,并通过检查其他Ceph OSD守护进程的心跳来为Ceph监视器和管理器提供一些监视信息。为了实现冗余和高可用性,通常至少需要三个Ceph OSD。
    • MDS:ceph-mds代表Ceph文件系统存储元数据(即,Ceph块设备和Ceph对象存储不使用MDS)。Ceph元数据服务器允许POSIX文件系统用户执行基本命令(如ls、find等)。)而不会给Ceph存储集群带来巨大的负担。
    • RGW:Rados Gateway,是一个提供对象存储功能的组件,可以通过RESTful接口向外部应用程序提供可扩展和高可用的存储服务。
  • Ceph将数据作为对象存储在逻辑存储池中。使用CRUSH算法,Ceph计算哪个归置组(PG)应该包含该对象,以及哪个OSD应该存储该归置组。CRUSH算法支持Ceph存储集群动态扩展、重新平衡和恢复。

  • 部署ceph集群需要python3、podman或docker、时间服务(如chrony)、lvm2

部署Ceph

节点准备

  • ceph1、ceph2、ceph3内存至少需要2GB
主机名IP地址
ceph1192.168.88.11/24
ceph2192.168.88.12/24
ceph3192.168.88.13/24
client1192.168.88.10/24
  • 关机,为ceph1-ceph3各额外再添加3块20GB的硬盘

cephadm

  • Cephadm使用容器和systemd安装和管理Ceph集群,并与CLI(命令行)和dashboard GUI紧密集成。

  • cephadm与新的编排API完全集成,并完全支持新的CLI和仪表板功能来管理集群部署。

  • cephadm需要容器支持(podman或docker)和Python 3。

  • cephadm是一个用于管理Ceph集群的实用程序。可以使用它:

    • 将Ceph容器添加到集群中
    • 从群集中删除一个Ceph容器
    • 更新Ceph容器

准备基础环境

  • 在pubserver上配置ansible环境
[root@pubserver ~]# mkdir ceph[root@pubserver ~]# cd ceph[root@pubserver ceph]# vim ansible.cfg [defaults]inventory = inventoryhost_key_checking = false[root@pubserver ceph]# vim inventory [ceph]    # 定义ceph组ceph1 ansible_host=192.168.88.11ceph2 ansible_host=192.168.88.12ceph3 ansible_host=192.168.88.13[clients]  # 定义客户端组client1 ansible_host=192.168.88.10[all:vars]ansible_ssh_user=rootansible_ssh_pass=a[root@pubserver ceph]# mkdir files/[root@pubserver ceph]# vim files/local88.repo [BaseOS]name = BaseOSbaseurl = ftp://192.168.88.240/dvd/BaseOSenabled = 1gpgcheck = 0[AppStream]name = AppStreambaseurl = ftp://192.168.88.240/dvd/AppStreamenabled = 1gpgcheck = 0[rpms]name = rpmsbaseurl = ftp://192.168.88.240/rpmsenabled = 1gpgcheck = 0# 配置yum[root@pubserver ceph]# vim 01-upload-repo.yml ---- name: config repos.dhosts: alltasks:- name: delete repos.dfile:path: /etc/yum.repos.dstate: absent- name: create repos.dfile:path: /etc/yum.repos.dstate: directorymode: '0755'- name: upload local88copy:src: files/local88.repodest: /etc/yum.repos.d/[root@pubserver ceph]# ansible-playbook 01-upload-repo.yml 
  • 配置名称解析
# 配置三台主机实现名称解析,解析的名字务必与主机实际名字一致[root@pubserver ceph]# vim 02-modify-hosts.yml ---- name: add nameshosts: cephtasks:- name: add blockblockinfile:   # 类似于lineinfile模块,可在目标文件中加多行path: /etc/hostsblock: |192.168.88.11 ceph1192.168.88.12 ceph2192.168.88.13 ceph3192.168.88.240 quay.io[root@pubserver ceph]# ansible-playbook 02-modify-hosts.yml # 查看结果,以ceph1为例[root@ceph1 ~]# tail -6 /etc/hosts# BEGIN ANSIBLE MANAGED BLOCK192.168.88.11 ceph1192.168.88.12 ceph2192.168.88.13 ceph3192.168.88.240 quay.io# END ANSIBLE MANAGED BLOCK
  • 配置pubserver为NTP服务器
# 1. 查看pubserver自己的时区,如果时区不正确需要改正[root@pubserver ~]# timedatectl [root@pubserver ~]# timedatectl set-timezone Asia/Shanghai# 2. 查看时间,如果时间不正确,需要调整时间[root@pubserver ~]# date[root@pubserver ~]# date -s "年-月-日 时:分:秒"# 3. 配置chronyd服务[root@pubserver ~]# yum install -y chrony[root@pubserver ~]# vim /etc/chrony.conf  # 打开23、26行的注释...略...24 # Allow NTP client access from local network.25 allow 192.168.0.0/16  # 为192.168开头的客户端提供时间服务26 27 # Serve time even if not synchronized to a time source.28 local stratum 10   # 即使自己没有时间源,也为客户端提供时间服务...略...[root@pubserver ~]# systemctl enable chronyd --now[root@pubserver ~]# ss -ulnp | grep :123  # ntp使用udp 123端口
  • 配置ceph1-ceph3使用pubserver提供的时间服务
[root@pubserver ceph]# vim 03-config-ntp.yml---- name: config ntphosts: cephtasks:- name: install chrony   # 安装chronyyum:name: chronystate: present- name: modify config    # 替换以pool开头的行lineinfile:path: /etc/chrony.confregexp: '^pool'line: "pool 192.168.88.240 iburst"notify: restart ntp    # 如果该任务的状态是CHANGED,则执行restart ntp任务handlers:- name: restart ntp   # 只有notify通知时,才执行重启任务service:name: chronydstate: restartedenabled: yes[root@pubserver ceph]# ansible-playbook 03-config-ntp.yml# 以ceph1为例,查看结果[root@ceph1 ~]# chronyc sources -v.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current best, '+' = combined, '-' = not combined,| /             'x' = may be in error, '~' = too variable, '?' = unusable.||                                                 .- xxxx [ yyyy ] +/- zzzz||      Reachability register (octal) -.           |  xxxx = adjusted offset,||      Log2(Polling interval) --.      |          |  yyyy = measured offset,||                                \     |          |  zzzz = estimated error.||                                 |    |           \MS Name/IP address         Stratum Poll Reach LastRx Last sample               ===============================================================================^* 192.168.88.240               10   6    37     4  -8731ns[-6313us] +/- 7118us
  • 准备容器仓库服务器
# 1. 将真机/linux-soft/s2/zzg/ceph_soft/ceph-server/docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm拷贝到pubserver的/root目录并安装[root@pubserver ~]# yum install -y docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm# 2. 启动服务[root@pubserver ~]# systemctl enable docker-distribution --now
  • 安装软件包,并导入镜像
# 1. 在ceph集群节点上安装软件包[root@pubserver ceph]# vim 04-install-ceph.yml---- name: install pkghosts: cephtasks:- name: install pkg    # 安装软件包yum:name: python39,podman,lvm2state: present[root@pubserver ceph]# ansible-playbook 04-install-ceph.yml # 2. 将真机/linux-soft/s2/zzg/ceph_soft/ceph-server目录拷贝到ceph各节点,并导入镜像[root@ceph1 ~]# cd ceph-server/[root@ceph1 ceph-server]# for c in *.tar> do> podman load -i $c> done[root@ceph2 ~]# cd ceph_soft/[root@ceph2 ceph-server]# for c in *.tar> do> podman load -i $c> done[root@ceph3 ~]# cd ceph_soft/[root@ceph3 ceph-server]# for c in *.tar> do> podman load -i $c> done# 3. 查看执行结果[root@ceph1 ceph-server]# podman imagesREPOSITORY                        TAG         IMAGE ID      CREATED        SIZEquay.io/ceph/ceph                 v17         cc65afd6173a  7 weeks ago    1.4 GBquay.io/ceph/ceph-grafana         8.3.5       dad864ee21e9  8 months ago   571 MBquay.io/prometheus/prometheus     v2.33.4     514e6a882f6e  9 months ago   205 MBquay.io/prometheus/node-exporter  v1.3.1      1dbe0e931976  12 months ago  22.3 MBquay.io/prometheus/alertmanager   v0.23.0     ba2b418f427c  15 months ago  58.9 MB# 4. 配置ceph1-ceph3使用pubserver作为仓库服务器[root@pubserver ceph]# vim 05-config-registry.yml---- name: config registryhosts: cephtasks:- name: modify configblockinfile:path: /etc/containers/registries.confblock: |[[registry]]location = "quay.io:5000"  # 指定服务器地址insecure = true              # 允许使用http协议[root@pubserver ceph]# ansible-playbook 05-config-registry.yml # 5. 以ceph1为例,查看执行结果[root@ceph1 ceph_soft]# tail -5 /etc/containers/registries.conf# BEGIN ANSIBLE MANAGED BLOCK[[registry]]location = "quay.io:5000"insecure = true# END ANSIBLE MANAGED BLOCK# 5. 修改镜像名称,以便可以将其推送到自建镜像服务器[root@ceph1 ceph-server]# podman tag quay.io/ceph/ceph:v17 quay.io:5000/ceph/ceph:v17[root@ceph1 ceph-server]# podman tag quay.io/ceph/ceph-grafana:8.3.5 quay.io:5000/ceph/ceph-grafana:8.3.5[root@ceph1 ceph-server]# podman tag quay.io/prometheus/prometheus:v2.33.4 quay.io:5000/prometheus/prometheus:v2.33.4[root@ceph1 ceph-server]# podman tag quay.io/prometheus/node-exporter:v1.3.1 quay.io:5000/prometheus/node-exporter:v1.3.1[root@ceph1 ceph-server]# podman tag quay.io/prometheus/alertmanager:v0.23.0 quay.io:5000/prometheus/alertmanager:v0.23.0# 6. 将镜像推送到镜像服务器,以便其他节点可以通过服务器下载镜像[root@ceph1 ceph-server]# podman push quay.io:5000/ceph/ceph:v17[root@ceph1 ceph-server]# podman push quay.io:5000/ceph/ceph-grafana:8.3.5 [root@ceph1 ceph-server]# podman push quay.io:5000/prometheus/prometheus:v2.33.4 [root@ceph1 ceph-server]# podman push quay.io:5000/prometheus/node-exporter:v1.3.1 [root@ceph1 ceph-server]# podman push quay.io:5000/prometheus/alertmanager:v0.23.0 
  • 完成此步骤,给ceph1-ceph3打快照

安装ceph

  • 所有Ceph集群都需要至少一个监视器Monitor,以及至少与存储在集群上的对象副本一样多的OSD。引导初始监视器是部署Ceph存储集群的第一步。
  • Monitor部署还为整个集群设置了重要的标准,例如池的副本数量、每个OSD的放置组数量、心跳间隔、是否需要身份验证等。这些值中的大部分是默认设置的。
  • 创建集群
# 1. 在ceph1上初始化集ceph集群。# 集群初始化完成后,将自动生成ssh免密密钥,存放在/etc/ceph/目录下[root@ceph1 ceph-server]# ./cephadm bootstrap --mon-ip 192.168.88.11 --initial-dashboard-password=123456 --dashboard-password-noupdate# 2. ceph将会以容器化的方式部署,查看生成了6个容器。[root@ceph1 ceph-server]# podman ps# 3. 拷贝密钥文件至其他节点[root@ceph1 ceph-server]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph2[root@ceph1 ceph-server]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph3# 4. 进入管理容器,查看ceph状态[root@ceph1 ceph-server]# ./cephadm shell   # 进入管理容器[ceph: root@ceph1 /]# ceph -s  # 查看ceph状态cluster:id:     1ddfccf2-77b4-11ed-8941-000c2953b002health: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 1 daemons, quorum ceph1 (age 11m)mgr: ceph1.vnoivz(active, since 10m)osd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0 objects, 0 Busage:   0 B used, 0 B / 0 B availpgs: # 5. 查看相关容器状态,显示所有容器均已启动[ceph: root@ceph1 /]# ceph orch lsNAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  alertmanager   ?:9093,9094      1/1  91s ago    3m   count:1    crash                           1/3  91s ago    4m   *          grafana        ?:3000           1/1  91s ago    4m   count:1    mgr                             1/2  91s ago    4m   count:2    mon                             1/5  91s ago    4m   count:5    node-exporter  ?:9100           1/3  91s ago    4m   *          prometheus     ?:9095           1/1  91s ago    4m   count:1 # 6. 查看集群中现有主机[ceph: root@ceph1 /]# ceph orch host lsHOST   ADDR           LABELS  STATUS  ceph1  192.168.88.11  _admin          1 hosts in cluster# 7. 向集群中添加其他主机[ceph: root@ceph1 /]# ceph orch host add ceph2 192.168.88.12[ceph: root@ceph1 /]# ceph orch host add ceph3 192.168.88.13# 注:删除错误的主机命令为:ceph orch host rm 主机名 --force# 8. 查看集群中主机[ceph: root@ceph1 /]# ceph orch host lsHOST   ADDR           LABELS  STATUS  ceph1  192.168.88.11  _admin          ceph2  192.168.88.12                  ceph3  192.168.88.13                  3 hosts in cluster# 9. 扩容MON节点。一共有3台MON,位于ceph1-ceph3[ceph: root@ceph1 /]# ceph orch apply mon --placement="3 ceph1 ceph2 ceph3" # 10. 查看mon状态[ceph: root@ceph1 /]# ceph -scluster:id:     a4b69ab4-79dd-11ed-ae7b-000c2953b002health: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 2m)mgr: ceph1.gmqorm(active, since 15m), standbys: ceph3.giqaphosd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0 objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:     [ceph: root@ceph1 /]# ceph mon state3: 3 mons at {ceph1=[v2:192.168.88.11:3300/0,v1:192.168.88.11:6789/0],ceph2=[v2:192.168.88.12:3300/0,v1:192.168.88.12:6789/0],ceph3=[v2:192.168.88.13:3300/0,v1:192.168.88.13:6789/0]}, election epoch 14, leader 0 ceph1, quorum 0,1,2 ceph1,ceph3,ceph2# 11. ceph2和ceph3上也将会出现相关容器[root@ceph2 ~]# podman ps[root@ceph3 ~]# podman ps
  • 添加OSD硬盘
[ceph: root@ceph1 /]# ceph orch daemon add osd ceph1:/dev/vdb[ceph: root@ceph1 /]# ceph orch daemon add osd ceph1:/dev/vdc[ceph: root@ceph1 /]# ceph orch daemon add osd ceph1:/dev/vdd[ceph: root@ceph1 /]# ceph orch daemon add osd ceph2:/dev/vdb[ceph: root@ceph1 /]# ceph orch daemon add osd ceph2:/dev/vdc[ceph: root@ceph1 /]# ceph orch daemon add osd ceph2:/dev/vdd[ceph: root@ceph1 /]# ceph orch daemon add osd ceph3:/dev/vdb[ceph: root@ceph1 /]# ceph orch daemon add osd ceph3:/dev/vdc[ceph: root@ceph1 /]# ceph orch daemon add osd ceph3:/dev/vdd# 2. 在节点上查询容器信息,将会发现又有新的osd容器出现[root@ceph1 ~]# podman ps# 3. 此时ceph的状态将会是HEALTH_OK,ceph集群搭建完成。[ceph: root@ceph1 /]# ceph -scluster:id:     a4b69ab4-79dd-11ed-ae7b-000c2953b002health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 2m)mgr: ceph1.gmqorm(active, since 2h), standbys: ceph3.giqaphosd: 9 osds: 9 up (since 35s), 9 in (since 59s)data:pools:   1 pools, 1 pgsobjects: 2 objects, 449 KiBusage:   186 MiB used, 180 GiB / 180 GiB availpgs:     1 active+clean

故障排除:

查看服务状态:

[ceph: root@ceph1 /]# ceph orch ps

如果有error(比如node-exporter.ceph2),则把相应的服务删除:

[ceph: root@ceph1 /]# ceph orch daemon rm node-expoter.ceph2

然后重新配置:

[ceph: root@ceph1 /]# ceph orch daemon reconfig node-exporter.ceph2# 或[ceph: root@ceph1 /]# ceph orch daemon redeploy node-exporter.ceph2

如果是mgr这样的服务出故障,删除后,部署的命令是:

[ceph: root@ceph1 /]# ceph orch daemon reconfig mgr ceph2# 或[ceph: root@ceph1 /]# ceph orch daemon redeploy mgr ceph2

实现块存储

块存储基础

  • 块设备存取数据时,可以一次存取很多。字符设备只能是字符流
[root@ceph1 ~]# ll /dev/sdabrw-rw---- 1 root disk 8, 0 Dec 12 13:15 /dev/sda# b表示block,块设备[root@ceph1 ~]# ll /dev/ttycrw-rw-rw- 1 root tty 5, 0 Dec 12 13:31 /dev/tty# c表示character,字符设备
  • 块存储,就是可以提供像硬盘一样的设备。使用块存储的节点,第一次连接块设备,需要对块设备进行分区、格式化,然后挂载使用。
  • ceph中的块设备叫做rbd,是rados block device的简写,表示ceph的块设备。rados是Reliable, Autonomic Distributed Object Store的简写,意思是“可靠、自主的分布式对象存储”。
  • Ceph块设备采用精简配置,可调整大小,并将数据存储在多个OSD上。
  • ceph提供存储时,需要使用存储池。为了给客户端提供存储资源,需要创建名为存储池的容器。存储池类似于逻辑卷管理中的卷组。卷组中包含很多硬盘和分区;存储池中包含各节点上的硬盘。
  • 查看基础存储池信息
# 查看存储池。默认有一个名为.mgr的存储池,编号为1[ceph: root@ceph1 /]# ceph osd lspools1 .mgr# 查看存储详细使用情况[ceph: root@ceph1 /]# ceph df--- RAW STORAGE ---CLASS     SIZE    AVAIL     USED  RAW USED  %RAW USEDhdd    180 GiB  180 GiB  187 MiB   187 MiB       0.10TOTAL  180 GiB  180 GiB  187 MiB   187 MiB       0.10--- POOLS ---POOL  ID  PGS   STORED  OBJECTS     USED  %USED  MAX AVAIL.mgr   1    1  449 KiB        2  449 KiB      0     57 GiB# 查看.mgr存储池的副本数量[ceph: root@ceph1 /]# ceph osd pool get .mgr sizesize: 3
  • 在ceph中,操作块存储的命令也是rbd。
  • 创建存储池。如果不指定操作哪一个存储池,rbd命令将会操作名为rbd的存储池。该存储池不存在,需要自己创建。
# 不指定存储池名字执行查看操作。提示名为rbd的存储池不存在[ceph: root@ceph1 /]# rbd lsrbd: error opening default pool 'rbd'Ensure that the default pool has been created or specify an alternate pool name.rbd: listing images failed: (2) No such file or directory

存储池

  • 创建存储池是需要指定存储池中PG的数量。
  • Placement Group简称PG,可翻译为归置组。
  • PG只是一个组而已,用于把存储的对象分组管理。
  • 将数据放入集群时,对象被映射到pg,而这些pg被映射到OSD。这减少了我们需要跟踪的每个对象的元数据的数量以及我们需要运行的进程的数量。
  • 创建并使用存储池
# 1. 创建名为rbd的存储池[ceph: root@ceph1 /]# ceph osd pool create rbd 100pool 'rbd' created# 2. 设置rbd存储池的应用类型是rbd。还可以是rgw或cephfs# 语法:ceph osd pool application enable <pool-name> <app-name>[ceph: root@ceph1 /]# ceph osd pool application enable rbd rbd# 3. 查看[ceph: root@ceph1 /]# ceph osd pool ls .mgrrbd[ceph: root@ceph1 /]# ceph df--- RAW STORAGE ---CLASS     SIZE    AVAIL     USED  RAW USED  %RAW USEDhdd    180 GiB  180 GiB  191 MiB   191 MiB       0.10TOTAL  180 GiB  180 GiB  191 MiB   191 MiB       0.10--- POOLS ---POOL  ID  PGS   STORED  OBJECTS     USED  %USED  MAX AVAIL.mgr   1    1  897 KiB        2  2.6 MiB      0     57 GiBrbd    2   99      0 B        0      0 B      0     57 GiB# 4. 执行命令。不指定存储池,默认操作名为rbd的存储池。[ceph: root@ceph1 /]# rbd ls   # 无输出内容,也不会报错

镜像

  • 在存储池中划分空间提供给客户端作为硬盘使用。
  • 划分出来的空间,术语叫做镜像。
# 1. 查看rbd存储池中有哪些镜像[ceph: root@ceph1 /]# rbd ls# 2. 创建名为img1的镜像,大小10GB[ceph: root@ceph1 /]# rbd create img1 --size 10G# 3. 查看存储池中有哪些镜像[ceph: root@ceph1 /]# rbd lsimg1# 4. 查看镜像详情[ceph: root@ceph1 /]# rbd info img1rbd image 'img1':size 10 GiB in 2560 objects...略...# 5. 扩容。容量只是承诺大小,并不会立即分配全部空间,所以值可以超过总容量。[ceph: root@ceph1 /]# rbd resize img1 --size 200GResizing image: 100% complete...done.[ceph: root@ceph1 /]# rbd info img1rbd image 'img1':size 200 GiB in 51200 objects...略...# 6. 删除镜像[ceph: root@ceph1 /]# rbd rm img1Removing image: 100% complete...done.

ceph客户端

  • 客户端使用ceph块存储需要解决的问题:

    • 怎么用?装软件
    • ceph集群在哪?通过配置文件说明集群地址
    • 权限。keyring文件
# 1. 拷贝/linux-soft/s2/zzg/ceph_soft/cephclient-rpm/目录内所有rpm包到pubserver的/var/ftp/rpms目录# 2. 更新yum仓库[root@pubserver ~]# createrepo /var/ftp/rpms/# 3. 安装ceph客户端软件[root@client1 ~]# yum install -y ceph-common# 4. 将ceph1上的配置文件和密钥keyring文件拷贝给客户端[root@ceph1 ceph_soft]# scp /etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.conf 192.168.88.10:/etc/ceph/# 5. 在客户端验证是否可以操作ceph[root@client1 ~]# rbd create img1 --size 10G[root@client1 ~]# rbd lsimg1[root@client1 ~]# rbd info img1rbd image 'img1':size 10 GiB in 2560 objects...略...# 6. 将ceph镜像映射为本地硬盘[root@client1 ~]# rbd map img1/dev/rbd0    # rbd为固定名称,0是编号# 7. 查看[root@client1 ~]# lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda      8:0    0   60G  0 disk └─sda1   8:1    0   60G  0 part /sr0     11:0    1 10.5G  0 rom  rbd0   253:0    0   10G  0 disk   # rbd0来自于ceph镜像[root@client1 ~]# rbd showmapped  # 镜像img1映射为了本地硬盘rbd0id  pool  namespace  image  snap  device   0   rbd              img1   -     /dev/rbd0# 8. 应用[root@client1 ~]# mkdir /data[root@client1 ~]# mkfs.xfs /dev/rbd0[root@client1 ~]# mount /dev/rbd0 /data/[root@client1 ~]# df -h /data/Filesystem      Size  Used Avail Use% Mounted on/dev/rbd0        10G  105M  9.9G   2% /data[root@client1 ~]# cp /etc/hosts /data/[root@client1 ~]# ls /data/hosts
  • 删除
# 查看img1的状态[root@client1 ~]# rbd status img1# 按以下步骤删除img1[root@client1 ~]# umount /dev/rbd0[root@client1 ~]# rbd unmap img1[root@client1 ~]# rbd rm img1Removing image: 100% complete...done.

这篇关于Ceph概述、准备ceph部署环境、cephadm概述、安装Ceph集群、ceph块存储、存储池、rbd镜像管理、ceph客户端配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/693869

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd