linux下磁盘占用达到100%了,怎样查找是哪些大文件耗尽了磁盘?

linux下磁盘占用达到100%了,怎样查找是哪些大文件耗尽了磁盘?,第1张

其实并不是你的磁盘的空间被占用,而是你的磁盘的i节点耗尽了。使用:df

-i

/dev/sdbx(x为逻辑分区)命令查看i节点情况。解决办法:删除占用i节点的空文件,命令:rm

-rf

`/

-empty

-a

-type

f`

Linux系统上可以同时有多个swap,根据是用swapon -s命令可以看到系统上所有的swap,而用free命令看到的是swap总的大小。所以swap不够用时可以再建立一个swap,一般是用建立swap文件的方式添加一个swap空间。下面以1G大小的文件为例介绍如何用文件建立内存交换空间:

1. 使用dd命令在某个目录(实际使用时换成其他目录,/tmp目录的数据会在重启后丢失)下新建一个1G的文件:

dd if=/dev/zero of=/tmp/swap bs=1M count=1024

解释:1M是单位,1024是数目,合计1024M就是总大小1G

2. 格式化这个文件为swap格式:(用mkswap命令)

mkswap /tmp/swap

3. 启动swap,用swapon命令(就是将新建的swap添加到系统):

swapon /tmp/swap

4. 查看效果(用swapon的-s参数):

swapon -s

可以看到所有的swap分区,如果成功了,/tmp/swap必然在里面。然后再用free命令查看,就可以看到swap空间增加了。

在Linux中每次用free查看的时候,发现free的空间都只有500M左右。同样的环境32G只剩下这点,64G的也只剩下这么一点。后来发现都被Cache占用了,因为服务器上运行了Kafka环境,每周的日志文件都有一二百G的,估计就是他占用了page cache吧。

Free中的buffer和cache:(它们都是占用内存):

buffer : 作为buffer cache的内存,是块设备的读写缓冲区

cache: 作为page cache的内存, 文件系统的cache

如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。

Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。也可以用动释放,释放的时候需要对cache中的数据跟对应文件中的数据一致。

释放的方式有下以几种

一般情况下释放pagecache就可以了。这样可以写一个sh脚本来在服务器空闲的时候定时执行

使用crontab来设置定时任务,如每天4点开始清理

本文参考: https://www.jianshu.com/p/9b9f4917fb2e


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

原文地址: http://outofmemory.cn/yw/7232088.html

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

发表评论

登录后才能评论

评论列表(0条)

保存