ceph luminous版部署bluestore

Posted wshenjin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ceph luminous版部署bluestore相关的知识,希望对你有一定的参考价值。

简介

与filestore最大的不同是,bluestore可以直接读写磁盘,即对象数据是直接存放在裸设备上的,这样解决了一直被抱怨的数据双份写的问题

Bluestore直接使用一个原始分区来存放ceph对象数据,不再需要任何文件系统,也就是说一个OSD对应一个裸分区;而OSD的元数据存放在一个名为RocksDB的键值对数据库中

默认的Bluestore数据存放模型:

一个OSD对应一个磁盘

磁盘的第一个分区:默认只有100MB,XFS文件系统,用于存放osd相关的?ceph_fsid、fsid、keyring等,并且其中包含一个名为block的软连接用于指向第二个分区。该分区默认挂载到/var/lib/ceph/osd/ceph-X位置。

第二个分区:原始分区,第一个分区中的block软连接指向的就是这个分区,这个分区是真正存放对象数据的分区。

部署

两个节点:ceph0、ceph1

ceph0: mon.a、mds、mgr、osd.0、osd.1
ceph1: mon.b、osd.2、osd.3

操作系统:ubuntu14.04
网络配置:

ceph1: 管理网络,eth0, 192.168.31.100
? ? ? ?存储网络,eth1, 172.16.31.100
ceph2: 管理网络,eth0, 192.168.31.101
? ? ? ?存储网络,eth1, 172.16.31.101

环境配置和https://www.cnblogs.com/wshenjin/p/11496650.html一致
OSD的部署采用bluestore的方式

配置:

[osd.0]
host = ceph0
devs = /dev/sdb1
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true
[osd.1]
host = ceph0
devs = /dev/sdc1
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true

[osd.2]
host = ceph1
devs = /dev/sdb1
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true

[osd.3]
host = ceph1
devs = /dev/sdc1
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true

ceph-disk prepare磁盘,一般执行完这条命令,新建的OSD已经up和in:

root@ceph0:~#?ceph-disk prepare --bluestore? /dev/sdb

如果osd没有up,可以通过ceph-disk activate激活磁盘:

root@ceph0:~#?ceph-disk activate /dev/sdb1

其他节点用同样的方式部署osd
查看:

root@ceph0:~# ceph osd stat??
4 osds: 4 up, 4 in

root@ceph0:~# ceph osd tree?
ID CLASS WEIGHT? TYPE NAME? ? ? STATUS REWEIGHT PRI-AFF?
-1? ? ? ?0.19476 root default? ? ? ? ? ? ? ? ? ? ? ? ? ?
-3? ? ? ?0.09738? ? ?host ceph0? ? ? ? ? ? ? ? ? ? ? ? ?
?0? ?hdd 0.04869? ? ? ? ?osd.0? ? ? up? 1.00000 1.00000?
?1? ?hdd 0.04869? ? ? ? ?osd.1? ? ? up? 1.00000 1.00000?
-5? ? ? ?0.09738? ? ?host ceph1? ? ? ? ? ? ? ? ? ? ? ? ?
?2? ?hdd 0.04869? ? ? ? ?osd.2? ? ? up? 1.00000 1.00000?
?3? ?hdd 0.04869? ? ? ? ?osd.3? ? ? up? 1.00000 1.00000?

一些报错

报错1:

ERROR: error creating empty object store in /var/lib/ceph/tmp/mnt.cq2OM8: (5) Input/output error

原因:扇区中仍然存在上一个版本osd相关元数据信息
解决:

#使用0重写前一个G内容
root@ceph0:~#?dd if=/dev/zero of=/dev/sdb bs=1M count=1024? 
#先破坏磁盘所有分区,再将分区由mgr转为gpt格式分区?
root@ceph0:~#?sgdisk -Z -g /dev/sdb 

参考:https://blog.csdn.net/Z_Stand/article/details/90383762
报错2:

ERROR: error creating empty object store in /var/lib/ceph/tmp/mnt.Ubow06: (17) File exists

解决:
配置文件里去掉osd data字段即可,不知道为啥

报错3:

Invalid partition data!
'/sbin/sgdisk -xxxx' failed with status code 2

解决:

root@ceph0:~# ceph-disk zap /dev/sdc

以上是关于ceph luminous版部署bluestore的主要内容,如果未能解决你的问题,请参考以下文章

开源实践分享:Ceph bluestore部署实践

ceph扩展bluestore的db分区

Ceph分布式存储(luminous)部署文档-ubuntu18-04

ceph luminous版本编译及部署

Ceph实战入门之安部署篇

ceph-luminous-cluster