Curve核心组件之mds – 网易数帆
• FileInfo: 文件的信息。 • PageFileSegment: segment是给文件分配空间的最小单位 。 • PageFileChunkInfo: chunk是数据分片的最小单元。 segment 和 chunk的关系如下图:NAMESERVER Namespace的文件的目录层次关系如右图。 文件的元数据以KV的方式存储。 • Key:ParentID + “/”+ BaseName; 文件查找:查找一个具体的文件 • 目录重命名:对一个目录/文件进行重命名 当前元数据信息编码之后存储在 etcd 中。COPYSET Curve系统中数据分片的最小单位称之为Chunk。在大规模的存储容量下,会产生大量的Chunk,如此众多的 Chunk,会对元数据的存储、管理产生一定压力。因此引入CopySet的概念,CopySet类似于ceph的pg。CopySet 可以理解为一组复制组,这组复制组的成员 Cloud Storage」提出。 在 Curve 系统引入 CopySet 有几个目的: 1. 减少元数据量:如果为每个Chunk去保存复制组成员关系,需要至少 ChunkID+3×NodeID=20 个byte,而如 果在Chunk到复制组之间引入一个CopySet,每个Chunk可以用ChunkID+CopySetID=12个byte。 2. 减少复制组数量:如果一个数据节点存在 256K个复0 码力 | 23 页 | 1.74 MB | 5 月前3Comprehensive Rust(Español) 202412
Vec, } // Tipos y firmas de Rust expuestos a C++. extern "Rust" { type MultiBuf; fn next_chunk(buf: &mut MultiBuf) -> &[u8]; } // Tipos y firmas de C++ y expuestos a Rust. unsafe extern "C++" generado mod ffi { // Tipos y firmas de Rust expuestos a C++. extern "Rust" { type MultiBuf; fn next_chunk(buf: &mut MultiBuf) -> &[u8]; } } Los resultados son (aproximadamente) los que se muestran a continuación noexcept; static ::std::size_t align() noexcept; 227 }; }; ::rust::Slice<::std::uint8_t const> next_chunk(::org::blobstore::MultiBuf &buf) noexcept; 37.2.4 Declaraciones Bridge en C++ mod ffi { // Tipos 0 码力 | 389 页 | 1.04 MB | 10 月前3
共 2 条
- 1