当我运行某些命令时,我收到“空间不足”消息。我在网上搜索了诊断问题的方法。
我跑了df
:
adam@nas:/$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdf1 30257960 28769436 0 100% /
udev 3982180 4 3982176 1% /dev
tmpfs 1609804 632 1609172 1% /run
none 5120 0 5120 0% /run/lock
none 4024504 0 4024504 0% /run/shm
overflow 1024 212 812 21% /tmp
tank 177356416 256 177356160 1% /mnt/tank
tank/CrashplanBackups 326836352 149480192 177356160 46% /mnt/tank/CrashplanBackups
tank/Downloads 178973440 1617280 177356160 1% /mnt/tank/Downloads
tank/Media 724196224 546840064 177356160 76% /mnt/tank/Media
tank/Photography 258230528 80874368 177356160 32% /mnt/tank/Photography
tank/XBMC 177646464 290304 177356160 1% /mnt/tank/XBMC
/dev/sdf1
已满。这是一张 32GB 的 SD 卡
然后我跑了du
:
adam@nas:/$ sudo du --max-depth 1 -x -h
0 ./run
8.4M ./sbin
1.9G ./usr
0 ./tmp
0 ./dev
42M ./etc
0 ./sys
4.0K ./lib64
16K ./media
171M ./boot
2.5M ./home
550M ./var
4.0K ./selinux
4.0K ./srv
16K ./lost+found
8.7M ./bin
1.2G ./lib
18K ./mnt
60K ./root
0 ./proc
4.0K ./opt
3.8G .
所以有很大的不同。我读到过索引节点所以我跑了:
adam@nas:/$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdf1 1913840 251600 1662240 14% /
udev 995545 562 994983 1% /dev
tmpfs 1006126 495 1005631 1% /run
none 1006126 4 1006122 1% /run/lock
none 1006126 1 1006125 1% /run/shm
overflow 1006126 7 1006119 1% /tmp
tank 354712597 11 354712586 1% /mnt/tank
tank/CrashplanBackups 354712816 230 354712586 1% /mnt/tank/CrashplanBackups
tank/Downloads 354712645 59 354712586 1% /mnt/tank/Downloads
tank/Media 354714253 1667 354712586 1% /mnt/tank/Media
tank/Photography 354804713 92127 354712586 1% /mnt/tank/Photography
tank/XBMC 354717700 5114 354712586 1% /mnt/tank/XBMC
我还阅读了有关文件描述符和已删除文件的内容。
跑步时
lsof | grep "deleted"
什么都没有返回。重新启动服务器不会释放任何空间。我怎样才能恢复我的磁盘空间?这是在 Ubuntu 12.04 上,是一个 NAS。
- 它总共有 6 个驱动器。
- 1x 32GB SD 用于 Linux 安装
- 5x HD 使用 ZFS 并安装在 /mnt/tank 中
答案1
您可能在 中有太多文件/tmp
。由于启动时磁盘已满,您可以看到 已tmpfs
安装在/tmp
因此你可以写入某物到该位置。由于这个位置挡住了路,因此du
命令无法查看那里的内容。您可以通过绑定挂载到某个位置来解决这个问题,这样您就可以查看它,而不会受到任何其他挂载点的阻碍:tmpfs
/
sudo mount --bind / /mnt/foo
du -xh --max-depth=1 /mnt/foo