问题描述:
[root@bak ~]# crontab -e
no crontab for root - using an empty one
/tmp/crontab.rHuk45: No space left on device
显示/tmp满,但是df -Th发现空间未满
[root@bak ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 50G 19G 29G 39% /
tmpfs tmpfs 32G 502M 31G 2% /dev/shm
/dev/sda1 ext4 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home ext4 6.6T 1.5T 4.8T 24% /home
/media/Red Hat Enterprise 6.5 x86_64.iso iso9660 3.6G 3.6G 0 100% /mnt
猜想应该是inode满了
[root@bak ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 3276800 3276800 0 100% /
tmpfs 8230027 184 8229843 1% /dev/shm
/dev/sda1 128016 39 127977 1% /boot
/dev/mapper/VolGroup-lv_home 448487424 12057 448475367 1% /home
/media/Red Hat Enterprise 6.5 x86_64.iso 0 0 0 - /mnt
果然,inode使用率100%
inode包含的信息:文件的字节数,拥有者id,组id,权限,改动时间,链接数,数据block的位置
df -h 是去删除比较大无用的文件-----------大文件占用大量的磁盘容量。
df -i 则去删除数量过多的小文件-----------过多的文件占用了大量的inode号。
通过脚本查询文件最多的目录
[root@bak var]# find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
603 /usr/lib/gcc/x86_64-redhat-linux/4.4.4/adalib
628 /usr/lib64/python2.6
665 /usr/share/doc
672 /u01/app/oracle/product/11.2.0/dbhome_1/sysman/admin/emdrep/sql/db
703 /usr/share/man/man8
872 /u01/app/oracle/product/11.2.0/dbhome_1/apex/images
960 /dbra/app/lib/openssl/ssl/man/man3
1085 /usr/lib/gcc/x86_64-redhat-linux/4.4.4/adainclude
1089 /u01/app/oracle/product/11.2.0/dbhome_1/owb/wf/java/oracle/apps/fnd/wf/icons
1124 /usr/share/man/man3p
1310 /usr/lib64
1456 /usr/share/man/man1
1473 /usr/bin
1634 /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin
3181 /usr/share/foomatic/db/source/printer
4407 /usr/share/man/man3
4482 /usr/share/doc/libstdc++-docs-4.4.7/html/api
3103535 /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/audit
You have new mail in /var/spool/mail/root
很显然, /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/audit下的文件数过多,从事DBA的都知道,这是Oracle数据库的审计文件。
[root@mcbak ~]# cd /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/audit
[root@mcbak audit]# rm -rf *.aud
-bash: /bin/rm: Argument list too long
文件数太多,rm -rf已经不能删除了,采用find方式删除
[root@bak audit]# find . -name "*.aud" | xargs rm -rf '*.aud'
[root@mcbak audit]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 3276800 165973 3110827 6% /
tmpfs 8230027 184 8229843 1% /dev/shm
/dev/sda1 128016 39 127977 1% /boot
/dev/mapper/VolGroup-lv_home 448487424 12068 448475356 1% /home
/media/Red Hat Enterprise 6.5 x86_64.iso 0 0 0 - /mnt
至此,问题解决