Linux提示空间已满,找不到大文件

Posted Parker@1989

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux提示空间已满,找不到大文件相关的知识,希望对你有一定的参考价值。

当我们发现磁盘快满了,然后删除某些服务的日志文件,删除后发现磁盘空间仍然被占用,但我们使用“du –sh /*” 命令,发现目录下没有大文件,这时我们应该考虑,删除日志文件时,只是将所有的硬链接给删除了,但还有服务或程序占用,所以实际数据我们无法查看,但它仍然占用磁盘空间。这时可以重启服务,将占用日志文件的服务或进程重启,就可以释放占用的磁盘空间。

模拟案例:

1. 首先创建一个小空间的模拟磁盘分区:

[root@test ~]# dd if=/dev/zero of=/dev/test bs=1k count=512
记录了512+0 的读入
记录了512+0 的写出
524288字节(524 kB)已复制,0.00172664 秒,304 MB/秒
[root@test ~]# ll /dev/oldboy
-rw-r--r-- 1 root root 524288 1018 03:37 /dev/oldboy

2. 格式化磁盘

[root@test ~]# mkfs.ext4 /dev/test
mke2fs 1.41.12 (17-May-2010)
/dev/test is not a block special device.
无论如何也要继续? (y,n) y
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
64 inodes, 512 blocks
25 blocks (4.88%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=524288
1 block group
8192 blocks per group, 8192 fragments per group
64 inodes per group
 
正在写入inode表: 完成                            
 
文件系统小得无法记录日志
Writing superblocks and filesystem accounting information: 完成
 
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

3. 安装一个httpd服务

[root@test ~]# yum install httpd –y
# 将新建的虚拟分区挂载到httpd存放日志的目录下/etc/httpd/logs/
[root@test ~]# mount -o loop /dev/oldboy /etc/httpd/logs/
[root@test ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.5G  7.0G  18% /
tmpfs           244M     0  244M   0% /dev/shm
/dev/sda1       190M   36M  145M  20% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt
/dev/test     499K   15K  459K   4% /var/log/httpd
# 打开httpd服务的记录日志功能,将513行注释去掉即可。
[root@test ~]# vi /etc/httpd/conf/httpd.conf
*****************************************
513 #CustomLog logs/access_log common
# 开启httpd服务
[root@test ~]# /etc/init.d/httpd start
正在启动 httpd:httpd: apr_sockaddr_info_get() failed for oldboy
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                        [确定]

在浏览器上输入虚拟机IP地址,可以访问模拟网页服务,跟踪httpd记录日志文件。

[root@test ~]# tail -f /etc/httpd/logs/access_log
# 刷新页面或者直接在文件里写入内容,使存放日志的分区使用量到100%,可以循环写入内容,使设备没有空间。
[root@test ~]# for n in `seq 10000`;do echo "liangkai">>/etc/httpd/logs/access_log ;done
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间
-bash: echo: write error: 设备上没有空间

4. 查看空间已满,删除日志文件后,发现磁盘空间仍是满的

[root@test ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.5G  7.0G  18% /
tmpfs           244M     0  244M   0% /dev/shm
/dev/sda1       190M   36M  145M  20% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt
/dev/test     499K  489K     0 100% /var/log/httpd
[root@test ~]# \\rm -f /etc/httpd/logs/access_log
[root@test ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.5G  7.0G  18% /
tmpfs           244M     0  244M   0% /dev/shm
/dev/sda1       190M   36M  145M  20% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt
/dev/test     499K  489K     0 100% /var/log/httpd

5. 使用lsof 命令查看进程正在使用的已删除文件,发现有很多

[root@test ~]# lsof |grep deleted
httpd     2008   root    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2008   root    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2013 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2013 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2014 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2014 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2015 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2015 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2016 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2016 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2017 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2017 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2018 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2018 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2019 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2019 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2020 apache    7w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)
httpd     2020 apache    8w      REG                7,0   420862         13 /var/log/httpd/access_log (deleted)

6. 重启httpd服务,磁盘空间恢复正常。

[root@test ~]# /etc/init.d/httpd  restart
停止 httpd:                                              [确定]
正在启动 httpd:httpd: apr_sockaddr_info_get() failed for oldboy
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                          [确定]
[root@test ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.5G  7.0G  18% /
tmpfs           244M     0  244M   0% /dev/shm
/dev/sda1       190M   36M  145M  20% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt
/dev/test     499K   78K  396K  17% /var/log/httpd

以上是关于Linux提示空间已满,找不到大文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux提示空间已满,找不到大文件

Linux提示空间已满,找不到大文件

linux磁盘空间被占满,但是找不到大文件

linux下磁盘占用达到100%了,找不到哪些大文件耗尽了磁盘。

linux中MySQL连接找不到mysql.sock文件

02:linux 磁盘满了,却找不到大文件问题处理 lsof命令