Re: Question about continous blocks for inode due to 'no space left on device' problem

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

 



On Mon, Feb 08, 2016 at 02:09:15PM +0100, Michel Verbraak wrote:
> 2016-02-05 23:30 GMT+01:00 Dave Chinner <david@xxxxxxxxxxxxx>:
> 
> > On Fri, Feb 05, 2016 at 02:13:00PM +0100, Michel Verbraak wrote:
> > > All,
> > >
> > > Recently we ran into a problem where our filesystem (300GB in size)
> > > reported 'no space left on device' (ENOSPC) but when we looked at disk
> > > space usage and inode usage it was around 52% for disk space and 11% for
> > .......
> 
> 
> >
> > > Store 03 (root@server):~# xfs_db -c freesp /dev/sdb
> > >    from      to extents  blocks    pct
> > >       1       1 3282633 3282633   9.03
> > >       2       3 3416223 8372325  23.03
> > >       4       7 6175009 24700036  67.94
> >
> > Yup, no more aligned 4 block extents in the filesystem.
> >
> > Dave Thank you for your answer but are you able to explain a bit more on
> how you determine there are no aligned 4 block extends available?
> It apparently is not the 'from 4 to 7' line telling there are at least
> continuous extents of 4 blocks big. Or is it because 24700036 divided
> by 6175009
> is exactly 4 and not a bit more?
> When I calculate the ratio between the individual AG freesp they were all
> four exactly 4.
> 

I'm not sure there is a way to determine whether these extents are
aligned or not short of walking the free space btree structures with
xfs_db checking directly.

IIRC from doing some of the sparse inode work, the slight caveat to this
whole thing is that it's technically not enough to have an aligned
extent available to satisfy an inode chunk allocation. The allocation
group has to have an extent large enough for the inode chunk plus some
set of blocks to _guarantee_ the allocation can be aligned for the
caller.

If you look at the code in xfs_alloc_space_available(), you can see that
in practice the allocator will start to fail when the longest free
extent in the AG is less than something along the lines of <extsize> +
<alignment>. For a 4k fsb fs w/ 256b inodes (and thus 16k inode chunks),
a quick test shows that the alignment is 8k (for a 24k total required
extent length).

I do wonder if we could do something basic here like search the AG for
an actual aligned extent, but I expect performance would be terrible so
this would be a last resort (and may or may not be useful). Another
option might be to scan or somehow or another track the number of inode
chunk aligned extents in each AG based on the inode alignment of the fs,
but I'd have to investigate how easy that is to see whether it's worth
it.

BTW, a metadump of your fs while it's in this ENOSPC state would be
useful towards testing something like that, if you'd be willing to
provide one. Note that xfs_metadump has obfuscation that hides filenames
and whatnot for privacy purposes. 

Brian

> As said we would like to detect this problem from happening again. And we
> would like this detection to be done by our monitoring service.
> One of my colleagues mentions the following calculation to find out if
> there are enough aligned 4 block extents:
> 
> Starting from line "from 4 to 7" calculate: <blocks-column> - (4 *
> <extents-column>) > 0. When not there is not enough free space for new
> inodes.
> 
> On another system we have which does not see these problems yet we have:
> 
>    from      to extents  blocks    pct
>       1       1 3483987 3483987   7.83
>       2       3 3560607 8709838  19.58
>       4       7 6402893 26486634  59.55
>       8      15  418450 5799206  13.04
> 
> 26486634 / 6402893 = 4.136666 and
> 26486634 - (4 * 6402893) = 875062 > 0 and
> 5799205 - (4 * 418450) = 4125405 > 0
> 
> 
> > into this condition.
> >
> > Cheers,
> >
> > Dave.
> > --
> > Dave Chinner
> > david@xxxxxxxxxxxxx
> >
> 
> Michel.

> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs



[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux