很多人会遇到在操作系统上rm掉一个大的文件,以解决文件系统超标的问题,可是有的时侯文件删除掉了,而空间却未释放出来。论坛上也常常见这样贴子,为什么会这样,如何解决呢?本文只局限于Hp unix的操作系统。
rm掉文件空间不释放原因
原因其实很简单,主要是因为被删除的文件在删除的时侯还是进程在操作(打开、访问等)的缘故,rm只完成了在磁盘上文件实体的释放,而类似free list结构中相应的文件系统因进程的操作相应的inode并未释放。
解决的方法
这样的问题解决起来也很简单,找到操作的进程,kill掉就可以了,可是找到操作的进程恰恰是本问题的难点和关键。这样的问题也可以通过重启机器和nmount/mount文件系统这样的方式解决,但这样的方法我是不提倡的,小小的问题就重启机器,小题大做。
1 Hp unix操作系统
需要借助uli这个内部工具,后面会详细说。
2 linux及solaris
可以这样做:
a、下载一个lsof软件装上,google上可以搜到
b、找到正在用被删文件的进程
lsof | grep deleted
c、kill掉相应的进程空间就释放了
Hp unix本问题的解决
1 问题重现
1.1 bdf一下/oracle文件系统
- # bdf /oracle
- Filesystem kbytes used avail %used Mounted on
- /dev/vg00/lv_oracle
- 8192000 5313813 2698313 66% /oracle
- 可见空余2698313kb
1.2 udump下有一文件占用了60多mb的空间
- # pwd
- /oracle/app/oracle/admin/yztest/udump
- #
- # ls -l yztest_ora_11026.trc
- -rw-rw-rw- 1 root sys 62217530 Apr 23 10:36 yztest_ora_11026.trc
- #
1.3 以more命令查看文件,保持这个操作不动
# more yztest_ora_11026.trc
1.4 另开一个窗口,删除文件,空间未释放
- # rm yztest_ora_11026.trc
- #
- # ls -l yztest_ora_11026.trc
- yztest_ora_11026.trc not found
- #
- # bdf /oracle
- Filesystem kbytes used avail %used Mounted on
- /dev/vg00/lv_oracle
- 8192000 5313813 2698313 66% /oracle
可见/oracle文件系统的可用空间并未发生改变。
这样,我们对Hp unix中的问题就分析清楚了,解决问题的方法就浮出水面了。
【编辑推荐】