linux 服务器磁盘满了怎么删

linux 服务器磁盘满了怎么删,第1张

今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了。把日志文件都删掉了,可硬盘空间依旧满。于是df -h查看了下各个挂载点的状况(如下图)。 /dev/sda3占用了100%,那么我们du -s -h /看下目录的占用情况(如下图)。 linux磁盘挂载点目录占用情况(图) 挂载点下的目录之和远小于45G,那么是什么占用了硬盘呢 以下为该问题的解答: 在apache/tomcat服务在运行状态下,清空了运行服务的日志,从而导致了/dev/sda3 满了的问题。一般情况下,大多数服务(包括脚本)在运行时,是不能删除当前正在写入的日志文件的。 原理分析: 1 当前accesslog日志正在被apache进程占用。 2 通过rm命令删除accesslog,实际只删除了文件名(该日志文件应用记数不为0,因此空间不会被释放)。 3 通过rm命令删除了accesslog后,apache依然写日志到accesslog中,当开启apache进程时,已经通过accesslog定位到该文件的inode了,就是说再写日志是不通过accesslog,因此即使删除了accesslog,apache依然写日志到accesslog所在的inode节点,所以导致硬盘空间增加。 4 因为删除了accesslog,所以我们就找不到该文件了,du也查不到,就会出现硬盘满了但看不到究竟是哪些文件占用的。 (写的不甚详细,不明白的大家再google下。) 解决方法: 重启该日志文件的相关服务或程序,如:为apache日志文件则重启apache(如下图,重启后才硬盘空间占用正常)。

比如服务器12盘位的,插满了,就无法增加了啊,除非你把数据拷贝出来,重新换大容量硬盘,重新做RAID,重新分区格式化,安装系统和软件。要么在买一台,把数据库和服务端软件分开安装在2台服务器上
如果是存储服务器,在购买一台,,具体是什么服务器,提问中也没有明确

如果你想让新加的硬盘也作为RAID的一部分,你必须重新配置RAID,所有数据将丢失。如果你不考虑新加的硬盘上的数据冗余,你可以把新硬盘配置为另一个容器,有些地方叫逻辑驱动器。那么原来的RAID中的数据不会丢失。

服务器提供服务是肯定的,情况有几种:
1、磁盘没有数据需继续存储,服务器正常的服务,磁盘进行读 *** 作不做写 *** 作。
2、磁盘需要继续进行存储数据,也就是需要空间,那么就要根据之前服务设置的磁盘模式(有不能继续进行写 *** 作、自动覆盖最早数据等)来分析。如果自动覆盖那就不用担心,读写都正常。
3、如果磁盘不能自动进行清理和覆盖,那么需要尽快添加新的磁盘空间,否者容易造成调用数据慢和数据丢失的可能。

服务器满了,有以下原因,逐步检查就好:
1、如果是大文件占用了,那么查询大于某个值的文件的方法:
find / -size +100c -print
这是从根盘开始查找大于100字节的文件(至于字节数你当然可以自己设置)
你可以用
find / -size +100c -exec ls -l {}\;
来列出文件属性。
2、如果只是因为有些应用生成的日志文件较多,长时间没有清理后占用了,这种情况最明显的标志为系统空间使用量逐步递增,每天的增量基本相差不大。那么最快捷的方式莫过于询问应用厂商要到日志存放目录后进行清理。如果找不到厂商,那只好自己动手咯,写个脚本查:
#!/bin/ksh
#####用du命令输出所有目录所占的磁盘空间大小,以G为单位#########
du -h >fs_dulog
######判断各层目录大小,查到占用量大的目录######
cat fs_dulog|while read LINE FS_USED
do
if [ $LINE -ge 10 ]
then
echo $FS_USED >>resultlog
else
exit
fi
done
####查看运行结果#######
more resultlog
这样你就能看到占用量比较大的目录,从而有针对性的到相应目录下检查,看到底是什么东西在占用硬盘空间了。(if [ $LINE -ge 10 ] ,这里是判断超过10G的目录,你可以修改)
3、因为人为的误 *** 作,导致了某些进程在没有执行完成的时候被kill掉了,但是缓存中的程序没有释放,仍然在运行,这会产生一些临时文件占用大量的磁盘空间资源,这种现象的特点是爆发式的增长,在很短时间内就将磁盘空间占满。解决的方法:
i、如果是因为父进程被杀除,子进程还运行导致,那么最简单,kill子进程,就会释放。
ii、如果能用ipcs确认是哪个用户的进程,那么也不困难,顺着使用ipcrm就行(这个就不一一例举了,有了命令查使用方法还是很方便的)
iii、执行进程的用户是比较关键的用户如:root用户、有实例的oracle用户、在线的生产用户等。那么建议在确认是因为共享缓存的原因导致的问题后重启服务器。
4、你已经删除了一些占用量大的文件,或者在根盘下做du -h发现占用量远远的小于130G,df的结果仍然是100%的使用率。那么基本肯定你碰到了linux的一个bug,直接重启就能解决。(当然了也不一定是bug,我碰到过那种程序在写一个日志,但是删除日志后空间不释放的问题。这个是linux本身的机制引起的,只需要停止相关的程序空间就会释放的)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10375781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存