when ufs is 99% full, current seems to limit creat to 28672 bytes
Kirk McKusick
mckusick at mckusick.com
Mon Dec 26 23:13:35 UTC 2016
> To: freebsd-fs at freebsd.org
> Subject: Re: when ufs is 99% full, current seems to limit creat to 28672 bytes
> From: "Julian H. Stacey" <jhs at berklix.com>
> Date: Mon, 26 Dec 2016 18:20:59 +0100
>
> Gary J wrote:
>
> > I suspect this ia a result of how UFS is designed.
>
> Yes.
>
> > Did you use the
> > standard options for block and fragment size? How about inodes?
>
> Yes, I created that partition years ago, I pretty much always just
> use newfs unless experimenting perhaps for a small partition on USB
> stick or CDROM (& then I'd normally delete), so it would have been
> a newfs almost guaranteed with no parameters, default.
>
> > Is the file system UFS1 or UFS2?
>
> UFS2
>
>
> > UFS is a very compex bit of software and I imagine there are all
> > kinds of interesting surprises when the file system is 99% full.
> >
> > Anyway, the newfs man page may provide some clues. Or look at
> > Wikipedia, there's a UFS entry there, but it doesn't go into the gorey
> > details.
>
> I'll read https://en.wikipedia.org/wiki/Unix_File_System
>
> Konstantin B wrote
> > dumpfs(8) allows to look at ....
>
> Top of dumpfs:
> magic 19540119 (UFS2) time Sun Dec 25 03:19:13 2016
> superblock location 65536 id [ 548daf7f b34ae147 ]
> ncg 1399 size 224197115 blocks 217157317
> bsize 32768 shift 15 mask 0xffff8000
> fsize 4096 shift 12 mask 0xfffff000
> frag 8 shift 3 fsbtodb 3
> minfree 0% optim space symlinklen 120
> maxbsize 32768 maxbpg 4096 maxcontig 4 contigsumsize 4
> nbfree 0 ndir 1555427 nifree 102683126 nffree 1339169
> bpg 20035 fpg 160280 ipg 80256 unrefs 0
> nindir 4096 inopb 128 maxfilesize 2252349704110079
> sbsize 4096 cgsize 32768 csaddr 5056 cssize 24576
> sblkno 24 cblkno 32 iblkno 40 dblkno 5056
> cgrotor 622 fmod 0 ronly 0 clean 1
> metaspace 6408 avgfpdir 64 avgfilesize 16384
> flags soft-updates
> fsmnt /data
> volname swuid 0 providersize 224197115
>
> Thanks All,
>
> Cheers,
> Julian
> --
> Julian Stacey, BSD Linux Unix Sys Eng Consultant Munich
> Reply below, Prefix '> '. Plain text, No .doc, base64, HTML, quoted-printable.
> http://berklix.eu/brexit/#stolen_votes
You HAVE made a change to the filesystem parameters. You have set
minfree to 0%. This means that you are not allowing UFS to keep any
blocks in reserve. At this point you have no full sized blocks
left in the filesystem (nbfree == 0). Thus the only thing left in
the filesystem is fragments. A file in UFS is made up of zero or
more full-sized blocks and at most one fragment. When you have used
up all of the full-sized blocks you cannot create files larger than
the largest available fragment. So if you continue with your
experiment you will find that the biggest file you can create will
eventually fall to 1K.
So long as you keep minfree at 1% or higher, you will not hit this
condition which is why tunefs warns you not to set minfree to
absurdly low values. If you want to ensure that your filesystem can
be filled to the last block, you should set the blocksize and the
fragment size to the same value. This will ensure that your filesystem
has only full-sized blocks and never creates fragments. Thus you
will be able to allocate files until it is compelely full.
Kirk McKusick
More information about the freebsd-fs
mailing list