0


Ceph集群RBD块存储概念以及基本使用

Ceph集群RBD块存储概念以及基本使用

文章目录

1.RBD块存储核心概念

1.1.RBD块存储介绍

RBD(Reliable Block Device)组件是一种构建在RADOS集群之上为客户端提供块设备存储接口接口的中间层,提供的块存储服务可以形成一个裸磁盘,提供格式化、映射的功能,挂载到服务器中。

这类的客户端包括虚拟化KVM和云计算OpenStack。

RBD组件支持存储空间的动态扩容,也可以借助RADOS实现快照、副本和一致性。

客户端访问RBD的方式:

  • 通过内核模块rbd.ko将块存储映射成本地的一块磁盘,例如/dev/vdbx等等,可以进行格式化和分区。
  • 通过librbd接口,KVM虚拟化就是使用这种接口。

创建完RBD块存储类型的存储后,从块存储中映射出来的裸磁盘,如果想要被集群之外的其他服务器连接使用,该服务器需要具备以下三个条件:

  • 该服务器需要安装RBD组件。
  • 该服务器的网络需要与Ceph集群的Public网络互相通信。
  • Ceph集群的keyring文件要拷贝到该服务器中。

Ceph集群的RBD块存储通常情况下是给虚拟化集群做底层存储使用,有专门的接口连接,如果想单独为某个服务器挂载块存储虚拟出来的磁盘,就需要先具备以上的三个条件。

单独服务器挂载块存储的磁盘一般都是通过内核级别进行挂载。

RBD存储是建立在Pool资源池中的,一个Pool资源池中可以创建多个RBD块存储设备。

1.2.RBD块存储数据写入流程

与之前描述的OSD数据写入流程大致一样。

一个数据文件首先会被拆分成多个Object对象,每一个Object对象文件都有一个Oid,通过Hash算法将Oid进行计算,在通过Mask掩码计算出在Pool资源池中某个PG的ID,拿到这个PGID后将对象文件存储到PG中,最后在通过GRUSH算法将PG中的Object对象写入到不同的OSD中。

不同的Object对象文件会写入到不同到PG中,PG中的Object对象也会写入到多个不同的OSD中。

在这里插入图片描述

2.在Ceph集群中创建RBD块存储并挂载到服务器

实现步骤:

1)为RBD块存储创建一个Pool资源池。

2)基于Pool资源池创建出一个块存储。

3)由于是Centos7系统,使用内核挂载块设备存储时,对于默认创建的RBD块存储,有一些特性不支持,需要先将RBD中不支持特性禁用。

4)将RBD块存储映射成内核级别能挂载使用的裸磁盘。

5)格式化并使用。

RBD块存储映射成的磁盘是瘦分配模式,也就是说虽然映射的空间是那么大,比如说是10G,但是这10G不会立刻分配给客户端,而是客户端使用多少就给分配多少,直到达到限制。

2.1.为RBD块存储社保创建一个Pool资源池

创建一个PG数量为128、PGP数量为128的Pool资源池。

1.创建pool资源池
[root@ceph-node-1 ~]# ceph osd pool create ceph-rbd-data 128 128
pool 'ceph-rbd-data' created

2.为资源池设置应用模式
[root@ceph-node-1 ~]# ceph osd pool application enable ceph-rbd-data rbd
enabled application 'rbd' on pool 'ceph-rbd-data'

2.查看创建的pool资源池
[root@ceph-node-1 ~]# ceph osd lspools
1 ceph-rbd-data

如果不为资源池设置应用模式,在查看集群信息时,就会有告警提示,也可以执行下列命令自动为RBD块存储的资源池分配应用模式:

rbd pool init {pool_name}

2.2.创建一个RBD块存储设备

命令格式:

rbd create -p {pool_name} --image {rbd_name} --size ${size}
-p

:指定pool资源池的名称。

--image

:指定rbd块存储设备的名称。

--size

:块存储的大小。

创建RBD块存储有两种命令风格:

rbd create -p {pool_name} --image {rbd_name} --size ${size}
rbd create {pool_name}/{rbd_name} --size ${size}

rbd命令都可以使用{pool_name}/{rbd_name}这种方式对资源池中的块设备进行操作。

1.创建一个rbd块设备
[root@ceph-node-1 ~]# rbd create -p ceph-rbd-data --image rbd-data.img --size 10G

2.查看pool资源池中创建的rbd块设备
[root@ceph-node-1 ~]# rbd -p ceph-rbd-data ls
rbd-data.img

3.查看rbd块设备的信息
[root@ceph-node-1 ~]# rbd info ceph-rbd-data/rbd-data.img
rbd image 'rbd-data.img':                            #块设备的名称
    size 10 GiB in 2560 objects                        #块设备的大小为10G,可以存放2560个对象文件,一个对象文件为4MB
    order 22 (4 MiB objects)                        #当前已经产生的对象文件数量
    snapshot_count: 0                                #快照数量
    id: 1275a517470                                    #rbd块存储的id号
    block_name_prefix: rbd_data.1275a517470                #块设备名称的前缀,所有的object文件命名中都会带有这个前缀
    format: 2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten                #rbd设备的特性,有部分不支持,下面会禁用
    op_features: 
    flags: 
    create_timestamp: Fri Apr  1 17:23:38 2022
    access_timestamp: Fri Apr  1 17:23:38 2022
    modify_timestamp: Fri Apr  1 17:23:38 2022

