• 读的


    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)到最后)。
         *
         **/
         ...
    }
  • 相关阅读:
    mybatis(2)操作数据库
    《构建之法》阅读笔记02
    mybatis(4)使用注解方式配置sql语句
    mybatis(5)参数传递
    Android Studio安装
    《构建之法》阅读笔记01
    反射
    mybatis(3)利用Mapper接口实现数据的增删改查
    activity组件
    mybatis(1)
  • 原文地址:https://www.cnblogs.com/sunbines/p/15657675.html
Copyright © 2020-2023  润新知