linux/Unix下文件系统空间不足(Oracle)

问题症状:文件系统中空间不足

文档中给出的例子:假设文件系统100%空间量为350M(现已用满)df -k找到200M的文件然后通过“rm”删除,然后通过ls验证文件已被删除。但df-k输出仍然报道100%文件系统使用率。

原因跟踪:尽管在技术层次来看我们从文件系统中删除了文件,但是当其他进程依旧使用它的时候,文档所占用的磁盘系统并没有释放,也就是说,我们的问题依旧没有解决。

理解与感悟:

oracle官方其实给出了解决该问题的文档(文档链接在文章最后面)。不过我觉得这种问题应该从两方面考虑,一方面在配置安装的时候就应该考虑到这一点,那就给文件系统足够的空间,让它不至于短时间内就会达到上限。这个也是最根本的,因为尽管在达到上限之后还可以通过其他方法释放空间,但是我们并不确定文件是不是真的没有用了,其次,删除某一个或几个文件后隔段时间会比上次更容易达到上限。另一方面达到上限后,像我这种小白级别的往往认为把文件rm掉就可以了(其实我记得大学里的老师曾经提起过这个事,当时他也是说rm掉之后释放不释放空间要看运气,不过后来没在意,从这就可以看出来,真正的技术是需要我们不断地练习的!),但其实,文件所占用的磁盘空间往往没有删除,原因就是仍旧有其他进程在用它,这个时候怎么办?文档中给了几个方法,当然,可以通过杀死这个进程(如果你知道这个进程是做什么的)或者解除挂载的文件系统并重新启动,不过实际工作中往往不允许让我们这么做(这个当然了,万一是核心库,搞坏了不就完蛋了)。另一方面,我们使用"cat /dev/null > /path/to/logfile"这个命令来替代删除日志文件,可以不用删除就清空文件,这个我感觉是最合适的方法,最起码它不会让用户的数据库down掉。文档中有一句让我深深地体会到理论与现实的差距:But the best way is generally to stop the offending process, delete the file, then restart the process.(但是最好的方法还是停掉那个该死的进程,删掉文件然后重启进程)。当然还有一种情况就是你把文件删除了,磁盘没有释放(这个感觉有些麻烦啊),文档中也给出了建议,那就是:寻找使用文件的进程(# find /proc/*/fd -type f -links 0 \! -size 0 -ls    # tail -f /proc//fd/)。有个命令,我感觉挺好:# cp /dev/null /proc//fd/,这样是不是和cat /dev/null > /path/to/logfile异曲同工啊。

总之,这篇文档给我最大的启发其实不是技术本身,而是:身为一个DBA,我们英语阅读能力的重要性!!!(感觉离开了翻译软件整个人就废了),另外一点对待技术上的事情,不要用自己的惯性思维想当然的去做,有时候会很致命的。

官方文档:

File removal fails to free up disk space(Also df and du show different output)(DocID1001624.1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值