2.3.通过内核级别挂载使用RBD块存储设备

通过Linux内核将块设备映射成可挂载使用的磁盘设备。

[root@ceph-node-1 ~]# rbd map ceph-rbd-data/rbd-data.img
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable ceph-rbd-data/rbd-data.img object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address

可以看到在执行映射命令时报错了,这个错误是指Ceph RBD的一些特性

 ceph-rbd-data/rbd-data.img object-map fast-diff deep-flatten

等,当前的操作系统不支持,我们需要收到将这些特性禁用,也可以在创建RBD块设备时就将这些特性给禁用。

2.4.将RBD块存储中系统不支持的特性禁用

1.查看RBD块设备中有哪些特性
[root@ceph-node-1 ~]# rbd -p ceph-rbd-data --image rbd-data.img info
rbd image 'rbd-data.img':
    size 10 GiB in 2560 objects
    order 22 (4 MiB objects)
    snapshot_count: 0
    id: 1275a517470
    block_name_prefix: rbd_data.1275a517470
    format: 2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten            #将layering以后的特性全部禁用
    op_features: 
    flags: 
    create_timestamp: Fri Apr  1 17:23:38 2022
    access_timestamp: Fri Apr  1 17:23:38 2022
    modify_timestamp: Fri Apr  1 17:23:38 2022
    
2.禁用操作系统不支持的特性
[root@ceph-node-1 ~]# rbd feature disable ceph-rbd-data/rbd-data.img deep-flatten
[root@ceph-node-1 ~]# rbd feature disable ceph-rbd-data/rbd-data.img fast-diff
[root@ceph-node-1 ~]# rbd feature disable ceph-rbd-data/rbd-data.img object-map
[root@ceph-node-1 ~]# rbd feature disable ceph-rbd-data/rbd-data.img exclusive-lock

3.再次查看RBD块设备的特性
[root@ceph-node-1 ~]# rbd -p ceph-rbd-data --image rbd-data.img info
rbd image 'rbd-data.img':
    size 10 GiB in 2560 objects
    order 22 (4 MiB objects)
    snapshot_count: 0
    id: 1275a517470
    block_name_prefix: rbd_data.1275a517470
    format: 2
    features: layering                    #仅剩下了layering
    op_features: 
    flags: 
    create_timestamp: Fri Apr  1 17:23:38 2022
    access_timestamp: Fri Apr  1 17:23:38 2022
    modify_timestamp: Fri Apr  1 17:23:38 2022

2.5.再次执行块设备的内核映射

已经将系统不支持的特性全部禁用了,下面再次执行内核映射命令,将块存储映射成一块磁盘。

[root@ceph-node-1 ~]# rbd map ceph-rbd-data/rbd-data.img
/dev/rbd0

2.6.查看块设备映射的磁盘

[root@ceph-node-1 ~]# rbd device list
id pool          namespace image        snap device    
0  ceph-rbd-data           rbd-data.img -    /dev/rbd0 

#可以看到映射了一块/dev/rbd0名称的磁盘

[root@ceph-node-1 ~]# lsblk /dev/rbd0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
rbd0 252:0    0  10G  0 disk 

2.7.格式化并使用这块磁盘

1.格式化磁盘
[root@ceph-node-1 ~]# mkfs.xfs /dev/rbd0

2.挂载并使用磁盘
[root@ceph-node-1 ~]# mkdir /prod
[root@ceph-node-1 ~]# mount /dev/rbd0 /prod
[root@ceph-node-1 ~]# df -hT /prod
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/rbd0      xfs    10G   33M   10G    1% /prod

3.在磁盘中写入文件
[root@ceph-node-1 ~]# touch /prod/1.txt
[root@ceph-node-1 ~]# echo 111 > /prod/1.txt
[root@ceph-node-1 ~]# cat /prod/1.txt
111

3.RBD块设备其他操作

3.1.取消映射的磁盘

[root@ceph-node-1 ~]# rbd unmap /dev/rbd0

3.2.删除创建的块设备

[root@ceph-node-1 ~]# umount /dev/rbd0
[root@ceph-node-1 ~]# rbd unmap /dev/rbd0
[root@ceph-node-1 ~]# rbd -p ceph-rbd-data rm --image rbd-data.img
Removing image: 100% complete...done.

本文转载自: https://blog.csdn.net/weixin_44953658/article/details/125343298
版权归原作者 Jiangxl~ 所有, 如有侵权,请联系我们删除。

“Ceph集群RBD块存储概念以及基本使用”的评论:

还没有评论