在我的服务器上,根分区为 73GB,但磁盘显示已满,尽管该设备上仅使用了大约 6GB:
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 997M 0 997M 0% /dev
tmpfs 202M 41M 162M 20% /run
/dev/mapper/p22server-root 73G 68G 655M 100% /
(我在服务器上使用LVM /dev/mapper/p22server-root -> ../dm-0
:)如果我检查
ncdu -x /
我发现总使用量只有5.9GB。
我的猜测是,一定有一些文件仍然打开,但在文件树中不可见。
我该如何调试这个?我想,重新启动会恢复丢失的空间,但现在不可能重新启动。
答案1
如果你的怀疑是真的,你可能会更容易相处拉索夫。
在输出中查找“(已删除)”或类似内容。
答案2
有两种可能:
1.删除的文件仍然被某些进程打开
您可以查看所有打开的文件lsof
。例如,这些是显示的类型lsof
以及它们在输出中出现的频率:
# lsof|cut -c50-54|sort|uniq -c
375 CHR
610 DIR
211 FIFO
32 IPv4
17 IPv6
40 link
419 node
152 nown
6008 REG
9 sock
598 unix
这仅显示文件描述符列 (FD):
# lsof|awk -v field="FD" 'NR==1 {c = index($0,field)} {print substr($0,c-1,length(field)+4)}'|sort|uniq -c|sort -n|tail
查找DEL
输出中具有该值的文件lsof
以获取提示。
2. 文件隐藏在挂载点后面
但更可能的是,这些文件只是由于安装点而“隐藏”,当大量文件存储在安装文件夹中时未使用该安装点,现在它们对ncdu
.
将根目录挂载到另一个位置并进行分析:
mkdir /temp-root
mount --bind / /temp-root
ncdu -x /temp_root