• 读的


    int BlueStore::_minimal_open_bluefs(bool create)
    {
        bluefs = new BlueFS(cct);
    
        /**
         * 在这里,会创建三个块设备block.db、block、block.wal
         * 
         * bluefs->add_block_device用于创建一个块设备,进行open初始化,添加此新建的块设备到bdev[id]=b, 
         * 创建IOcontext到ioc[id] = new IOContext(cct, NULL)。
         * 
         * block.db: 通过调用add_block_device将block.db设备加入到bluefs的管理之中,block.db负责存储BlueStore内部产生的元数据。
         * 会调用_check_or_set_bdev_label函数把一些label写入到block.db设备中,或从block.db设读取一些label。如果是创建osd,
         * 则还需要调用add_block_extent将这个磁盘设备中的空间加入到bluefs的管理之中,其空间为SUPER_RESERVED(8192字节)后的空间,
         * 前SUPER_RESERVED字节空间负责存放一些label信息和bluefs的super块信息。
         *
         * block: block设备与bluestore共享,在BlueStore::mkfs()的_open_bdev()中也创建了该设备。
         * 调用bluefs->add_block_device将block设备加入到bluefs的管理之中,block设备主要用于存储对象数据。
         * 并计算block设备中给bluefs使用的空间,还要将这些空间加入到bluefs_extents中,osd上电启动时,_open_fm函数会将
         * bluefs_extents中的空间使用记录持久化到rocksdb中,同时bluestore的allocator会将这些空间从空闲块btree中删除,以免重复分配。
         * 
         * block.wal: 调用bluefs->add_block_device将block.wal设备加入到bluefs的管理之中,调用_check_or_set_bdev_label函数把一些
         * label写入到block.db设备中,或从block.db设备中读取一些label。同时调用add_block_extent来将这个磁盘设备中的空间加入到bluefs
         * 的管理之中(默认从BDEV_LABEL_BLOCK_SIZE(4096)到最后)。
         *
         **/
         ...
    }
  • 相关阅读:
    BOM、DOM
    logstash进程杀不掉
    awk正则匹配nginx日志【原创】
    14个最常见的Kafka面试题及答案【转】
    gpk-update-icon占用CPU及清除【原创】
    tracert和traceroute使用
    Centos 6.4搭建git服务器【转】
    ELK&ElasticSearch5.1基础概念及配置文件详解【转】
    Nginx实现404页面的几种方法【转】
    MySQL数据库的“十宗罪”【转】
  • 原文地址:https://www.cnblogs.com/sunbines/p/15657675.html
Copyright © 2020-2023  润新知