当前位置: 首页 > news >正文

vps如果制作论坛网站做网站送优化

vps如果制作论坛网站,做网站送优化,欢迎页面设计模板,2022网页游戏排行榜前十名目录 未完待续前言组成前期准备工作基础概念对象PextentextentBlobNode 线程事务磁盘的抽象与分配位图法分层位图 上电流程写流程读流程参考资料 未完待续 前言 BlueStore是什么#xff1f; Ceph是一个统一的分布式存储系统。BlueStore是Ceph的存储引擎。 它的作用是什么 Ceph是一个统一的分布式存储系统。BlueStore是Ceph的存储引擎。 它的作用是什么 存储引擎的作用还能是什么把Ceph上层交给他的数据安稳的存储在磁盘上需要的时候再读出来或者删除。这就是他的作用。 组成 如上图BlueStore由下面接模块构成 RocksDB为BlueStore提供kv存储。BlueFsRocksDB是一个持久化的kv存储系统但是Rocksdb本身又不能直接操作磁盘读写数据在这个情况下BlueFS就承担了这个职责作为一个文件系统为RocksDB提供了磁盘上文件的读写能力。BlueRocksEnv在RocksDB与BlueFS间提供一个桥梁。Allocator磁盘的空间管理器。BlockDevice以HDD或者SSD为代表的裸盘 从上图我们可以看到对于用户数据本身是由BlueStore直接操作裸盘进行读写但是对于用户数据的元数据是通过RocksDB进行读写的。 前期准备工作 在开始研究BlueStore的工作流程前咱们先了解一下必要的知识。 基础概念 对象 咱们尽量从一个实际的例子进行说明。假定我需要存储《流浪地球2》这个电影电影本身是20个GB。在Ceph里会把这个20GB的文件切分称2MB或者4BM参数可配的一个个文件块我们把这个文件块就叫做对象。而在BlueStore这一层是感知不到20GB的《浏览地球2》它只能感知到2MB的对象块。 Pextent struct bluestore_pextent_t {// 磁盘上的物理偏移uint64_t offset 0;// 数据段的长度uint32_t length 0; }Pextent就是代表真实的物理磁盘上的一个区间。offset就是相对于磁盘上起始位置的偏移量length的单位就是字节。 extent struct Extent {// 对象内逻辑偏移不需要块对齐。uint32_t logical_offset 0;// 逻辑段长度不需要块对齐。uint32_t length 0;// 当logical_offset是块对齐时blob_offset始终为0// 不是块对齐时将逻辑段内的数据通过Blob映射到磁盘物理段会产生物理段内的偏移称为blob_offset。uint32_t blob_offset 0;// 多个物理块BlobRef blob; }对于那个2MB的对象在BlueStore里也会对他进行逻辑切分。假定把2MB的对象切分成3块第一块512KB,第二块512KB,第二块1024KB,那么 第一个Extent的logical_offset 是0length是5121024 第二个Extent的logical_offset是15121024length是5121024 第三个Extent的logical_offset是25121024length是1024*1024 上面还有blob_offset 的概念大家暂时忽略。 Blob 在上面的Extent里面还有一个Blob是什么意思 就上面那个例子在真实的物理磁盘上不一定有一块连续的空闲的1MB的空间。所以BlueStore会把物理上不在一块的磁盘空间逻辑上放到一块。 struct Blob {// reference countstd::atomic_int nref {0};mutable vectorbluestore_pextent_t blob; }一个512KB的Blob内部可能是磁盘上3个并不相连的空间段拼起来的。 Node // 内存数据结构 struct Onode {// reference countstd::atomic_int nref;// onode 对应的PGCollection *c;// onode磁盘数据结构bluestore_onode_t onode;// 有序的Extent逻辑空间集合持久化在RocksDB。lexetnt---blobExtentMap extent_map;...... } // 磁盘数据结构 onode: per-object metadata struct bluestore_onode_t {// 逻辑ID单个BlueStore内部唯一。uint64_t nid 0;// 对象大小uint64_t size 0;// 对象扩展属性mapmempool::bluestore_cache_other::string, bufferptr attrs;...... }上面的Onode 描述一个对象就是那个2M的对象的信息。 上面的ExtentMap大家猜一下也能知道假定一个对象被分成了3个Extent那都是哪3个Extent呢对象本身得知道自己的数据逻辑上分成了哪几块么。 线程 事务 磁盘的抽象与分配 位图法 BlueStore面对的一块完完全全的裸盘。那么第一个问题就是BlueStore怎么知道磁盘上那一块用了哪一块没有用呢。 首先对磁盘进行分块假定就按照4KB分块。 其实一个思路就是先把磁盘上的块进行编号然后对于每个块使用一个比特的0代表已经被使用1代表没有使用。这样以来我只要使用原始硬盘空间的32768分之1的空间就能描述磁盘里每个区域的使用情况了41024832768 那么一个100GB的磁盘大概只需要32MB的内存比特流就能描述。 以上就叫做位图法。 分层位图 以上面的例子来说假如我需要再1块100GB的磁盘上分配4KB的块最最极端情况下我就得扫描32MB的数据才能知道哪个块没有被使用。这个是不可接受的。 大家知道跳表么 还是那个100GB的空间我假定L0层就是32MB的内存块。 我在L1层申请64KB的内存块L1的一个比特对应L0层的512个比特。 假定L0的前512个比特都是0代表磁盘上5124KB的一段区域都已经被分配了那么我L1上第1个比特就是0。 假定L0的前512个比特不都是0代表磁盘上5124KB的一段区域还没有被完全分配完那么我L1上第1个比特就是1。 如果磁盘空间更大了那么L1上面还可以加一个L2。 这样以来分配空闲磁盘的时间复杂度就可控了。 上电流程 写流程 读流程 参考资料 https://zhuanlan.zhihu.com/p/68067068 https://zhuanlan.zhihu.com/p/92397191
http://www.zqtcl.cn/news/716832/

