Re: Reading over than the file size on dispersed volume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On a disperse setup shouldn't the various nodes have different parts of the files and thus the md5sums would be different?

On Fri, 2018-01-12 at 18:17 +0900, jungeun kim wrote:
Hi All,

I'm using gluster as dispersed volume and I send to ask for very serious thing.
I have 3 servers and there are 9 bricks.

My volume is like below.
------------------------------------------------------
Volume Name: TEST_VOL
Type: Disperse
Volume ID: be52b68d-ae83-46e3-9527-0e536b867bcc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (6 + 3) = 9
Transport-type: tcp
Bricks:
Brick1: server1:/data/brick1
Brick2: server2:/data/brick1
Brick3: server3:/data/brick1
Brick4: server1:/data/brick2
Brick5: server2:/data/brick2
Brick6: server3:/data/brick2
Brick7: server1:/data/brick3
Brick8: server2:/data/brick3
Brick9: server3:/data/brick3
Options Reconfigured:
network.ping-timeout: 10
performance.write-behind: on
features.quota-deem-statfs: on
features.inode-quota: on
features.quota: on
transport.address-family: inet
nfs.disable: on
------------------------------------------------------

I generated the temporary files by various size to test.
But I have found out some files MD5 mismatch after uploading to glusterfs.

e.g
fallocate -l 130352 test1 
fallocate -l 2281569280 test2
fallocate -l 667417616 test3 

I have to calculate to make MD5 after uploading. 
But the total size is different when reading the files to EOF. and MD5 is different, too.
( I write 42byte header in each files when create the file )


    char buf[128*1024] = {0,};
    offset += 42;
    while ((retr = glfs_pread(fd, (void*)&buf, sizeof(buf), offset, 0)) > 0) {
        DEBUG("retr : %ld, offset : %ld(%d)", retr,offset,errno)    ;
        offset += retr;
        MD5_Update(&context, buf, retr);
    }

    DEBUG("total : %d", offset);

[DEBUG] retr : 130394, offset : 42(0) (star_glusterfs.c:96)
[DEBUG] retr : 1024, offset : 130436(0) (star_glusterfs.c:96)
[DEBUG] retr : 636, offset : 131460(0) (star_glusterfs.c:96)
[DEBUG] total : 132096 (star_glusterfs.c:109)


Why the glfs_pread(or glfs_read) function reads until over than the file size ?

This is fine on dispersed (4+2) and (8+1) volume but it is happend on (6+3) or (6+4) or (7+2) disperse volume.
I want to know exact cause.
Thank you.

Regards,

Jenny

_______________________________________________
Gluster-users mailing list
Gluster-users@xxxxxxxxxxx
http://lists.gluster.org/mailman/listinfo/gluster-users
-- 
James P. Kinney III Every time you stop a school, you will have to build a jail. What you gain at one end you lose at the other. It's like feeding a dog on his own tail. It won't fatten the dog. - Speech 11/23/1900 Mark Twain http://heretothereideas.blogspot.com/
_______________________________________________
Gluster-users mailing list
Gluster-users@xxxxxxxxxxx
http://lists.gluster.org/mailman/listinfo/gluster-users

[Index of Archives]     [Gluster Development]     [Linux Filesytems Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux