Rak*_*kar 8 linux debian disk-space filesystems
当我运行时,df它显示根设备已满。
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 9.4G 0 100% /
Run Code Online (Sandbox Code Playgroud)
我查看了inode使用情况,根设备有很多可用空间
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 640K 103K 538K 16% /
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该du命令时,它显示我只使用2G了9.9G.
ip-XXX-XXX-XXX-XXX:/$ du -xh --max-depth=1
14M ./etc
4.0K ./mnt
96K ./tmp
3.5M ./bin
0 ./sys
964K ./boot
4.0K ./srv
0 ./dev
55M ./lib
25M ./root
1.1G ./usr
4.0K ./opt
846M ./var
4.3M ./sbin
23M ./home
16K ./lost+found
0 ./proc
2.0G .
Run Code Online (Sandbox Code Playgroud)
它也让我发疯和有趣。这对我们来说是个大问题,因为根磁盘/已满并且我们站点中的某些功能出现故障。
请帮我解决(也理解)这个问题。
谢谢。
当文件在 *nix 中被删除时,只要进程打开它们,它们就会继续存在于磁盘上(并占用磁盘空间)。利用这一点来“保护”临时文件是相当常见的,方法是创建小尺寸的临时文件,删除它们,然后使用删除的文件来存储数据,而不必担心其他进程(轻松)访问它,因此例如,如果以这种方式处理临时数据库或多媒体编辑会话,则已删除文件中的空间量可能会变得相当大。另一种可能的情况是,如果系统已升级(多次)而没有重新启动或重新启动程序,则会导致所有旧的 .so 库被在该版本之前启动的程序保持打开状态。升级并仍在运行。
df看到这些文件使用的空间,因为它只查看设备上分配了多少空间,但du看不到它们,因为没有任何相应的目录条目。
像这样的“隐藏”已用空间只有在打开已删除文件的进程关闭它们时才能释放。您可以使用fuser命令找到这些进程并终止它们(或者,对于许多守护进程,发送信号告诉它们关闭并重新打开任何打开的文件)。