How to configure the parameters of <rs k, m+n>

54 görüntüleme
İlk okunmamış mesaja atla

90lip...@gmail.com

okunmadı,
24 May 2016 20:28:3224.05.2016
alıcı QFS Development
I have read the Deployment Guide in wiki which shows that
Reed-Solomon <rs k,m+n>

Value Description
k replication factor, normally 1 with n 3, and more than 1 with n == 0
m data stripe count, valid range is 1 to 64 with n == 3, and 255 with n == 0
n recovery stripe count, only 0 and 3 are presently valid, with n == 0 pure striping -- no recovery

I have searched the prp configure file(MetaServer.prp, ChunkServer.prp, QfsClient.prp) in QFS_BASE_DIR/conf directory. However, I cannot find how I can confgure the parameters of k, m, n.

Any help is appreciated, thanks.

peng li

okunmadı,
25 May 2016 10:57:2925.05.2016
alıcı QFS Development
I do not find where to configure it. In my opinion, it seems as if we should give the <k,m,n> parameters when we create a file.
I use the command cptoqfs and see the help as follows:
 -s   -- meta server name or ip
 -p   -- meta server port
 -d   -- source path; "-" means stdin
 -k   -- destination (qfs) path
 [-v] -- verbose debug trace
 [-r] -- replication factor; default 3
 [-W] -- testing -- number test rewrites
 [-n] -- dry run
 [-a] -- append
 [-b] -- input buffer size in bytes; default is 8MB
 [-w] -- qfs write buffer size in bytes; default is 4MB, or 1MB per stripe
 [-t] -- truncate destination files if exist
 [-x] -- delete destination files if exist
 [-u] -- stripe size
 [-y] -- data stripes count
 [-z] -- recovery stripes count (0 or 3 with file type 2)
 [-S] -- 6+3 RS 64KB stripes 1 replica
 [-R] -- op retry count, default -1 -- qfs client default
 [-D] -- op retry delay, default -1 -- qfs client default
 [-T] -- op timeout, default -1 -- qfs client default
 [-X] -- create exclusive
 [-m] -- min storage tier
 [-l] -- max storage tier
 [-B] -- write from this position
 [-f] -- configuration file name
 [-F] -- file type -- default 1 or 2 if stripe count not 0
When we use -S, it simply means <rs 1, 6+3>, we can use -y to change numstripes to other num. We can also use -r to set the replication factor. 
I don't know what it will do when we set the conflicted parameters. I simply make sure that the parameters are not conflicted.

I find a bug (may be not) that I use -S to create a file of encoded with RS(6,3), then I use -y 5 to change its number stripes from 6 to 5,  the cptoqfs gives no errors and the file are still RS(6,3) encoded.
1. cptoqfs -s localhost -p 20000 -S -r 1 -k /qfs/tmp/helloworld -d README.md
2.cptoqfs -s localhost -p 20000  -y 5 -k /qfs/tmp/helloworld -d README.md
In my opinion, if it gives nothing, it means successful.  But I use qfsstat to see /qfs/tmp/helloworld. It changes nothing, still encoded with RS(6,3)




在 2016年5月25日星期三 UTC+8上午8:28:32,peng li写道:

mcan...@quantcast.com

okunmadı,
25 May 2016 12:09:4625.05.2016
alıcı qfs-...@googlegroups.com
Hi,

<rs, k, m+n> is not a property of the filesystem. These parameters are passed when a file is created and each file can have a different configuration.

Best,

Mehmet 

mcan...@quantcast.com

okunmadı,
25 May 2016 12:50:0025.05.2016
alıcı QFS Development
As for "cptoqfs" commands:

1cptoqfs -s localhost -p 20000 -S -r 1 -k /qfs/tmp/helloworld -d README.md
You don't have to pass "-r 1" because "-S" means "use 1 replica".

2.cptoqfs -s localhost -p 20000  -y 5 -k /qfs/tmp/helloworld -d README.md
If you want to overwrite an existing file, you can pass "-x" flag, which means "delete destination files if exist".
Also, I suggest passing all of the stripe parameters (-y, -z and -u) if you don't want to use the default <rs 1, 6+3>.
Note that current the only extensively tested encoding is <rs 1, 6+3>.

I hope this help. Let me know if you have further questions.

Mehmet

peng li

okunmadı,
26 May 2016 01:47:0926.05.2016
alıcı QFS Development
Thanks for your detail reply.

I think the cmd should give some tints that the file exists, and users should use -x option to delete the file first rather giving nothing.
In linuxers, it gives nothing, it means successful.

1cptoqfs -s localhost -p 20000 -S -r 1 -k /qfs/tmp/helloworld -d README.md
Yes, I read the source code of cptoqfs, and I need not to pass "-r 1". But in the wiki main page(https://github.com/quantcast/qfs), the README.md simply do this which passes "-S -r 1". Maybe it should be modified.

2.cptoqfs -s localhost -p 20000  -y 5 -k /qfs/tmp/helloworld -d README.md
I have question on the "-u" option which gives the stripe size. 
Suppose the chunk size is 64MB and the file of 384MB are encoded with RS(6,3). 
If the stripe size is 6MB,  I think the client reads 6MB data and encodes them to 9 chunks, which leads to each chunk with 1MB once a time.
This process will cycle for 64 times because 384/6 = 64.  This allow the client use small cache buffer (for example 9MB should be enough) for encoding process. Is it true?

lipeng

在 2016年5月26日星期四 UTC+8上午12:50:00,mcan...@quantcast.com写道:

mcan...@quantcast.com

okunmadı,
26 May 2016 13:47:1626.05.2016
alıcı QFS Development
>> Yes, I read the source code of cptoqfs, and I need not to pass "-r 1". But in the wiki main page(https://github.com/quantcast/qfs), the README.md simply do this which passes "-S -r 1". Maybe it should be modified.
Yes, thanks for pointing that out. We'll make the change.

>> I have question on the "-u" option which gives the stripe size.
No. Stripe size is the number of bytes that is written to each chunk at a time (of course provided that there is enough bytes to write). For example, if the stripe size is 6MB, then the first 6MB is written to the chunk in chunkserver1, the next 6MB is written to the chunk in chunkserver2, and so on... For each data stride, we would encode 6MB*6 data (6 is the number of stripes) to 6MB*3 recovery data  (3 is the number of recovery stripes).  For a more detailed discussion, please see https://groups.google.com/forum/#!searchin/qfs-devel/stripe/qfs-devel/YTagaSYCnIM/e6zK0sq-mCEJ.
Tümünü yanıtla
Yazarı yanıtla
Yönlendir
0 yeni ileti