[Gluster-users] favorite-child and self-heal BUG ?

Keith Freedman freedman at FreeFormIT.com
Fri Jan 9 00:37:24 UTC 2009


At 06:43 AM 1/8/2009, artur.k wrote:
>if the disc will fall on a single server glaster remove files from 
>the second (good server) ?
>
>noc-xx-2:/mnt/glusterfs# echo 7 > 7
>bash: 7: Input/output error
>noc-xx-2:/mnt/glusterfs#
>noc-xx-2:/mnt/glusterfs# echo 7 > 7
>bash: 7: Input/output error
>noc-xx-2:/mnt/glusterfs# echo 7 > 7
>noc-xx-2:/mnt/glusterfs#
>noc-xx-2:/mnt/glusterfs#
>
>
>ehh... if the 7 file exist only once server. on second server 
>deleted by rm -f  trac-xx-1:/var/storage/glusterfs/7


by deleting random files from the back-end filesystem, you are NOT 
simulating a disk failure.
if there is a disk failure, you end up with a CLEAN/EMPTY filesystem 
which has NO extended attributes.
As such, when you start gluster, it will see empty and no attributes. 
As such it will check with the other AFR/HA server and will see that 
is has extended attributes and they are up to date and that it is the 
place to get the latest files form.
Then it was auto-magically start 'healing' the entire disk.

I've, in fact, had this exact situation happen to me in late December 
and I watched magically as the entire filesystem was recovered from 
the other server.

by simply deleting parts of the filesystem, you are not affecting the 
extended attributes so once the filesystem is managed by gluster 
again, gluster tries to put it back into the last known good state 
from glusters perspective.

So, again, if you're trying to simulate a failed drive, then do this:
turn off gluster
delete the entire directory tree (including the last directory in the 
mountpoint) then make the directory again (this clears out the 
extended attributes) and then remoung the gluster mountpoint.

For the examples you gave, here's what I'm understanding:
on the client you have the gluster filesystem mounted on
/mnt/gluster

on the server you are serving files from:
/var/storage/glusterfs

Now, once you are using /var/storage/glusterfs within gluster you 
SHOULD NOT EVER modify this filesystem OUTSIDE of gluster.
IF you want to modify this filesystem you should mount it via gluster 
on the server, and then make changes that way.

so, if you want to remove a file: /var/storage/glusterfs/xyz
you should create a client volume on the server with the HA brick in 
it (it doesn't necessarily have to have both servers, it can have 
just itself as it's own server), but (I think) it needs to have the 
ha/afr brick configured since that's the layer which affects the 
extended attributes.

then mount this somewhere on the server /var/local/glusterfs and then 
you can rm /var/local/glusterfs/xyz
you can verify that it was removed from /var/storage/glusterfs/ and 
then you can restart the client and you'll see that it now auto-heals 
as you expect.

this is because the extended attributes on /var/storage/glusterfs are 
updated and correct.

I suppose the best analogy to what you're simulating with your 
examples would be to basically take a hard drive, scrach the platter, 
stick it back in and wonder why it's not giving you the right data.
you're effectively altering the "media" the filesytem runs on by 
altering the underlying filesystem outside of gluster.


As for your input/output errors, again, make sure you're on a recent 
build since I think most of those are addressed.





More information about the Gluster-users mailing list