Bluefs中的DB和WAL分区

BlueFS

Bluefs是一个简易的日志型文件系统,它恰倒好处地实现了RocksDB::env所定义的接口。

关于RocksDB::Env 是用来固化RocksDB运行过程中产生的.sst(Sorting string table,有序字符串表,键值对的磁盘存储形式)和.log(wal:write ahead log)文件。因为日志文件的功能是为了提升磁盘的写速度,所以在BlueFs的设计上支持将.sst和.log文件分开存储,以方便将.log文件单独使用速度更快的固态存储设备例如NVMSSD或者NVRRAM存储。

BlueFs将整个BlueStore的存储空间分为三个层次 :

  • 慢速(Slow)空间
    主要用于存储对象数据,可由普通大容量机械盘提供,由BlueStore自行管理
  • 高速(DB)空间
    存储BlueStore内部产生的元数据,可由普通SSD提供,需求小于(慢速空间)。
  • 超高速(WAL)空间
    主要存储RocksDB内部产生的.log文件,可由SSD或者NVRAM等时延相较普通SSD更小的设备充当。容量需求和(高速空间)相当,同样由BlueFs直接管理。

这里普及一下BlueStore相关的内容:BlueStore最早在Jewel版本中引入,用于取代传统的fileStore,作为新一代高性能对象存储后端。同时,它也考虑了未来的效率,同样会适配全ssd以及NVME SSD闪存,内部的存储中将高效索引的元数据引擎LevelDB 替换为RocksDB。
这里的性能提升主要是之前的FileStore存储后端是通过操作系统自带的本地文件系统间接管理磁盘,所以所有针对Rados(ceph的核心底层,具有自愈、自管理的智能存储节点构建的高可靠、自治、分布式对象存储系统)的对象操作,都需要预先转换为能够被本地文件系统是被、符合posi语义的文件操作,这个过程效率较低。而BlueStore性能提升主要有两个方面:第一个也是最根本的原因 它选择直接向对象操作,从而大大得缩短了io路径;第二个是BuleStore选择将元数据和用户数据严格分离,因此BlueStore中的元数据可以单独采用高速固态存储设备例如 NVME SSD

DB WAL分区

BlueStore选择将DB 和WAL 分区交给BlueFs来使用,此时这两个分区分别存储BlueStore后端产生的元数据和日志文件,这样整个存储系统通过元数据对数据的操作效率极高,同时通过日志事务来维持系统的稳定性,整个系统相对来说稳定性就极高。

具体DB WAL工作过程是如何通过BlueFs来组织的,一些实现上的细节建议大家阅读ceph:BlueFs.cc以及由中兴ceph团队写的书籍《ceph设计原理与实现》

接下来说说如何在实际过程中进行如何将ceph的rados的后台db wal分区的部署在ssd上

部署前提

  • 拥有ceph 环境 ceph -s查看
  • 存储设备上拥有至少1块hdd存储,以及一块ssd固态存储盘

以下是我较为麻烦的手动操作,大家可以将这些部署命令转换为脚本,也是我接下来要写的脚本代码

开始

 sgdisk -n 1:+2G:+50G /dev/sdv
 sgdisk -n 2:0:+2G /dev/sdv

第一个命令是对盘符为sdv的固态ssd盘进行db分区的创建(可以通过lsblk查看ssd的盘符),大小为50G,这里的大小可以自行设定。当然在创建之前也要考虑好wal分区的大小,将以上第一个命令的+2G,改为你设定的大小。接着执行第二个,这个是要做为wal分区,所有开始数字为2,最后设定的大小为2G,执行好之后 可以通过命令lsblk来查看结果,如下:

sdv                      65:80   0 447.1G  0 disk 
鈹溾攢sdv1                   65:81   0    50G  0 part 
鈹溾攢sdv2                   65:82   0     2G  0 part 

如果没有显示分区,不用着急,先试着刷一下分区表使用命令partprobe
接着

chown ceph:ceph /dev/sdv1
chown ceph:ceph /dev/sdv2
chmod 660 /dev/sdv1
chmod 660 /dev/sdv2

更改这两个分区的用户组合组权限,使得/dev/sdv的盘支持ceph集群中所有用户的读写,即同一ceph集群中的其他节点设备也可以将元数据和日志文件存储在该节点的ssd盘上.最后想要确认一下结果可以ls -l查看一下

[root@node1 ~]# ls -l /dev/sdv1
brw-rw---- 1 ceph ceph 65, 81 Oct 26 19:29 /dev/sdv1

接着:

ceph-disk -v prepare /dev/sdb --block.db /dev/sdv1 --block.wal /dev/sdv2 
ceph-disk -v activate /dev/sdb1

这里主要是对磁盘进行准备和激活,可以通过命令看出,我们将/dev/sdb/的元数据的db文件指向sdv1,日志的wal文件指向sdv2存储

最后的结果应该是拥有ceph的osd挂载点,同时osd是up状态.以下是我20块hdd盘每五个将db 和wal指向一个ssd作出的结果

sdb                       8:16   0   5.5T  0 disk 
鈹溾攢sdb1                    8:17   0   100M  0 part /var/lib/ceph/osd/ceph-0
鈹斺攢sdb2                    8:18   0   5.5T  0 part 
sdc                       8:32   0   5.5T  0 disk 
鈹溾攢sdc1                    8:33   0   100M  0 part /var/lib/ceph/osd/ceph-1
鈹斺攢sdc2                    8:34   0   5.5T  0 part 
sdd                       8:48   0   5.5T  0 disk 
鈹溾攢sdd1                    8:49   0   100M  0 part /var/lib/ceph/osd/ceph-2
鈹斺攢sdd2                    8:50   0   5.5T  0 part 
sde                       8:64   0   5.5T  0 disk 
鈹溾攢sde1                    8:65   0   100M  0 part /var/lib/ceph/osd/ceph-3
鈹斺攢sde2                    8:66   0   5.5T  0 part 
sdf                       8:80   0   5.5T  0 disk 
鈹溾攢sdf1                    8:81   0   100M  0 part /var/lib/ceph/osd/ceph-4
鈹斺攢sdf2                    8:82   0   5.5T  0 part 
sdg                       8:96   0   5.5T  0 disk 
鈹溾攢sdg1                    8:97   0   100M  0 part /var/lib/ceph/osd/ceph-5
鈹斺攢sdg2                    8:98   0   5.5T  0 part 
sdh                       8:112  0   5.5T  0 disk 
鈹溾攢sdh1                    8:113  0   100M  0 part /var/lib/ceph/osd/ceph-6
鈹斺攢sdh2                    8:114  0   5.5T  0 part 
sdi                       8:128  0   5.5T  0 disk 
鈹溾攢sdi1                    8:129  0   100M  0 part /var/lib/ceph/osd/ceph-7
鈹斺攢sdi2                    8:130  0   5.5T  0 part 
sdj                       8:144  0   5.5T  0 disk 
鈹溾攢sdj1                    8:145  0   100M  0 part /var/lib/ceph/osd/ceph-8
鈹斺攢sdj2                    8:146  0   5.5T  0 part 
sdk                       8:160  0   5.5T  0 disk 
鈹溾攢sdk1                    8:161  0   100M  0 part /var/lib/ceph/osd/ceph-9
鈹斺攢sdk2                    8:162  0   5.5T  0 part 
sdl                       8:176  0   5.5T  0 disk 
鈹溾攢sdl1                    8:177  0   100M  0 part /var/lib/ceph/osd/ceph-10
鈹斺攢sdl2                    8:178  0   5.5T  0 part 
sdm                       8:192  0   5.5T  0 disk 
鈹溾攢sdm1                    8:193  0   100M  0 part /var/lib/ceph/osd/ceph-11
鈹斺攢sdm2                    8:194  0   5.5T  0 part 
sdn                       8:208  0   5.5T  0 disk 
鈹溾攢sdn1                    8:209  0   100M  0 part /var/lib/ceph/osd/ceph-12
鈹斺攢sdn2                    8:210  0   5.5T  0 part 
sdo                       8:224  0   5.5T  0 disk 
鈹溾攢sdo1                    8:225  0   100M  0 part /var/lib/ceph/osd/ceph-13
鈹斺攢sdo2                    8:226  0   5.5T  0 part 
sdp                       8:240  0   5.5T  0 disk 
鈹溾攢sdp1                    8:241  0   100M  0 part /var/lib/ceph/osd/ceph-14
鈹斺攢sdp2                    8:242  0   5.5T  0 part 
sdq                      65:0    0   5.5T  0 disk 
鈹溾攢sdq1                   65:1    0   100M  0 part /var/lib/ceph/osd/ceph-15
鈹斺攢sdq2                   65:2    0   5.5T  0 part 
sdr                      65:16   0   5.5T  0 disk 
鈹溾攢sdr1                   65:17   0   100M  0 part /var/lib/ceph/osd/ceph-16
鈹斺攢sdr2                   65:18   0   5.5T  0 part 
sds                      65:32   0   5.5T  0 disk 
鈹溾攢sds1                   65:33   0   100M  0 part /var/lib/ceph/osd/ceph-17
鈹斺攢sds2                   65:34   0   5.5T  0 part 
sdt                      65:48   0   5.5T  0 disk 
鈹溾攢sdt1                   65:49   0   100M  0 part /var/lib/ceph/osd/ceph-18
鈹斺攢sdt2                   65:50   0   5.5T  0 part 
sdu                      65:64   0   5.5T  0 disk 
鈹溾攢sdu1                   65:65   0   100M  0 part /var/lib/ceph/osd/ceph-19
鈹斺攢sdu2                   65:66   0   5.5T  0 part 
sdv                      65:80   0 447.1G  0 disk 
鈹溾攢sdv1                   65:81   0    50G  0 part 
鈹溾攢sdv2                   65:82   0     2G  0 part 
鈹溾攢sdv3                   65:83   0    50G  0 part 
鈹溾攢sdv4                   65:84   0     2G  0 part 
鈹溾攢sdv5                   65:85   0    50G  0 part 
鈹溾攢sdv6                   65:86   0     2G  0 part 
鈹溾攢sdv7                   65:87   0    50G  0 part 
鈹溾攢sdv8                   65:88   0     2G  0 part 
鈹溾攢sdv9                   65:89   0    50G  0 part 
鈹斺攢sdv10                  65:90   0     2G  0 part 
sdw                      65:96   0 447.1G  0 disk 
鈹溾攢sdw1                   65:97   0    50G  0 part 
鈹溾攢sdw2                   65:98   0     2G  0 part 
鈹溾攢sdw3                   65:99   0    50G  0 part 
鈹溾攢sdw4                   65:100  0     2G  0 part 
鈹溾攢sdw5                   65:101  0    50G  0 part 
鈹溾攢sdw6                   65:102  0     2G  0 part 
鈹溾攢sdw7                   65:103  0    50G  0 part 
鈹溾攢sdw8                   65:104  0     2G  0 part 
鈹溾攢sdw9                   65:105  0    50G  0 part 
鈹斺攢sdw10                  65:106  0     2G  0 part 
sdx                      65:112  0 447.1G  0 disk 
鈹溾攢sdx1                   65:113  0    50G  0 part 
鈹溾攢sdx2                   65:114  0     2G  0 part 
鈹溾攢sdx3                   65:115  0    50G  0 part 
鈹溾攢sdx4                   65:116  0     2G  0 part 
鈹溾攢sdx5                   65:117  0    50G  0 part 
鈹溾攢sdx6                   65:118  0     2G  0 part 
鈹溾攢sdx7                   65:119  0    50G  0 part 
鈹溾攢sdx8                   65:120  0     2G  0 part 
鈹溾攢sdx9                   65:121  0    50G  0 part 
鈹斺攢sdx10                  65:122  0     2G  0 part 
sdy                      65:128  0 447.1G  0 disk 
鈹溾攢sdy1                   65:129  0    50G  0 part 
鈹溾攢sdy2                   65:130  0     2G  0 part 
鈹溾攢sdy3                   65:131  0    50G  0 part 
鈹溾攢sdy4                   65:132  0     2G  0 part 
鈹溾攢sdy5                   65:133  0    50G  0 part 
鈹溾攢sdy6                   65:134  0     2G  0 part 
鈹溾攢sdy7                   65:135  0    50G  0 part 
鈹溾攢sdy8                   65:136  0     2G  0 part 
鈹溾攢sdy9                   65:137  0    50G  0 part 
鈹斺攢sdy10                  65:138  0     2G  0 part