相关文章:

  • 网站维护的协议山东省住房和建设网站
  • 个人网站可以做淘宝客网站建设的公司排名
  • 企业手机网站设计案例做网赌网站怎么推广
  • 2018外贸网站排名购物网站网页设计
  • 赣州培训学做网站软装设计理念
  • 银川建设网站公司wordpress 小工具添加图片
  • 做任务领黄钻的网站怎样建免费个人网站
  • 网站怎么做留言提交功能网站制作公司司
  • 大连购物网站开发wordpress怎么用ftp上传插件
  • 做微商怎样加入网站卖东西赚钱做代理的项目在哪个网站
  • 企业电子商务网站平台建设奉贤做网站公司
  • 非凡网站建设 新三板代运营套餐价格表
  • 湖南建立网站营销设计网站建设的创新之处
  • 手机站是什么意思免费建论坛
  • 网站开发学习路线专用车网站建设哪家好
  • 贵阳网站建设端觉wordpress gif 点击播放
  • 苏州产品推广公司厦门关键词seo
  • 建设内网网站流程凡客诚品现在还有吗
  • 西安网站公司免费云手机无限时间版
  • 网站建设与管理案例教程ipad可以做网站吗
  • 济南网站建设模板python网站开发用什么软件
  • 北京品牌网站建设阿里巴巴logo图片
  • 做宣传册从哪个网站找素材中文在线っと好きだっ
  • 国际物流东莞网站建设wap是什么意思的缩写
  • 传奇官网百度seo营销网站
  • 如何在导航网站上做链接上海建筑设计研究院
  • 微信营销软件网站建设推广链接
  • 美的集团网站建设方案书广汉做网站
  • 个人博客网站实验报告商标购买网站
  • 2020给个免费网站好人有好报做购物微信网站