Linux服务器文件删除空间未释放的问题

发表于:2016-8-29 10:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:chenpingzhao    来源:51Testing软件测试网采编

  一、问题起源
  在Linux系统中,通过rm删除文件将会从文件系统的目录结构上解除链接(unlink),如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件磁盘空间也一直被占用
  这样就会导致我们明明删除了文件,但是磁盘空间却未被释放
  二、问题分析
  1、首先获得一个已经被删除但是仍然被应用程序占用的文件列表
root@instance-zo0fkfng:~#  lsof|grep deleted
init          1             root   10w      REG              253,1        283     155958 /var/log/upstart/network-manager.log.1 (deleted)
init          1             root   12w      REG              253,1        314     155934 /var/log/upstart/mountall.log.1 (deleted)
init          1             root   13w      REG              253,1        508     131203 /var/log/upstart/modemmanager.log.1 (deleted)
init          1             root   17w      REG              253,1        881     155967 /var/log/upstart/mysql.log.1 (deleted)
init          1             root   24w      REG              253,1         63     155949 /var/log/upstart/dbus.log.1 (deleted)
mysqld     1159            mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159            mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159            mysql    6u      REG              253,1          0      29466 /tmp/ibQSxcTY (deleted)
mysqld     1159            mysql    7u      REG              253,1          0        282 /tmp/ibxSgZNX (deleted)
mysqld     1159            mysql   11u      REG              253,1          0      29469 /tmp/ibXTzqnX (deleted)
mysqld     1159  1185      mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159 17965      mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159 17965      mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159 17965      mysql    6u      REG              253,1          0      29466 /tmp/ibQSxcTY (deleted)
mysqld     1159 17965      mysql    7u      REG              253,1          0        282 /tmp/ibxSgZNX (deleted)
mysqld     1159 17965      mysql   11u      REG              253,1          0      29469 /tmp/ibXTzqnX (deleted)
php5-fpm   3724         www-data    3ur     REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   3853         www-data    3ur     REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   7741             root    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   9900         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   9901         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   9930         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   9961         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   9965         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm   9966         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10126         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10127         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10128         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10174         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10196         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10248         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10316         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10375         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10396         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10400         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10401         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10438         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10479         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10511         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  10531         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  11150         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  11638         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  11670         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  12210         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  14974         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  17101         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  17161         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  17261         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
php5-fpm  17470         www-data    3u      REG              253,1          0      29468 /tmp/.ZendSem.gfHFuR (deleted)
  从输出结果可以看到哪些文件还被使用,未被释放空间
  或者
root@instance-zo0fkfng:~# find /proc/*/fd -ls | grep  '(deleted)'
71253    0 lrwx------   1 root     root           64 Jun 10 22:09 /proc/1159/fd/4 -> /tmp/ibkjeh3Z\ (deleted)
71254    0 lrwx------   1 root     root           64 Jun 10 22:09 /proc/1159/fd/5 -> /tmp/ibdbHetZ\ (deleted)
71255    0 lrwx------   1 root     root           64 Jun 10 22:09 /proc/1159/fd/6 -> /tmp/ibQSxcTY\ (deleted)
71256    0 lrwx------   1 root     root           64 Jun 10 22:09 /proc/1159/fd/7 -> /tmp/ibxSgZNX\ (deleted)
71260    0 lrwx------   1 root     root           64 Jun 10 22:09 /proc/1159/fd/11 -> /tmp/ibXTzqnX\ (deleted)
221991074    0 lrwx------   1 root     root           64 Aug 27 19:43 /proc/18132/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991101    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18135/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991122    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18136/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991147    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18137/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991168    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18138/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991189    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18139/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991210    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18140/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991231    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18141/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991252    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18142/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991273    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18143/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991294    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18144/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
221991315    0 lrwx------   1 www-data www-data       64 Aug 27 19:43 /proc/18147/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
222001888    0 lrwx------   1 www-data www-data       64 Aug 27 19:44 /proc/18157/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
222001909    0 lrwx------   1 www-data www-data       64 Aug 27 19:44 /proc/18161/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
222001938    0 lrwx------   1 www-data www-data       64 Aug 27 19:44 /proc/18170/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
222001959    0 lrwx------   1 www-data www-data       64 Aug 27 19:44 /proc/18178/fd/3 -> /tmp/.ZendSem.hIpOFr\ (deleted)
find: `/proc/18182/fd/5': No such file or directory
55130    0 l-wx------   1 root     root           64 Jun 10 22:09 /proc/1/fd/10 -> /var/log/upstart/network-manager.log.1\ (deleted)
55132    0 l-wx------   1 root     root           64 Jun 10 22:09 /proc/1/fd/12 -> /var/log/upstart/mountall.log.1\ (deleted)
55133    0 l-wx------   1 root     root           64 Jun 10 22:09 /proc/1/fd/13 -> /var/log/upstart/modemmanager.log.1\ (deleted)
55137    0 l-wx------   1 root     root           64 Jun 10 22:09 /proc/1/fd/17 -> /var/log/upstart/mysql.log.1\ (deleted)
55142    0 l-wx------   1 root     root           64 Jun 10 22:09 /proc/1/fd/24 -> /var/log/upstart/dbus.log.1\ (deleted)
find: `/proc/self/fd/5': No such file or directory
  2、如何让进程释放文件,进而释放磁盘空间
  kill掉相应的进程或者重启该进程,让os自动回收磁盘空间
  当linux打开一个文件的时候,Linux内核会为每一个进程在/proc/ 『/proc/nnnn/fd/目录(nnnn为pid)』建立一个以其pid为名的目录用来保存进程的相关信息,而其子目录fd保存的是该进程打开的所有文件的fd(fd:file descriptor)
  kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件
