(转载)删除文件后硬盘空间不释放的问题

转载自:http://www.linuxdiyf.com/viewarticle.php?id=89776

很多人会遇到在操作系统上rm掉一个大的文件,以解决文件系统超标的问题,可是有的时侯文件删除掉了,而空间却未释放出来。论坛上也常常见这样贴子,为什么会这样,如何解决呢?本文只局限于Hp unix的操作系统。

原因其实很简单,主要是因为被删除的文件在删除的时侯还是进程在操作(打开、访问等)的缘故,rm只完成了在磁盘上文件实体的释放,而类似free list结构中相应的文件系统因进程的操作相应的inode并未释放。

[@more@]

这样的问题解决起来也很简单,找到操作的进程,kill掉就可以了,可是找到操作的进程恰恰是本问题的难点和关键。这样的问题也可以通过重启机器和nmount/mount文件系统这样的方式解决,但这样的方法我是不提倡的,小小的问题就重启机器,小题大做。

hp-unix操作系统
需要借助uli这个内部工具,后面会详细说。

linux及solaris
可以这样做:
a、下载一个lsof软件装上,google上可以搜到
b、找到正在用被删文件的进程
lsof | grep deleted
c、kill掉相应的进程空间就释放了

hp unix本问题的解决

问题重现

bdf一下/oracle文件系统
# bdf /oracle
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lv_oracle
8192000 5313813 2698313 66% /oracle

可见空余2698313kb

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
#

以more命令查看文件,保持这个操作不动
# more yztest_ora_11026.trc

另开一个窗口,删除文件,空间未释放
# 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文件系统的可用空间并未发生改变。

问题解决
安装uli工具
这个工具如果没有,可以向hp supporter要一个。

ftp到主机,注意用以二进制上传
# ls -l
total 960
-rw-rw-rw- 1 root sys 487379 Apr 23 10:22 uli.bin

解压缩,文件是自解压的
# sh ./uli.bin
Running install script. ./uli.install uli a 2

查看一下
# ls -l
total 5520
-rwxrwxrwx 2 222 users 1160136 Dec 13 2006 uli
-rwxrwxrwx 2 222 users 1160136 Dec 13 2006 uli-a-2
-rw-rw-rw- 1 root sys 487379 Apr 23 10:22 uli.bin
-rwxrwxrwx 1 222 users 536 Dec 13 2006 uli.install

执行uli.install
# ./uli.install uli a 2
#

查看一下uli的各个可用选项
# ./uli -h

4.2.2 执行uli,杀掉操作进程

# ./uli

libp4 (9.219): Opening /stand/vmunix /dev/kmem

Loading symbols from /stand/vmunix
Kernel TEXT pages not requested in crashconf
Will use an artificial mapping from a.out TEXT pages
Loading symbols from /stand/dlkm/mod.d/krm
Note: Consider P4_ELF_WARNING=2 to get more details
Note: No debug information for this module
Found 16 matching unlinked file table entries.

15128进程执行了more操作,影响了空间的释放

杀掉15128
# kill 15128
#

再查看一下/oracle的空间
# bdf /oracle
Filesystem kbytes used avail %used Mounted on
/dev/vg00/lv_oracle
8192000 5253045 2755283 66% /oracle

可见,可用空间已经由原来的2698313kb升为2755283kb。

解决问题的方法是很多的,对于复杂的问题也可能有很简便的解决的方法,所以最好在用重启机器这样方法之前偿试一下,看是否有更好的更方便的方法。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25016/viewspace-1004466/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25016/viewspace-1004466/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值