③ Ceph—RBD块设备介绍与创建

一、RBD介绍

RBD即RADOS Block Device的简称,RBD块存储是最稳定且最常用的存储类型。RBD块设备类似磁盘可以被挂载。 RBD块设备具有快照、多副本、克隆和一致性等特性,数据以条带化的方式存储在Ceph集群的多个OSD中。如下是对Ceph RBD的理解。

  • RBD 就是 Ceph 里的块设备,一个 4T 的块设备的功能和一个 4T 的 SATA 类似,挂载的 RBD 就可以当磁盘用;
  • resizable:这个块可大可小;
  • data striped:这个块在Ceph里面是被切割成若干小块来保存,不然 1PB 的块怎么存的下;
  • thin-provisioned:精简置备,1TB 的集群是能创建无数 1PB 的块的。其实就是块的大小和在 Ceph 中实际占用大小是没有关系的,刚创建出来的块是不占空间,今后用多大空间,才会在 Ceph 中占用多大空间。举例:你有一个 32G 的 U盘,存了一个2G的电影,那么 RBD 大小就类似于 32G,而 2G 就相当于在 Ceph 中占用的空间 ;

块存储本质就是将裸磁盘或类似裸磁盘(lvm)设备映射给主机使用,主机可以对其进行格式化并存储和读取数据,块设备读取速度快但是不支持共享。

ceph可以通过内核模块和librbd库提供块设备支持。客户端可以通过内核模块挂在rbd使用,客户端使用rbd块设备就像使用普通硬盘一样,可以对其就行格式化然后使用;客户应用也可以通过librbd使用ceph块,典型的是云平台的块存储服务(如下图),云平台可以使用rbd作为云的存储后端提供镜像存储、volume块或者客户的系统引导盘等。

使用场景:

  • 云平台(OpenStack做为云的存储后端提供镜像存储)
  • K8s容器
  • map成块设备直接使用
  • ISCIS,安装Ceph客户端

二、RBD常用命令

命令 功能
rbd create 创建块设备映像
rbd ls 列出 rbd 存储池中的块设备
rbd info 查看块设备信息
rbd diff 可以统计 rbd 使用量
rbd map 映射块设备
rbd showmapped 查看已映射块设备
rbd remove 删除块设备
rbd resize 更改块设备的大小

三、RBD配置操作

3.1 RBD挂载到操作系统

1、创建rbd使用的pool

#32 32: PG数和PGP数(PG内包含的对象);PG会随着容量的增加也会动态的扩容;生产上需要提前规划好数量
ceph osd pool create rbd  32 32
#给rbd使用的pool标识成rbd
ceph osd pool application enable rbd rbd 

#查看rbd的pool
[root@cephnode01 my-cluster]# ceph osd pool ls detail
pool 5 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode warn last_change 68 flags hashpspool stripe_width 0

2、创建一个10G的块设备

rbd create --size 10240 image01 

3、查看块设备

rbd ls
rbd info image01
rados -p rbd ls --all

4、禁用当前系统内核不支持的feature

rbd feature disable image01 exclusive-lock, object-map, fast-diff, deep-flatten

5、将块设备映射到系统内核

rbd map image01 
rbd showmapped

6、格式化块设备镜像

mkfs.xfs /dev/rbd0

7、mount到本地

mount /dev/rbd0 /mnt

8、创建文件并查看

[root@cephnode01 my-cluster]# touch /mnt/{a..g}lcx.txt
[root@cephnode01 my-cluster]# rados -p rbd ls --all
    rbd_data.28209e4598ff7.0000000000000500
    rbd_id.image01
    rbd_header.28209e4598ff7
    rbd_data.28209e4598ff7.0000000000000820
    rbd_directory
    rbd_data.28209e4598ff7.0000000000000460
    rbd_data.28209e4598ff7.00000000000006e0
    rbd_info
    rbd_data.28209e4598ff7.00000000000000a0
    rbd_data.28209e4598ff7.00000000000009ff
    rbd_data.28209e4598ff7.00000000000005a0
    rbd_data.28209e4598ff7.0000000000000000
    rbd_data.28209e4598ff7.0000000000000780
...

9、取消块设备和内核映射

umount /mnt
rbd unmap image01 

10、删除RBD块设备

rbd rm image01

如果想在其他机器上使用ceph块设备需要下载ceph-common客户端

3.2 快照配置

快照会占用集群很大的空间,建议对重要的块定期拍摄快照;或者用其他方法进行备份

1、创建快照

rbd create --size 10240 image02 
#前面是rbd的名称,后面是快照的名称
rbd snap create image02@image02_snap01

2、列出创建的快照

rbd snap list image02
或
rbd ls -l

3、查看快照详细信息

rbd info image02@image02_snap01

4、克隆快照(快照必须处于被保护状态才能被克隆;就是不能对快照做任何的操作)

#创建一个克隆的pool
ceph osd pool create kube 16 16
ceph osd pool application enable kube kube
#克隆
rbd snap protect image02@image02_snap01
rbd clone rbd/image02@image02_snap01 kube/image02_clone01

#查看kube的pool中的快照
rbd ls -p kube
image02_clone01

5、查看快照的命令children(可以查看哪个是子快照)

rbd children image02

6、去掉快照的parent(去掉克隆的块关系;就是成为了独立的快照)

rbd flatten kube/image02_clone01

7、恢复快照

rbd snap rollback image02@image02_snap01

8、删除快照

#先取消保护
rbd snap unprotect image02@image02_snap01
rbd snap remove image02@image02_snap01

3.3 导出导入RBD镜像

1、导出RBD镜像

rbd export image02 /tmp/image02
ll -h /tmp/image02 
-rw-r--r-- 1 root root 10G May  7 11:36 /tmp/image02

2、导入RBD镜像

#可以删除掉原理的镜像 
rbd remove image02
rbd import /tmp/image02 rbd/image02 --image-format 2 

3、查看导入的rbd

rbd ls
rbd info image02

更新所有节点的配置文件的命令

ceph-deploy --overwrite-conf config push cephnode01 cephnode02 cephnode03 

启动所有守护进程

systemctl start ceph.target

3.4 扩容

扩容对数据没有影响

1、使用命令rbd resize进行扩容

#image02为10G
[root@cephnode01 my-cluster]# rbd ls
image02

2、扩容到20G

rbd --image image02 resize --size 20480
[root@cephnode01 my-cluster]# rbd info image02
rbd image 'image02':
    size 20 GiB in 5120 objects     #现在扩容到20G了
    order 22 (4 MiB objects)
    snapshot_count: 0
    id: 28338cfe50192
    block_name_prefix: rbd_data.28338cfe50192
    format: 2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
    op_features: 
    flags: 
    create_timestamp: Thu May  7 11:37:51 2020
    access_timestamp: Thu May  7 11:37:51 2020
    modify_timestamp: Thu May  7 11:37:51 2020

3、缩容

XFS文件系统不支持缩小

# --allow-shrink参数
rbd --image image02 resize --size  10240 --allow-shrink 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352