All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Geoffrey Wehrman <gwehrman@sgi.com>
Cc: "André Øien Langvand" <andre.oien.langvand@wimpmusic.com>,
	xfs@oss.sgi.com
Subject: Re: No space left on device
Date: Wed, 20 Jun 2012 16:07:33 +1000	[thread overview]
Message-ID: <20120620060733.GB30705@dastard> (raw)
In-Reply-To: <20120619123624.GD16802@sgi.com>

On Tue, Jun 19, 2012 at 07:36:24AM -0500, Geoffrey Wehrman wrote:
> On Tue, Jun 19, 2012 at 02:05:34PM +0200, André Øien Langvand wrote:
> | Hi,
> | 
> | I know there are quite a few posts regarding similar issues around, but I
> | can't seem to find a solution or at least an answer to why this is
> | happening in my case, so I thought I'd try the mailing list and I hope
> | that's okay.
> | 
> | We have 2 file servers with identical hardware and identical configuration
> | (Dell R610's, H800 controllers, MD1200 DAS, RAID-5) set up with rsync to
> | mirror the contents. The content is music in several formats (from PCM WAV
> | to 64kbit AAC previews), which means file sizes of about 1 - 40mb. Both
> | systems running SLES 11 SP1. Same kernel (2.6.32.59-0.3-default), same
> | xfsprogs version (xfsprogs-3.1.1-0.1.36).
> | 
> | My example partition on the source now has 9.9G (of 9.1T) available space
> | and still doesn't report the drive as full. On the destination, however, it
> | wont allow me to use any of the remaining 51G. This is obviously a problem
> | when trying to do mirroring.
> | 
> | Both file systems have been mounted with inode64 option since first mount,
> | there are plenty of inodes available and I've also verified that there are
> | noe sparse files (find -type f -printf "%S\t%p\n" 2>/dev/null | gawk '{if
> | ($1 < 1.0) print $1 $2}'), just in case.
> | 
> | I have tried repairing (xfs_repair), defragmenting (xfs_fsr) and alter
> | imaxpct without any luck. Rsync is run like this: # ionice -c3 rsync -rv
> | --size-only --progress --delete-before --inplace.
> | 
> | 
> | More detailed information on source file system:
> | 
> | # df -k | grep sdg1
> | /dev/sdg1            9762777052 9752457156  10319896 100% /content/raid31
> | 
> | # df -i | grep sdg1
> | /dev/sdg1            7471884 2311914 5159970   31% /content/raid31
> | 
> | # xfs_info /dev/sdg1
> | meta-data=/dev/sdg1              isize=2048   agcount=10, agsize=268435424
> | blks
> |          =                       sectsz=512   attr=2
> | data     =                       bsize=4096   blocks=2441215991, imaxpct=5
> |          =                       sunit=16     swidth=80 blks
> | naming   =version 2              bsize=4096   ascii-ci=0
> | log      =internal               bsize=4096   blocks=521728, version=2
> |          =                       sectsz=512   sunit=16 blks, lazy-count=1
> | realtime =none                   extsz=4096   blocks=0, rtextents=0
> | 
> | # xfs_db -r "-c freesp -s" /dev/sdg1
> |    from      to extents  blocks    pct
> |       1       1   69981   69981   2.99
> |       2       3  246574  559149  23.86
> |       4       7  315038 1707929  72.88
> |       8      15     561    6374   0.27
> | total free extents 632154
> | total free blocks 2343433
> | average free extent size 3.70706
> | 
> | 
> | 
> | More detailed information on destination file system:
> | 
> | # df -k | grep sdj1
> | /dev/sdj1            9762777052 9710148076  52628976 100% /content/sg08/vd08
> | 
> | # df -i | grep sdj1
> | /dev/sdj1            28622264 2307776 26314488    9% /content/sg08/vd08
> | 
> | # xfs_info /dev/sdj1
> | meta-data=/dev/sdj1              isize=2048   agcount=10, agsize=268435424
> | blks
> |          =                       sectsz=512   attr=2
> | data     =                       bsize=4096   blocks=2441215991, imaxpct=5
> |          =                       sunit=16     swidth=80 blks
> | naming   =version 2              bsize=4096   ascii-ci=0
> | log      =internal               bsize=4096   blocks=521728, version=2
> |          =                       sectsz=512   sunit=16 blks, lazy-count=1
> | realtime =none                   extsz=4096   blocks=0, rtextents=0
> | 
> | # xfs_db -r "-c freesp -s" /dev/sdj1
> |    from      to extents  blocks    pct
> |       1       1   81761   81761   0.62
> |       2       3  530258 1147719   8.73
> |       4       7  675864 3551039  27.01
> |       8      15  743089 8363043  63.62
> |      16      31     102    1972   0.02
> | total free extents 2031074
> | total free blocks 13145534
> | average free extent size 6.47221
> | 
> | 
> | I would be grateful if anyone could shed some light on why this is
> | happening or maybe even provide a solution.
> 
> You are using 2 KiB inodes, so an inode cluster (64 inodes) requires
> 128 KiB of contiguous space on disk.  The freesp output above shows that
> the largest possible contiguous free space chunk available is 31 * 4 KiB
> or 4 KiB short of 128 KiB.  You don't have enough contiguous space to
> create a new inode cluster, and your existing inodes are likely all
> used.  This can be verified using xfs_db: 
> 	xfs_db -r -c "sb" -c "p ifree" /dev/sdj1
> 
> xfs_fsr does not defragment free space, it only makes the problem worse.
> A possible solution:
>   1.  mount the filesystem with the ikeep mount option
>   2.  delete a few large files to free up some contiguous space

large -contiguous- files. It's likely any files written recently
will be as fragmented as the free space....

>   3.  create a few thousand files to "preallocate" inodes
>   4.  delete the newly created files

That will work for a while, but it's really just a temporary
workaround until those "preallocated" inodes are exhausted. Normally
to recover from this situation you need to free 15-20% of the disk
space to allow sufficiently large contiguous free space extents to
reform naturally and allow the allocator to work at full efficiency
again....

> The ikeep mount option will prevent the space for inodes from being
> reused for other purposes.

The problem with using ikeep is that the remaining empty inode
chunks prevent free space from defragmenting itself fully as you
remove files from the filesystem.

Realistically, I think the problem is that you are running your
filesystems at near ENOSPC for extended periods of time. That is
guaranteed to fragment free space and any files that are written
when the filesytem is in this condition. As Geoffrey has said -
xfs_fsr will not fix your problems - only changing the way you use
your storage will prevent the problem from occurring again.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

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

  reply	other threads:[~2012-06-20  6:07 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-19 12:05 No space left on device André Øien Langvand
2012-06-19 12:36 ` Geoffrey Wehrman
2012-06-20  6:07   ` Dave Chinner [this message]
2012-06-20 15:30     ` André Øien Langvand
  -- strict thread matches above, loose matches on Subject: below --
2014-02-12  9:51 Jakob Truelsen
2014-02-12 10:26 ` Hugo Mills
2014-02-12 10:45   ` Jakob Truelsen
2014-02-12 11:07     ` Hugo Mills
2014-02-12 10:34 ` Leonidas Spyropoulos
2012-11-01 13:35 no " Kenneth Johansson
2012-11-02 15:54 ` Kyle Gates
2012-11-02 15:59   ` Hugo Mills
2012-11-06 13:23   ` Kenneth Johansson
2012-08-03 10:05 Mark Marshall
2012-08-04  9:14 ` Chris Samuel
2012-08-04  9:26 ` Martin Steigerwald
     [not found] <AANLkTinH225vC8fRbA7zk_iOEmyADFZMBS6b7gx1tOxm@mail.gmail.com>
2011-02-08  9:00 ` Leonidas Spyropoulos
2011-02-08  9:31   ` cwillu
2011-02-08 10:08     ` Leonidas Spyropoulos
2011-02-08 13:19       ` Helmut Hullen
2011-02-08 18:56         ` Erik Logtenberg
2011-02-08 19:43           ` Helmut Hullen
2011-02-12 14:11             ` Erik Logtenberg
2011-02-08 20:36           ` Helmut Hullen
2011-02-07 21:21 Leonidas Spyropoulos
2011-02-07 21:27 ` Erik Logtenberg
2011-02-07 23:58   ` Robert G.
2011-02-08  0:09 ` C Anthony Risinger
2010-09-24 14:07 No " Turbo Fredriksson
2010-09-24 15:23 ` Geoffrey Wehrman
     [not found]   ` <2D51C7BA-FE51-48AF-9839-1A6AD2171510@bayour.com>
     [not found]     ` <20100927160643.GA10594@sgi.com>
     [not found]       ` <D3DB5B56-D15C-408C-B2B4-58626C23D798@bayour.com>
2010-10-04  6:40         ` Turbo Fredriksson
2010-09-25  2:18 ` Dave Chinner
2010-07-30  5:31 no " Lubos Kolouch
     [not found] ` <AANLkTikBRfR45DZxZW9LM6wnREWrbysPCr9Z1d3YuYhC@mail.gmail.com>
2010-07-30 12:27   ` Lubos Kolouch
     [not found]     ` <AANLkTinBj1O-LapAeBCT2Y3A1ZhfFZ3AotCk6SZ-e-2U@mail.gmail.com>
2010-07-30 14:30       ` Leonidas Spyropoulos
2010-07-30 15:02         ` Lubos Kolouch
2010-07-30 15:09           ` Lubos Kolouch
2010-08-14 20:15             ` Lubos Kolouch
2008-12-08  9:46 No " Gabor MICSKO
2008-12-08 14:02 ` dcg
2002-03-19 17:27 Sebastian
2002-03-20 17:27 ` David Woodhouse
2002-03-27 18:49   ` Sebastian
2002-03-27 19:13   ` David Woodhouse
2002-03-27 19:58     ` Sebastian

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120620060733.GB30705@dastard \
    --to=david@fromorbit.com \
    --cc=andre.oien.langvand@wimpmusic.com \
    --cc=gwehrman@sgi.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.