我有一个 30GB 磁盘空间的 Ubuntu 盒子,几乎被填满了:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 30G 28G 0 100% /
Run Code Online (Sandbox Code Playgroud)
但是当我检查所有根文件夹的大小时
sudo du -sh /foldername
Run Code Online (Sandbox Code Playgroud)
我总共只得到 17.2GB
lib/ 6.7G
usr/ 4.8G
home/ 2.0G
var/ 1.3G
boot/ 1.1G
swapfile 1.1G
root/ 125M
sbin/ 12M
bin/ 11M
etc/ 8M
run/ 420K
lost+found/ 16K
media/ 8.8K
dev/ 4K
lib64/ 4K
mnt/ 4K
srv/ 4K
opt/ 4K
tmp/ 4K
sys/ 0
proc/ 0
Run Code Online (Sandbox Code Playgroud)
这里有什么可疑的地方吗?大约 11 GB 的数据下落不明。丢失的 11G 在哪里?
根据服务器故障社区的建议,我检查了我的块大小:
stat --printf='%s' -f .
Run Code Online (Sandbox Code Playgroud)
这是“正常”的 4096
然后我检查了有多少已删除的文件仍然被进程打开:
lsof | grep -c DEL
Run Code Online (Sandbox Code Playgroud)
其中报告了 143 个文件,这可能占所有丢失的空间,但我认为不太可能
然后我重新启动了我的盒子,瞧!我所有的磁盘空间都回来了:
df -h
Filesystem Size Used Avail Use% Mounted on
udev 487M 4.0K 487M 1% /dev
tmpfs 100M 388K 100M 1% /run
/dev/vda1 30G 17G 12G 61% /
Run Code Online (Sandbox Code Playgroud)
重新启动后我重新获得了如此多的磁盘空间这一事实意味着卷的块大小不是主要的罪魁祸首。所以,仍然不能 100% 确定导致差异的原因,但很高兴我的空间回来了!