Thanks for the help!

> > Thanks for the quick answer!
> >
> > I think I can reduce data on the "full" bricks, solving the problem 
> > temporarily.
> >
> > The thing is, that the behavior changed from 3.12 to 6.5:   3.12 didn't 
> > have problems with almost full bricks, so I thought everything was fine. 
> > Then, after the upgrade, I ran into this problem. This might be a corner 
> > case that will go away once no-one uses 3.12 any more.
> >
> > But I think I can create a situation with 6.5 only that reproduces the 
> > error. Suppose I have a brick that 99% full.  So a write() will succeed. 
> > After the write, the brick can be 100% full, so a subsequent mkdir() will 
> > produce stale file handles (i.e., bricks that have different directory 
> > trees).  The funny thing is, that the mkdir() on the user side does not 
> > produce an error.   Clearly, no-one should ever let the file system get to 
> > 99%, but still, mkdir should fail then... 
> 
> I think there is a soft and hard limit that prevents creation of 
> files/folders when a specific threshold is hit , but that threshold might be 
> per brick instead of per replica set.

There is the cluster.min-free-disk, which states that the server should look 
for a free brick if the hash would place the file on a brick with less than 
"min-free-disk" bytes.   However, this seems to be a "should". If all bricks 
have less space than "min-free-disk", then the file is written anyway. 

Apart from that, I have some really large bricks (around 200 TB each), which 
means that if these are 99% full, then there are still 2 TB left (a signifikant 
amount).  The logic of "do not create a directory if the brick is 100% full" 
seems to be hard coded.  I didn't find a setting to disable this logic.

Nonethess, I think I can construct a test case where a sequence of write() and 
mkdir() would create stale file handles, even though all userland operations 
succeed.   Should I consider this a bug and make the effort to construct a test 
case?  (not on my production system, but on a toy model?  It will take me a few 
days...)

> > What remains:  is there a recommended way how to deal with the situation 
> > that I have some bricks that don't have all directories?
> 
> I think that you can mount the gluster volume and run a find with stat that 
> will force a sync.
> find /rhev/mnt/full-path/directory-missing-on-some-bricks -iname '*' -exec 
> stat {} \;

Thank you a lot! That indeed fixed the missing directories!   (I didn't know a 
"stat" triggers a sync of the bricks.)

best wishes,
Stefan

________

Community Meeting Calendar:

APAC Schedule -
Every 2nd and 4th Tuesday at 11:30 AM IST
Bridge: https://bluejeans.com/118564314

NA/EMEA Schedule -
Every 1st and 3rd Tuesday at 01:00 PM EDT
Bridge: https://bluejeans.com/118564314

Gluster-users mailing list
[email protected]
https://lists.gluster.org/mailman/listinfo/gluster-users

Reply via email to