huge difference between du and df - no open file descriptors

Paul Kraus paul at kraus-haus.org
Wed Jul 30 15:42:42 UTC 2014


On Jul 30, 2014, at 11:32, Nils Effenberger <effenberger at work.de> wrote:

> root at zhoernchen:~ # dd if=/dev/zero of=/root/test bs=1024 count=3500000
> 
> /: write failed, filesystem is full
> dd: /root/test: No space left on device
> 38849+0 records in
> 38848+0 records out
> 39780352 bytes transferred in 0.422187 secs (94224517 bytes/sec)
> root at zhoernchen:~ # df -h
> Filesystem          Size    Used   Avail Capacity  Mounted on
> /dev/mirror/root    4.8G    4.8G   -395M   109%    /
> devfs               1.0K    1.0K      0B   100%    /dev
> root at zhoernchen:~ # rm test
> root at zhoernchen:~ # df -h
> Filesystem          Size    Used   Avail Capacity  Mounted on
> /dev/mirror/root    4.8G    4.8G   -395M   109%    /
> devfs               1.0K    1.0K      0B   100%    /dev
> 
> (Note that I deleted the 'test' file without effect.)

Is there a journal that has not completed checkpointing yet? I would see that with UFS under Solaris. Deletions would take a few seconds (or minutes if the fuel was large or the FS very full) to be reported by df.

> du(1) still shows 2.2G:
> 
> root at zhoernchen:~ # du -shx /
> 2.2G    /
> 
> When I now try to create files I get ENOSPC :(

Are you dealing with lots of small files? I am no FreeBSD UFS expert, but under Solaris, space was allocated in minimum block sizes (there were blocks and frags, blocks were, by default 8KB and frags 1KB). So if you had a 512B file it would take up 1KB. du would show 512B used and df 1KB used. I do not know whether FreeBSD UFS has single or dual (or more) allocation units or what size they are. But that is one of the ways du and df differ.

du shows the size of the file

df shows the amount of space used in the filesystem

--
Paul Kraus
paul at kraus-haus.org



More information about the freebsd-questions mailing list