1.说明
装有Oracle数据库的虚拟机,运行一段时间后突然数据库无法访问了。后查看日志发现报错:操作系统空间满了,无法创建审计日志文件。
查看操作系统磁盘空间:
但是查看磁盘空间明明还有很多没有使用
https://www.cndba.cn/Expect-le/article/3128https://www.cndba.cn/Expect-le/article/3128
[root@rac1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_rac1-lv_root
46G 28G 16G 65% /
devtmpfs 1.4G 296K 1.4G 1% /dev
/dev/sda1 477M 41M 411M 9% /boot
tmpfs 1.4G 8.0K 1.4G 1% /dev/shm
tmpfs 1.4G 8.0K 1.4G 1% /dev/shm
tmpfs 1.4G 8.0K 1.4G 1% /dev/shm
[root@rac1 ~]# touch test.txt
touch: cannot touch `test.txt': No space left on device
奇怪了,查看inode的使用情况,/根目录的inode已经使用了100%,问题就出在这https://www.cndba.cn/Expect-le/article/3128
[root@rac1 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_rac1-lv_root
3055616 3055616 0 100% /
devtmpfs 356754 895 355859 1% /dev
/dev/sda1 128016 39 127977 1% /boot
tmpfs 360468 3 360465 1% /dev/shm
tmpfs 360468 3 360465 1% /dev/shm
tmpfs 360468 3 360465 1% /dev/shm
原因就是inode被使用完了,导致没有空闲的inode来使用,而创建新的问题,文件夹等都是需要inode,inode是用来记录文件,文件夹的创建者,创建时间,大小等等信息。
所以一个文件占用一个inode,所以解决方法就是删除不用的文件,例如:日志,临时文件,oracle的审计日志等。
可通过下面命令来查看各个文件夹下的文件数https://www.cndba.cn/Expect-le/article/3128
https://www.cndba.cn/Expect-le/article/3128
for i in /*; do echo $i; find $i | wc -l; done
如果知道了是哪个文件夹,可以直接去删除。而关于删除大量小文件的方法:
可以通过rsync来删除:
rsync -a --delete /tmp/rm_dir/ /u01/app/oracle/admin/cndba/adump/
注:如果inode可用为0,将无法创建文件夹,那么需要先删除一点文件释放一点inode即可。
版权声明:本文为博主原创文章,未经博主允许不得转载。
inode