Kosmos File System--chunk

    技术2022-05-20  33

    chunk是kfs管理的原子单位,类似于文件系统的block。chunk大小是64MB, 每64K数据是一个checksum(32bit)计算单位。

    chunk的管理者--chunkserver,chunkserver拥有管理chunk必要的metadata,chunk的metadata和content都存储在chunkserver上,其中metadata在chunkserver启动时加载到内存。

    metadata:关联的文件(用户操纵的是文件)

                     chunk version(用于保证一致性)

                     checksum(便于校验)

     

    磁盘上的chunk的metadata:

            int metaMagic; /**< magic num */         int metaVersion; /**< 元信息版本 meta version */         kfsFileId_t fileId; /**< 文件id */         kfsChunkId_t chunkId; /**< chunk id */         kfsSeq_t chunkVersion; /**< chunk version */         off_t chunkSize; /**< chunk 大小 */

            /**< 所有块的校验和 */        uint32_t chunkBlockChecksum[MAX_CHUNK_CHECKSUM_BLOCKS];          uint32_t numReads; /**< 读取次数,用于统计 */         char filename[MAX_FILENAME_LEN]; /**< 块所属的文件名 */

     

    chunkserver中用ChunkInfo_t结构体记录chunk信息和操作,其中有序列化和反序列化操作。

    序列化是把这个结构体转成可以存储的databuffer,反序列化从磁盘metadata构造内存metadata。

                    

     

     


    最新回复(0)