删除了文件,为什么磁盘空间没有释放?

虚竹 2018-3-20 1024

原因分析
虽然你删除了文件,但是空间可能还被占用着。
为什么还会被占用呢?因为这个文件可能还在被其它进程使用着。

怎么解决?

方案一:重启系统大法
这个方法我就不用解释了。

方案二:停止使用这些文件的进程
怎么找到占用这些文件的进程呢?
用 lsof 命令,CentOS 下使用以下命令安装 lsof:
yum install -y lsof
然后运行以下命令查看被删除的文件被谁占用:
lsof | grep deleted
比如:
Quote# lsof | grep deleted
ora 25575 data 33u REG 65,65 4294983680 31014933 /oradata/DATAPRE/UNDOTBS009.dbf (deleted)

如果有找到文件,那么第二列就是进程ID,到【进程管理】应用中将它停止,空间就释放了。
最新回复 (1)
  • 虚竹 2018-3-20
    引用 2
    在 Redhat 网站上看到现成的脚本,更温柔:
    https://access.redhat.com/solutions/2316

    针对 CentOS 6 的一键释放已删除文件空间命令:
    lsof | grep deleted | awk '{print $9}' | xargs sum 2> /dev/null | awk '{ SUM += $2 } END { print SUM }'

    针对 CentOS 7 的一键释放已删除文件空间命令:
    lsof | grep deleted | awk '{print $8}' | xargs sum 2> /dev/null | awk '{ SUM += $2 } END { print SUM }'
返回
发新帖