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/11806761.html一致
OSD的部署采用bluestore的方式
配置:
[osd.0]
host = ceph0
devs = /dev/sdb1
public addr = 192.168.31.100
cluster addr = 172.16.31.100
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true
[osd.1]
host = ceph0
devs = /dev/sdc1
public addr = 192.168.31.100
cluster addr = 172.16.31.100
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true
[osd.2]
host = ceph1
devs = /dev/sdb1
public addr = 192.168.31.101
cluster addr = 172.16.31.101
enable experimental unrecoverable data corrupting features = bluestore rocksdb
osd objectstore = bluestore
bluestore = true
[osd.3]
host = ceph1
devs = /dev/sdc1
public addr = 192.168.31.101
cluster addr = 172.16.31.101
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