运行 Ubuntu 18.04 服务器作为存储服务器
因此,当我运行时,df -h
我看到我的根磁盘已 100% 满,剩余 231MB,但是我一个月前刚刚安装了全新安装,除了 smb 之外没有其他安装。
~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.8G 0 3.8G 0% /dev
tmpfs 769M 6.8M 762M 1% /run
/dev/sda2 219G 208G 231M 100% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/loop0 90M 90M 0 100% /snap/core/8268
/dev/loop1 90M 90M 0 100% /snap/core/8213
/dev/sda1 511M 6.1M 505M 2% /boot/efi
/dev/sdd1 2.7T 2.3T 346G 87% /media/data1
所以我然后运行sudo du -ch --exclude=./media
它输出7.3G
有谁能够帮助我?我以前从未见过这个。
:/$ sudo du -ch --exclude=./media
7.3G .
7.3G total
sudo ncdu --exclude /media
给出相同的结果。我似乎找不到该空间被用在哪里。
sudo du -hs --exclude=./media
给出一些文件不活动并且使用相同的 7.3G。
答案1
您可能有一些已删除的文件,这些文件被某些进程保持打开状态。
一种可能性是重新启动(所有进程将终止并关闭其文件,释放空间)。
否则你可以这样做(几乎肯定有更好的方法,但我按照你的要求在 Ubuntu 18.04-LTS 上进行了测试)
find /proc -type l -exec ls -la \{\} \; 2>&1 | grep "/proc/[0-9]*/fd/.*deleted"
这将显示类似以下内容:
lrwx------ 1 root root 64 Nov 18 08:16 /proc/1708/fd/139 -> /run/dovecot/login-master-notifycd7e64fd0dc27812 (deleted)
lrwx------ 1 root root 64 Nov 18 08:16 /proc/1708/fd/172 -> /run/dovecot/login-master-notify5d694b1832885980 (deleted)
lrwx------ 1 root root 64 Nov 18 08:16 /proc/1708/fd/177 -> /run/dovecot/login-master-notify03874675ec133d66 (deleted)
lrwx------ 1 root root 64 Nov 17 20:09 /proc/2160/fd/9 -> /tmp/.ZendSem.3acXWO (deleted)
lrwx------ 1 root root 64 Dec 16 06:39 /proc/10669/fd/9 -> /tmp/.ZendSem.3acXWO (deleted)
lrwx------ 1 root root 64 Dec 16 06:39 /proc/10670/fd/9 -> /tmp/.ZendSem.3acXWO (deleted)
lrwx------ 1 root root 64 Dec 16 06:39 /proc/10671/fd/9 -> /tmp/.ZendSem.3acXWO (deleted)
lrwx------ 1 root root 64 Dec 16 06:39 /proc/10672/fd/9 -> /tmp/.ZendSem.3acXWO (deleted)
lrwx------ 1 root root 64 Dec 17 00:01 /proc/10673/fd/9 -> /tmp/.ZendSem.3acXWO (deleted)
lrwx------ 1 mysql mysql 64 Dec 17 00:01 /proc/24928/fd/5 -> /tmp/ibZsXZWE (deleted)
lrwx------ 1 mysql mysql 64 Dec 17 00:01 /proc/24928/fd/6 -> /tmp/ibY4kIrj (deleted)
lrwx------ 1 mysql mysql 64 Dec 17 00:01 /proc/24928/fd/7 -> /tmp/ibhdYqWX (deleted)
lrwx------ 1 mysql mysql 64 Dec 17 00:01 /proc/24928/fd/8 -> /tmp/ib1PJXXg (deleted)
lrwx------ 1 mysql mysql 64 Dec 17 00:01 /proc/24928/fd/12 -> /tmp/ibuELYLV (deleted)
这告诉我 MySQL 和 dovecot 正在吃“隐藏空间”。所以在这个例子中我可以尝试先重新启动Dovecot,然后重新启动MySQL等,看看什么时候(...服务停止需要非常长的时间,并伴有大量磁盘抖动,之后...) 空间被释放
更新
我在你的问题中忽略了这一点:“除了 smb 之外没有其他安装”。尝试重新启动那马上。
您可能启用了 VFS 日志记录,或者处于高调试级别。
这实际上发生在我的 $PFY 身上一次,我们打开调试来检查 Windows 10 怪癖(顺便说一句,早就被 SMB4 解决了),日志已经超过了 5 GB,他只是删除了日志。
因此,Samba 不断写入现在不可见的日志文件,该文件一直在默默地增长。当我们指责用户用垃圾填满空间时,我们意识到当大约 50 Gb 消失时发生了什么(他们也在这么做)。
更新1.5
让空间“消失”的一种方法是这样的。
假设您有一个文件服务器并且数据位于/var/media
.有大约 250 GB 的文件。然后您决定添加另一个磁盘或通过 RAID 同步加扩展或其他方式替换为更大的磁盘。
因此,在第 2 阶段,您暂时拥有一个空的 /mnt/otherdisk,其中包含 8 TB 的可用空间,您会很高兴复制新磁盘/分区上的 250 GB、权限、ACL 等。
完成后,您显然希望重用旧的配置、脚本、备份等等,因此您安装了新的分区老的目录 - 但忘记先释放它。现在/var/media
有 250 GB 的新复制文件和 7.75 GB 的可用空间 - 但原始的 250 GB 仍然低于这一切,并且它们的空间尚未释放。
要释放空间,您需要
umount /var/media && (
mv /var/media /var/old-media
mkdir /var/media # create a new "/var/media"
chown --reference /var/old-media /var/media
chmod --reference /var/old-media /var/media
mount /var/media
)
现在,如果/var/old-media
确实包含数据,您可以将其内容(它现在可能已过时,但谁知道)与/var/media
.
更新2
好吧,重启没有解决任何问题,所以文件必须在那里。可能在lost+found
但文件系统现在是干净的,所以他们有在那里(但只是检查每一步 - 你也可以发布安装选项吗?)
尝试:
du -kx -d2 / | sort -n
获取磁盘内容(好吧,也media
)。这将为您提供所有根子树的大小。如果您看到某个子树比应有的大,当然除外/media
,您可以向下钻取。我有一个大的/home/lserni
例子:
du -kx -d1 /home/lserni | sort -n
如果空间是仍然莫名其妙地被占用,然后以单一模式重新启动并运行fsck
.
我会不是很容易相信你的文件系统如此混乱,以至于它仅有的显示在占用的空间中,但fsck
无法修复它!