簡介
與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