I am getting the error "No space left on device" when i tried to scp some files to a centos machine,
tried to check:
[root@...]# 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?
34 Answers
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 df -i
2591792 136322 2455470 6% /home /dev/sdb1 1887488 1887488 0 100% /data Disk used 6% but inode table full.
3To 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.
2