root@instance-zo0fkfng:~# service php5-fpm restart
root@instance-zo0fkfng:~# lsof|grep deleted
init          1             root   10w      REG              253,1        283     155958 /var/log/upstart/network-manager.log.1 (deleted)
init          1             root   12w      REG              253,1        314     155934 /var/log/upstart/mountall.log.1 (deleted)
init          1             root   13w      REG              253,1        508     131203 /var/log/upstart/modemmanager.log.1 (deleted)
init          1             root   17w      REG              253,1        881     155967 /var/log/upstart/mysql.log.1 (deleted)
init          1             root   24w      REG              253,1         63     155949 /var/log/upstart/dbus.log.1 (deleted)
mysqld     1159            mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159            mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159            mysql    6u      REG              253,1          0      29466 /tmp/ibQSxcTY (deleted)
mysqld     1159            mysql    7u      REG              253,1          0        282 /tmp/ibxSgZNX (deleted)
mysqld     1159            mysql   11u      REG              253,1          0      29469 /tmp/ibXTzqnX (deleted)
mysqld     1159  1185      mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159  1185      mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159  1185      mysql    6u      REG              253,1          0      29466 /tmp/ibQSxcTY (deleted)
mysqld     1159  1185      mysql    7u      REG              253,1          0        282 /tmp/ibxSgZNX (deleted)
mysqld     1159  1185      mysql   11u      REG              253,1          0      29469 /tmp/ibXTzqnX (deleted)
mysqld     1159  1186      mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159  1186      mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159 18149      mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159 18149      mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159 18149      mysql    6u      REG              253,1          0      29466 /tmp/ibQSxcTY (deleted)
mysqld     1159 18149      mysql    7u      REG              253,1          0        282 /tmp/ibxSgZNX (deleted)
mysqld     1159 18149      mysql   11u      REG              253,1          0      29469 /tmp/ibXTzqnX (deleted)
mysqld     1159 18150      mysql    4u      REG              253,1          0        374 /tmp/ibkjeh3Z (deleted)
mysqld     1159 18150      mysql    5u      REG              253,1          0       3458 /tmp/ibdbHetZ (deleted)
mysqld     1159 18150      mysql    6u      REG              253,1          0      29466 /tmp/ibQSxcTY (deleted)
mysqld     1159 18150      mysql    7u      REG              253,1          0        282 /tmp/ibxSgZNX (deleted)
mysqld     1159 18150      mysql   11u      REG              253,1          0      29469 /tmp/ibXTzqnX (deleted)
php5-fpm  18132             root    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18135         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18136         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18137         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18138         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18139         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18140         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18141         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18142         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18143         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18144         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
php5-fpm  18147         www-data    3u      REG              253,1          0      28407 /tmp/.ZendSem.hIpOFr (deleted)
  可以看到php5-fpm变少了
  还有一种方式,清除文件
  : > /path/to/the/file.log
  : > "/proc/$pid/fd/$fd"
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号