Df command in Linux not updating actual diskspace, wrong data

Df command in Linux not updating actual diskspace, wrong data

Mattias Geniar, Friday, November 26, 2010 - last modified: Wednesday, March 29, 2017

This is an annoying problem on a lot of Linux distributions, and it can have several causes.

Caused by open file descriptors

If you delete files from the filesystem, the command "df -h" might not show the deleted space as being available. This is because the deleted files could still be held open by (defunct) processes, where the file descriptor handles still point to those files. As a result, the df command assumes the files are still there, and doesn't clear the space.

Here are some ways you can track which processes still refer to the deleted files.

# lsof | grep 'deleted'
# ls -ld /proc/* | grep '(deleted)'

The solution is to either stop the process (kill <PID>, or the more agressive kill -9 <PID>), or if that doesn't work to restart the server in general.

Reserved space for journaling

Alternativaly, if you're using a journaling filesystem (like EXT3), keep in mind that df will also count the space used for this journal log in the output.

Default block reservation for super-user

Also keep in mind that there will, by default, be a 5% block reservation for the super-user per blockdevice (in short: for every seperate partition on a hard disk in your system). You can check the amount of reserved space, by running the tune2fs -l command.

# tune2fs -l /dev/sda2 | grep -i reserved
Reserved block count:     208242
Reserved GDT blocks:      1016
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

As it's described in the mkfs.ext3 manual, for the -m parameter.

-m: Specify the percentage of the filesystem blocks reserved for the super-user.  This avoids fragmentation, and allows root-owned daemons, such as syslogd(8), to continue to function  correctly  after  non-privileged processes are prevented from writing to the filesystem.  The default percentage is 5%.
0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
Installing and Configuring an OCFS2 Clustered File System
Viewed 5181 times since Sat, Jun 2, 2018
How to schedule crontab in Unix Operating Systems
Viewed 1436 times since Fri, Jun 8, 2018
Using renice and taskset to manage process priority and CPU affinity with Linux OEL 6.4
Viewed 2885 times since Mon, Feb 17, 2020
LVM: Extend SWAP size by growing existing Logical Volume
Viewed 1949 times since Sat, Jun 2, 2018
RHEL: Display swap/RAM size
Viewed 2552 times since Sat, Jun 2, 2018
ZPOOL: Create a new zpool for zfs filesystems
Viewed 1579 times since Sun, Jun 3, 2018
RHCS6: Clustered LVM
Viewed 1606 times since Sun, Jun 3, 2018
Increase A VMware Disk Size (VMDK) Formatted As Linux LVM without rebooting
Viewed 14556 times since Wed, May 30, 2018
Using Official Redhat DVD as repository
Viewed 10472 times since Mon, Oct 29, 2018
How to use yum-cron to automatically update RHEL/CentOS Linux 6.x / 7.x
Viewed 4185 times since Tue, Dec 4, 2018