strange behaviour of df command

Manuel Arostegui Ramirez manuel at todo-linux.com
Tue Oct 10 14:43:25 UTC 2006


El Martes, 10 de Octubre de 2006 15:58, Atul Tyagi escribió:
> Hi All,
>
> I am facing a little problem. I guess its more of a conceptual problem
> rather than a OS issue.
>
> One of my software raid partiton /dev/md4 is about 30 GB. I had put a file
> of about 18GB in that jus for few mins and then deleted that. Now even
> after about 6 hrs. My RHEL4 system gives me weird output. following are the
> outputs that might help you understand.
>
> df -h
> ===
>
> [root at pingu ~]# df -h
> Filesystem            Size  Used Avail Use% Mounted on
> /dev/md0              5.0G  2.7G  2.1G  56% /
> /dev/md1               99M   17M   78M  18% /boot
> none                 1014M     0 1014M   0% /dev/shm
> /dev/md2              5.0G  190M  4.5G   4% /var
> /dev/md4               30G   22G  5.9G  79% /usr/local/test
>
> du -hs
> =====
> [root at pingu ~]# du -hs /usr/local/test
> 2.7G    /usr/local/test
>
> Can some one please clear my doubt and explain why there is a such a hugh
> difference in both the commands. Disk usage shown by df -h is 22G where as
> du shows 2.7G.
>
> Would appriciate any pointer to this problem.
>
> Thanks,
>
> Atul

quote from: http://www.acersupport.com/ess/articles/articles/14.cfm

You may often see a difference in the output of the two commands "du" and 
"df". For example, a df -t is executed on a system and it comes back with the 
following:

       (/dev/root ):     216000 blocks      41950 i-nodes
              total:     260460 blocks      43392 i-nodes

If you subtract the total blocks free from the total available you get: 44460. 
The command du -s (from the root directory) shows: 39130. This is a 
discrepancy of 5300 blocks. However, there is a big difference in how these 
two utilities work. The df command takes a look at the freelist and gives a 
picture of how many blocks are available for use. The du command takes a 
snapshot of the blocks in use by a file or directory, BUT, neither does it 
count the blocks used by the directory entries themselves, nor does it count 
the blocks used by special files (ie. device files, named pipes, etc.).

So, if you want to get an approximation of what is in use from looking at the 
df -t output you need to perform one more step.

Perform the subtraction to determine the number of i-nodes in use and then 
multiply that by 4. When you add that value to the one you got previously you 
will get an approximation of the total blocks in use. This will still not 
match exactly!

The general point is that things aren't always as they seem at first glance. 
There are many utilities in UNIX. Determine what it is that you really want 
to know and then use the appropriate tool. 

-- 
Manuel Arostegui Ramirez.

Electronic Mail is not secure, may not be read every day, and should not
be used for urgent or sensitive issues.




More information about the redhat-list mailing list