Posted under » Linux on 1 October 2015
Why df shows over 200G space used, while du only shows 50G used?
Most probably this is caused by open files being deleted. When a file is opened by a process, deleting the file won't release the space occupied by it. we also need to terminate the process, otherwise df and du will show different filesystem usage.
Those two tools were meant for different propose.
root@taik:/var/www# du -csh * 109M aaindex 14M markers 945M defend 4.9G docs 32M drupal 20K html 43M lego 1.6M mirf 1.1M ossd 57M shampod 12K ssl 233M wildcat 4.0K wwwtyk 7G total
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vx/dsk/datadg/apps
503G 278G 211G 57% /apps
To see what file was meant to delete and still holding on by the process id
#lsof /apps | grep deleted oracle 5332 oracle 7u REG 199,65533 0 18418 /apps/VRT/dbs/lkinstorcl (deleted) oracle 5334 oracle 7u REG 199,65533 0 18418 /apps/VRT/dbs/lkinstorcl (deleted) oracle 5348 oracle 7u REG 199,65533 0 18418 /apps/VRT/dbs/lkinstorcl (deleted)
You can use the following commands to get all pid
#PIDLIST=`lsof /apps | grep delete | awk ' { print $2 } '`
#ps -p $PIDLIST
PID TTY STAT TIME COMMAND
5332 ? Ss 1:25 ora_pmon_orcl
5334 ? Ss 0:46 ora_psp0_orcl
5336 ? Ss 0:04 ora_mman_orcl
5338 ? Ss 2:55 ora_dbw0_orcl
5340 ? Ss 2:01 ora_lgwr_orcl
5342 ? Ss 6:00 ora_ckpt_orcl
5344 ? Ss 9:19 ora_smon_orcl
5346 ? Ss 0:01 ora_reco_orcl
5348 ? Ss 11:54 ora_cjq0_orcl
5350 ? Ss 8:57 ora_mmon_orcl
5352 ? Ss 2:24 ora_mmnl_orcl
5475 ? Ss 4:21 ora_q001_orcl
12952 ? Ss 0:00 ora_j000_orcl
Normally, unmount and remount the file system will flush the inode structure and will provide the correct usage. In case if you can not unmount the file system, you can kill these processes with permission from cust , all these open file can be remove and df and du will show a correct usage.
Refer to latest article.