查看osd状态,这些是我已经创建好crush map 后的,本应该是显示up状态,在crush map之外

 -1       20.00000 root default                             
 -7        5.00000     host host1                           
  0   hdd  1.00000         osd.0        up  1.00000 1.00000 
  1   hdd  1.00000         osd.1        up  1.00000 1.00000 
  2   hdd  1.00000         osd.2        up  1.00000 1.00000 
  3   hdd  1.00000         osd.3        up  1.00000 1.00000 
  4   hdd  1.00000         osd.4        up  1.00000 1.00000 
 -8        5.00000     host host2                           
  5   hdd  1.00000         osd.5        up  1.00000 1.00000 
  6   hdd  1.00000         osd.6        up  1.00000 1.00000 
  7   hdd  1.00000         osd.7        up  1.00000 1.00000 
  8   hdd  1.00000         osd.8        up  1.00000 1.00000 
  9   hdd  1.00000         osd.9        up  1.00000 1.00000 
 -9        5.00000     host host3                           
 10   hdd  1.00000         osd.10       up  1.00000 1.00000 
 11   hdd  1.00000         osd.11       up  1.00000 1.00000 
 12   hdd  1.00000         osd.12       up  1.00000 1.00000 
 13   hdd  1.00000         osd.13       up  1.00000 1.00000 
 14   hdd  1.00000         osd.14       up  1.00000 1.00000 
-10        5.00000     host host4                           
 15   hdd  1.00000         osd.15       up  1.00000 1.00000 
 16   hdd  1.00000         osd.16       up  1.00000 1.00000 
 17   hdd  1.00000         osd.17       up  1.00000 1.00000 
 18   hdd  1.00000         osd.18       up  1.00000 1.00000 
 19   hdd  1.00000         osd.19       up  1.00000 1.00000 

至此我们的db wal 分区部署到此就麻烦得告一段落,内部实现细节还需持续学习了解

脚本代码一定要好好学学,对于一些集中性的操作写在脚本中,会极为方便,也能提升自己的工作效率。

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

推荐阅读更多精彩内容