`
lancelotwjq
  • 浏览: 54803 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rbthash@glusterfs

 
阅读更多

Glustefs里面有一个很有意思的数据结构叫做rbthash, 全称是red black tree hash, 顾名思义就是使用红黑树做的哈希, 这个数据结构在io-cache xlator的实现中用到。

 

 

     首先,有红黑树数据结构(contirb/rbtree), 它是从libavl库中偷过来的。虽然红黑树有点复杂,但是是相当经典的数据结构,有很多资料可以参考,这里就不展开了。

 

     然后,在rbthash_table里面有很多buckets,在算法中称为桶(比如桶排序), 每一个桶里面都长着一棵红黑树。(让我想到植物大战僵尸屋顶那关)。

 

    插入时,先使用哈希函数获得某个entry的哈希值,然后通过一个模运算将entry投入对应桶内, 然后再插入到红黑树上。

nbucket = entry->keyhash % tbl->numbuckets

 

    函数rbthash_comparator会被传给红黑树,它用于比较entry。

    比较过程如下:先比较长度,如果长度相同,则使用memcmp来比较大小。

if (e1->keylen != e2->keylen) {                                                          
    if (e1->keylen < e2->keylen) 
        ret = -1;      
    else if (e1->keylen > e2->keylen)
        ret = 1;
} else
        ret = memcmp (e1->key, e2->key, e1->keylen); 

 

    查找时,同样先用哈希值找到桶,然后再在桶里面的红黑树中查找。

 

    此外, iocache 在使用rbthash时候,哈希函数是一个十分简单的函数,如下:

 

inline uint32_t
ioc_hashfn (void *data, int len)
{
        off_t offset;

        offset = *(off_t *) data;

        return (offset >> ioc_log2_page_size);
}

     最后一行是一个求页号(Page Frame)的运算。所以,页号做为hash值使用。

 

 

分享到:
评论

相关推荐

    glusterfs 管理手册

    GlusterFS(Gluster File System)是一种开源的分布式文件系统,其设计目标是扩展性非常强,能支持数PB(Petabytes)级别的大容量存储。它通过网络将多台服务器的物理磁盘聚合成一个单一的分布式存储池,并将数据...

    GlusterFS 101培训课程

    GlusterFS是一种开源的分布式文件系统,它能够提供高容量、高伸缩性的数据存储解决方案。在IT业界,GlusterFS广泛应用于构建大型存储集群,非常适合于需要处理大量数据和高并发访问的场合。GlusterFS101培训课程针对...

    GlusterFS3.4.6 RPM 安装包 相关依赖包

    GlusterFS 3.4.6 是一个开源的、分布式文件系统,专为大规模存储解决方案设计,能够处理PB级别的数据。这个RPM安装包包含了GlusterFS的核心组件以及服务器组件,适用于Red Hat Enterprise Linux 6 (RHEL 6)的x86_64...

    glusterfs.tar.gz

    GlusterFS是一款开源的分布式文件系统,用于构建大规模、高性能、可扩展的存储解决方案。它设计用于处理PB级的数据,并且支持多种类型的硬件环境。在本压缩包`glusterfs.tar.gz`中,包含了适用于CentOS 7平台的...

    GlusterFS学习笔记.docx

    GlusterFS 学习笔记 GlusterFS 是一种开源的分布式文件系统,它可以将多个硬盘组合成一个大型存储系统,提供高性能、可扩展性和高可用性的存储解决方案。下面是 GlusterFS 的一些重要知识点: 1. Raid 概念 Raid...

    glusterfs安装包-centos6.6

    glusterfs安装包-centos6.6

    分布式文件系统GlusterFS性能优化研究.pdf

    分布式文件系统GlusterFS性能优化研究中涉及到的关键知识点包括分布式文件系统的基本概念、GlusterFS的架构特点、性能优化策略以及优化测试和实验平台的搭建和分析方法。 首先,分布式文件系统是一种把数据存储在多...

    glusterfs 5.0

    GlusterFS 5.0 是一个先进的、分布式文件系统,专为大规模的云存储和大数据应用而设计。它提供了一种可扩展、无中心、高性能的解决方案,支持PB级的数据存储。在Ubuntu 18.04上安装GlusterFS 5.0,可以为用户提供...

    glusterfs 结构体系分析

    ### GlusterFS结构体系分析深度解析 #### 一、概览与优势 GlusterFS作为一款分布式文件系统,其设计的精妙之处在于高度模块化的架构。这种设计不仅简化了系统的理解和扩展,还确保了其在分布式存储领域的独特地位...

    GlusterFS系统管理手册中文版

    GlusterFS 系统管理手册中文版是一份详尽的指南,主要针对GlusterFS的系统管理和实践操作。GlusterFS是一种开源的分布式文件系统,它允许用户在大规模的硬件集群上构建高可用、高性能的存储解决方案。这篇手册由酷抉...

    GlusterFS分布式文件系统

    GlusterFS是一种开源的分布式文件系统,其全称是Gluster File System。它采用了用户空间的设计理念,以简洁和遵循KISS(Keep It Simple, Stupid)原则著称。GlusterFS支持横向扩展,能管理数百个节点并处理数PB级别...

    GlusterFS文件系统的搭建和使用

    GlusterFS 文件系统的搭建和使用 GlusterFS 是一个开源的分布式文件系统,能够提供高性能、可扩展性强的存储解决方案。本文将介绍 GlusterFS 文件系统的搭建和使用,包括安装、配置和管理等方面的知识点。 一、...

    GlusterFS 介绍

    GlusterFS,作为一款分布式文件系统,其设计与实现涵盖了多层面的技术细节,旨在提供高效、可扩展且灵活的数据存储解决方案。以下是对GlusterFS的关键技术知识点的详细解析。 ### GlusterFS概述 GlusterFS是一种...

    glusterfs3.7.9

    GlusterFS是一款开源的、分布式文件系统,专为大规模存储设计,可扩展到数千个节点,提供PB级的存储容量。3.7.9版本是该系统的一个稳定版本,适合在生产环境中部署使用。这个“全家桶安装包”通常包含了GlusterFS...

    glusterfs的那些事-3.4.11

    《glusterfs详解:模块化设计与核心概念》 GlusterFS是一款开源的分布式文件系统,以其模块化、堆栈式的设计理念,为各种应用场景提供了高度定制化的解决方案。本文将深入探讨glusterfs中的关键概念——`xlator`,...

    GlusterFS与Ceph 性能测试报告

    GlusterFS与Ceph是不一样的存贮系统,GlusterFS更加针对分布式文件系统,虽然目前开发者也正在努力增加块与对象存贮服务。 由于两者在设计理念等各个方面有所不同,单纯的测试比较从功能应用的角度来说意义不大(如...

    GlusterFS分析报告.pdf

    GlusterFS是一个分布式文件系统解决方案,具有高度的可扩展性与容错能力。在深入分析GlusterFS之前,需要先了解其基本架构和关键特性,这对于理解其如何作为一个网络文件系统工作的内部机制至关重要。GlusterFS的...

    部署GlusterFS分布式存储所使用的本地yum源

    glusterfs 3.8.15版本

    Glusterfs文档分析

    关于Glusterfs分布式文件系统的总结

Global site tag (gtag.js) - Google Analytics