[Gluster-devel] Regarding the issues gluster DHT and Layouts of bricks

Susant Palai spalai at redhat.com
Thu May 21 12:47:26 UTC 2015


Commets inline.

----- Original Message -----
> From: "Subrata Ghosh" <subrata.ghosh at ericsson.com>
> To: gluster-devel at gluster.org, gluster-users at gluster.org
> Cc: "Nobin Mathew" <nobin.mathew at ericsson.com>, "Susant Palai" <spalai at redhat.com>, "Vijay Bellur"
> <vbellur at redhat.com>
> Sent: Thursday, 21 May, 2015 4:26:05 PM
> Subject: Regarding the issues gluster DHT and  Layouts of bricks
> 
> 
> Hi  All,
> 
> Could you please guide us  to solve the following DHT and brick layout
> problem we are  dealing with ? Questions are marked bold.
> 
> Problem statement :
> 
> 
> 1.      We have a requirement to achieve maximum write and read performance
> and we have to meet some committed performance metrics.
> 
>                Our goal is to place each file into different bricks to get
>                optimal performance and also observer the nature of the
>                throughput , hence need to have a mechanism  to generate
>                different hash using gluster glusterfs.gf_dm_hashfn,
> (assuming number of files are : N , Number of Bricks :N)  to place spate
> bricks.
> 
> 
> -        How to make sure each file has different hash and   falls to
> different bricks ?
> 
> 
> 
> -        Other way to put the question if I  know the range of the brick
> layout or more precisely if I know the  hex value of the desired hash ( so
> that it will be placed desired brick)  that we need to generate from
> Davis-Meyer algorithm used in gluster,  Can we create a file name such that,
> that also solve our problem to some extent?
> 
> 
> 2.      We tried to experiment to see  how a file in gluster is decided to be
> placed in a particular brick following gluster glusterfs.gf_dm_hashfn and
> took some idea from
>        some articles  like
>        http://gluster.readthedocs.org/en/latest/Features/dht/ ,
>        https://joejulian.name/blog/dht-misses-are-expensive/ page which
>        describes layout for that brick  and calculate a hash for the file.
> 
> 
>         To minimize collisions or generating different hash in such way to
>         place each file in different bricks ( file 1 => brick A, file 2 =>
>         Brick B, file 3=>  Brick C, file 4 => brick D)
> 
>                We use kind of similar script to get the hash value for a file
> 
> def gf_dm_hashfn(filename):
>     return ctypes.c_uint32(glusterfs.gf_dm_hashfn(
>         filename,
>         len(filendame)))
> 
> if __name__ == "__main__":
>     print hex(gf_dm_hashfn(sys.argv[1]).value)
> 
> We can then calculate the hash for a filename:
> # python gf_dm_hash.py file1
> 0x99d1b6fL
> 
> 
> Extended attribute is fetch to check the range and try to match the above
> generated hash value.
> 
> getfattr -n trusted.glusterfs.dht -e hex file1
> 
> 
>       However we are not able to exactly follow till this point ,  how the
>       hash value matched to one of the layout assignments, to yield what we
>       call a hashed location.
> 
> 
> -        My question is if I  know the range of brick lay out ( say
> 0xc0000000 to  0xffffffff, is range  select a hash 0xc0070000 ) where to be
> placed the next file can we generate the name ( kind of reverse of  gluster
> glusterfs.gf_dm_hashfn) ?

I am not aware of any such mechanism.  You will have to generate file names manually and run them through your script to check whether it falls in the brick range.

> 
> PS :  Susant : Can you throw some light or suggest  a method we are trying to
> solve.
> 
> Thanks for your time.
> 
> 
> Best Regards,
> Subrata Ghosh
> 
> 
> 
> 
> 
> 
> 
Regards,
Susant


More information about the Gluster-devel mailing list