When i tried to scp some files to a centos machine, I am getting the error “No space left on device”
[[email protected]]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol01 18G 18G 0 100% /
And when I do
du -sh / -> it gives only 5G
[... ~]$ df -i / Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/VolGroup00-LogVol01 4685824 209516 4476308 5% /
seems like file system is full.
How can i find which one is taking these much size?
Such difference between the output of
du -sh and
df -h may happen if some large file has been deleted, but is still opened by some process. Check with the command
lsof | grep deleted to see which processes have opened descriptors to deleted files. You can restart the process and the space will be freed.
Maybe you are out of inodes. Try
2591792 136322 2455470 6% /home /dev/sdb1 1887488 1887488 0 100% /data
Disk used 6% but inode table full.
To list processes holding deleted files a linux system which has no
lsof, here’s my trick:
pushd /proc ; for i in [1-9]* ; do ls -l $i/fd | grep "(deleted)" && (echo -n "used by: " ; ps -p $i | grep -v PID ; echo ) ; done ; popd
You can execute the following commands
lsof / |grep deleted
kill the process id’s, which free up the disk space.