Linux df

您所在的位置:网站首页 googleplay空间提示满了 Linux df

Linux df

2023-11-03 08:03| 来源: 网络整理| 查看: 265

问题现象

工作中遇到一个问题,在 TX2 系统上,告警提示磁盘空间不够,如图所示

wohu@wohu:/$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 28G 28G 0 100% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 220K 7.7G 1% /dev/shm tmpfs 7.7G 774M 7.0G 10% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 786M 16K 786M 1% /run/user/106 tmpfs 786M 0 786M 0% /run/user/1002 tmpfs 786M 0 786M 0% /run/user/1001 /dev/sda1 1.9T 1.4T 518G 73% /videos 问题分析 首先使用 sudo du / -h --max-depth=1 命令查看各个目录的占用空间,试图找到占用较多空间的目录 wohu@wohu:/$ sudo du / -h --max-depth=1 [sudo] password for icsc-rudiadmin09: 8.0K /media 15M /bin du: cannot access '/run/user/106/gvfs': Permission denied 774M /run 4.0K /snap 16K /lost+found 4.0K /srv du: cannot access '/proc/19638': No such file or directory du: cannot access '/proc/19639/task/19639/fd/4': No such file or directory du: cannot access '/proc/19639/task/19639/fdinfo/4': No such file or directory du: cannot access '/proc/19639/fd/3': No such file or directory du: cannot access '/proc/19639/fdinfo/3': No such file or directory 0 /proc 4.0K /mnt 13M /etc 4.8G /usr 34M /boot 12M /sbin 1.5G /opt 1.7G /var 1.4T /videos 255M /lib 0 /sys 188K /dev 5.5M /root 1.8M /tmp 1.5G /home 1.4T /

但是从结果显示来看并没有占用大空间的磁盘,于是乎继续分析。

查看 inode 的使用率,怀疑 inode 不够导致此问题 wohu@wohu:/tmp$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/root 1835008 201065 1633943 11% / devtmpfs 1994185 737 1993448 1% /dev tmpfs 2010884 6 2010878 1% /dev/shm tmpfs 2010884 1969 2008915 1% /run tmpfs 2010884 6 2010878 1% /run/lock tmpfs 2010884 16 2010868 1% /sys/fs/cgroup tmpfs 2010884 14 2010870 1% /run/user/106 tmpfs 2010884 4 2010880 1% /run/user/1002 tmpfs 2010884 4 2010880 1% /run/user/1001 /dev/sda1 524437048 44385 524392663 1% /videos

通过 df -i 命令查看后发现 inode 使用率也正常的,只能进一步分析。

使用 lsof 检查,怀疑是不是有可能文件已被删除,但是进程还存活的场景 wohu@wohu:/tmp$ sudo lsof |grep delete lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/106/gvfs Output information may be incomplete. apache2 337 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 338 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 339 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 340 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 341 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 32749 root 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 32752 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 32753 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 32754 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 32755 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted) apache2 32756 www-data 10u REG 179,1 0 393922 /tmp/.ZendSem.HuhGBk (deleted)

Linux 里的文件被删除后,空间没有被释放是因为在 Linux 系统中,通过 rm 或者文件管理器删除文件将会从文件系统的目录结构上解除链接 (unlink) 。然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。装态为 deleted 为标记被删除,其实该文件并没有从磁盘中删除,类似windows下的回收站状态。

即使将如上所示的进程全部杀掉,发现空间占用仍是 100%,此时头大呀。。

突然回想起,是不是由于挂载盘导致的,因为 TX2 空间本来就小,所以挂载了个移动硬盘。而且由于中间挂载盘丢失我又重新挂载的场景,于是继续 Google,终于发现问题原因。

如果mount目录下原来是有文件存在的,那么该目录被 mount 之后这些文件就会被隐藏,不属于该文件系统,使用du命令是看不到的。 卸载挂载盘 wohu@wohu:/$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 28G 28G 0 100% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 220K 7.7G 1% /dev/shm tmpfs 7.7G 774M 7.0G 10% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup tmpfs 786M 16K 786M 1% /run/user/106 tmpfs 786M 0 786M 0% /run/user/1002 tmpfs 786M 0 786M 0% /run/user/1001 /dev/sda1 1.9T 1.4T 518G 73% /videos wohu@wohu:/$ sudo unmount videos

查看卸载之后挂载盘大小

果然发现 videos 目录下有较多的视频占用了磁盘空间。

wohu@wohu:/videos$ cd ../ wohu@wohu:/$ du -h videos ... ... ... 18G videos/backup 18G videos 将 videos 目录下的文件删除或拷贝到其他目录,并重新挂载

由此问题得到解决。

问题总结

在挂载目录时,要确认挂载的目录是否有文件,如果有文件那么挂载之后这些文件就会隐藏,此时使用 du 命令是看不到这些文件的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3