Date: Thu, 27 May 1999 05:07:11 -0700 From: Graeme Tait <graeme@echidna.com> To: David Scheidt <dscheidt@enteract.com> Cc: freebsd-hackers@freebsd.org, info@boatbooks.com Subject: Re: File system gets too fragmented ??? Message-ID: <374D356F.80E@echidna.com> References: <Pine.NEB.3.96.990526225453.15457A-100000@shell-2.enteract.com>
next in thread | previous in thread | raw e-mail | index | archive | help
David Scheidt wrote: > > On Wed, 26 May 1999, Graeme Tait wrote: > > > It contains about 900,000 files, most of which are small, occupying > > around 2-5 fragments. The small files are updated monthly from a tar > <snip> > > > > However, I don't understand how the FFS works, so I'm just probing and > > guessing as to what's going on here. > > > > Could someone please shed a little light on this? Is FreeBSD not able to > > self-manage a filesystem operated in this way? Is there some way of > > preventing the problem, or of periodically cleaning things up (rebuilding > > the whole filesystem from backup means being down for over an hour on a > > 24x7 server)? > > The problem you have is that a file on FFS file system can have at most one > fragmented block. With the number of small files that you have, it isn't > terribly suprising that you are running out of full blocks when there is > still space free on the disk. I don't think there is a whole lot you can do > about the problem. A 1024B frag size might mask the problem of having space > free, but with no aligned blocks, not allocatable. You should also think > hard about why you need a million 1536 byte files on the same filesystem. I > don't know what you are doing, but you might consider a real database. I've received several answers along this direction, but I want to emphasize one point that I think is being overlooked. When the filesystem is fresh and a new archive is expanded to create ~900,000 small files each of 2-5 512 byte frags in size, the filesystem appears quite well-behaved, and space seems to be efficiently utilized. The problem seems to be that with successive updates that slightly change the size of files, or add or delete files, that a large number of unallocated fragments are created. I don't understand how the FFS stores files of sub-block size. Do the fragments used need to be contiguous, or entirely within a single block? The choice of 512 byte frags is based on average wastage per file of half a frag, or about 230MB with 900,000 files. It's quite possible that a 2k frag/16k blocksize would improve utilization of fragments, as the vast majority of files would then fit in a single fragment, but in this case there would be of order 800MB wastage, and the files would not fit the existing disk. BTW, I realize there is probably a better way to do this (database, etc.), and we are thinking in that direction, but for the moment we have a legacy setup and not much time to rework it. Also, I would have thought that having many tiny files was not that unusual (e.g., a news spool). -- Graeme Tait - Echidna To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?374D356F.80E>