Linux磁盘空间释放问题整理
作者:良许 发布时间:2022-04-30 21:02:17
IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件。但是发现删除该文件后,/分区的磁盘空间压根没有释放出来,使用率还是100%!这是为什么呢??
[root@linux-node1 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 58G 7.8G 47G 100% /tmpfs 1.9G 0 1.9G 0% /dev/shm/dev/vda1 190M 72M 108M 40% /boot
原因分析
在Linux系统中,通过rm或者文件管理器删除文件,只是将它会从文件系统的目录结构上解除链接(unlink),也就是说只是删除了文件和系统目录结构的链接;如果文件在删除时是被打开的(有一个进程正在使用该文件,文件被进程锁定或者有进程一直在向这个文件写数据等)状态,那么进程将仍然可以读取该文件,也就是说没有删除掉文件在读取的状态,所以磁盘空间也就会一直被占用。
一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除文件后,空间还没释放,就是因为有进程还在一直向这个文件写入内容,导致虽然删除了文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了。
解决措施有以下几种
1.通过lsof|grep deleted命令获取到已经被删除但是仍然被应用程序占用的文件列表,然后kill掉还在占用所删除文件的进程。需要注意的是:如果有很多进程都在使用所删除文件,那么采用第1种方式kill进程就有点麻烦了,而且风险也比较大。因为kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。必须要确定不会对运行中的进程造成影响时才能使用,应用程序对这种方式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题。
2.或停掉或重启使用这个所删除文件的应用,让OS自动回收磁盘空间。
3.也可以重启操作系统,不过这并不是最好的方法4.对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件。通过这种方法,磁盘空间不但可以马上释放,也可保障进程继续向文件写入日志。
在线清空文件(比如/home/wangshibo.log)的方式:
# echo " " > /home/wangshibo.logb)# cat /dev/null > /home/wangshibo.logc)# > /home/wangshibo.log
还有一种磁盘空间使用问题的现象:明明使用df -h命令查看磁盘空间使用率不算高,还有很多空余空间,但是创建文件或写入数据时一直报错磁盘写满:" no space left on device"!
一般这种问题都是由于分区目录下deleted删除后的资源空间没有真正释放出来导致的, 具体处理流程如下:
1.先df -lh查看一下磁盘使用状况, 发现/data分区下的Used已用空间很大, 但是实际查看并没有占用那么大的空间!2.找到被删除文件所在的分区, 比如/data分区3.查看被删除了的所有文件:lsof -n /data |grep deleted4.杀死这些文件的delete进程, 释放空间: lsof -n /data |grep deleted|awk '{print $2}'|xargs kill -95.接着再运行lsof -n /data |grep delete,应该就没有结果了。6.注意: 刚杀死deleted进程时, df -h查看/data 分区, Used已用空间可能时瞬间显示过大, 但随着deleted进程杀死, 资源逐渐释放, /data分区下的Used已用空间会逐渐变小, Avail可用空间会逐渐变大)
大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,给监控系统和管理员一点时间去察觉。不过有时候这部分预留的硬盘空间不用的话有点浪费。
在Linux系统中,ext2、ext3、ext4文件系统上通常会默认预留5%的磁盘空间,比如磁盘如果是2TB,这就意味着有100GB的空间会被预留下来,这样的话会不会显得有点浪费了。可以通过"tune2fs"命令来改变5%的默认设置,比如只预留2%的空间。但是不建议设成0%,现实环境中这样做不安全。
# df -TFilesystem Type 1K-blocks Used Available Use% Mounted on/dev/vda1 ext4 41151808 4962148 34076228 13% /devtmpfs devtmpfs 1931468 0 1931468 0% /devtmpfs tmpfs 1941204 0 1941204 0% /dev/shmtmpfs tmpfs 1941204 652 1940552 1% /runtmpfs tmpfs 1941204 0 1941204 0% /sys/fs/cgrouptmpfs tmpfs 388244 0 388244 0% /run/user/0[root@ss-server ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 40G 4.8G 33G 13% /devtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 620K 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgrouptmpfs 380M 0 380M 0% /run/user/0
比如上面"/"分区是ext4文件系统,默认系统预留了5%也就是2G的空间。现在可以通过"tune2fs"命令将系统预留空间改为2%。
# tune2fs -m 2 /dev/vda1tune2fs 1.42.9 (28-Dec-2013)Setting reserved blocks percentage to 2% (209704 blocks)
执行后,发现"/"分区腾出了1G的空间,这时系统预留空间也就是2%了。
[root@ss-server ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 40G 4.8G 34G 13% /devtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 620K 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgrouptmpfs 380M 0 380M 0% /run/user/0
来源:https://www.lxlinux.net/42-2.html


猜你喜欢
- 北京时间11月3日消息,千橡互动集团董事长兼首席执行官陈一舟今日做客腾讯科技互联网大会访谈室时表示,公司发展重心仍然保持在人人网上。持续在较
- 为了实现图片防盗链,根据网络上搜集的资料加上自己的实践,终于实现了iis下的图片防盗链功能。服务器系统windows 2003 server
- 1、拉取redis镜像docker pull redis2、启动3个redis容器服务,分别使用到6379、6380、6381端口docke
- DHCP 是 Dynamic Host Configuration Protocol 之缩写,它的前身是 BOOTP。BOOTP 原本是用于
- 喜欢非主流的我们,容易伤感,更喜欢用一些伤感图作为QQ签名图。不过,你知道如何制作这种伤感图片么?其实没那么难,不用PS,因为时下有很多操作
- 本文介绍了virtualbox中ubuntu和windows共享文件夹设置,具体如下:系统平台:win8.1、virtualbox4.3.8
- 最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了
- 关于网络数据库里一些商业数据被盗窃后公布于网上;公司商业网站的产品价格数据又被恶意修改……类似这样的案例,在网上搜索了一下,实在不少。其原因
- 在 TCP/IP 协议中,"IP地址 + TCP或UDP端口号" 可以唯一标识网络通讯中的一个进程,"IP地址
- 内容摘要:长尾一词才出生不久,论年龄还是个婴儿,但他像希腊神话中的大力神一样,在婴儿期就手擒大蟒,技惊寰宇。长尾一词的出现,使得一段时期,互
- 这篇文章缘起于这段时间我对拆东墙补西墙这种工作方式的抱怨。先是磁盘空间不够用,配发的电脑仅仅剩余12G的空间,不能外接硬盘,暂时也不能上传备
- 网站的基础架构是单纯地建立以内容提供为主的网站,还是附加交流互动的论坛模式?内容提供还分为图片、文字、多媒体影音等类型。在网站的内容之后,是
- 写这篇文章的时候,我忽然感觉自己有点自负,我的网站才起步,基本没任何访问量,我也刚刚从心理上把个人建站作为我的一份职业,可以说在这方面我连初
- dedecms默认在列表是无法调用tag标签的,经过各位版主们的帮助,现给大家提供出种方法方法1:在列表需要的位置加入下列代码[field:
- 熟悉Firefox的人应该都知道,当你在页面上单击鼠标中键的时候,就可以启动Firefox的Autoscroll功能,并且在页面上会出现一个
- 这里举例4个不同类型脚本的虚拟主机 权限设置例子主机头主机脚本硬盘目录IIS用户名硬盘权限
- 对于 Linux 管理员来说这是一个重要(美妙)的话题,所以每个人都必须知道,并练习怎样才能更高效的使用它们。在 Linux 中,无论何时当
- 一年之内,先是搜狐分拆旗下的游戏业务——畅游公司上市,继而盛大网络也将旗下的游戏&mdash
- 下面是使用服务形式启动tomcat6.0的内存配置方法:D:\Program Files\Apache Software Foundatio
- 一、简介使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系