默认情况下,Linux 会为 root 用户保留一部分文件系统,至少在 ext4 上是这样(以防止普通用户完全填满驱动器并导致系统崩溃,并减少碎片)。但是,df
只显示普通用户可见的可用空间(即使以 root 身份运行)。如何显示 root 可以访问的“实际”可用空间?
答案1
我不确定是否有内置工具,但假设你将保留设置为默认的 5%,那么这将告诉您:
df / | grep dev | cut -f 3,6 -d\ | awk '{print ($1*.05)+$2}'
df
根目录,grep
对于其中包含 dev 的行(删除标题)、cut
大小和可用字段,然后使用脚本awk
计算添加到可用空间中的磁盘大小的 5%。
您可以提取实际预订信息tune2fs -l <device>
,并将其与上述内容结合在脚本中。
答案2
使用命令tune2fs(在发现/sbin/tune2fs),您可以轻松确定预留空间: (和更多!)
tune2fs -l /dev/sda1
我将提供我的系统信息以供参考,我将删除对这个问题不重要的多余的行:
标题...和卷名,我标签我所有的驱动器,以便在需要时轻松识别它们。
tune2fs 1.42.4 (12-Jun-2012)
Filesystem volume name: xenon
Last mounted on: /
...
真的希望系统运行时这个是“干净的”。说实话!
Filesystem state: clean
数据存储容量信息的开始位置如下:
在这里你可以看到我总共有 121,179,648 个块……块大小为 4K(4096),乘以一个大数字(462 GB 左右)。(块大小如下所示)
Block count: 121179648
至于预留块……通过查看上面的数字和下面的数字……您应该能够相对快速地找出我预留了 1%。在本例中(4.62 GB 左右)
Reserved block count: 1211796
目前有多少可用空间?就在这里!
Free blocks: 104090586
...
还有最重要的块大小。对于乘法很有用。
Block size: 4096
...
这些行说明了这些块是为谁保留的……在本例中是用户 0,即 root
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
...
这里还有更多信息,但这应该能让您快速确定有多少可用,以及为根保留了多少。简单的数学。
希望这能有所帮助。记住...手册页是你的朋友。
答案3
这将显示与“/path”相关的分区中的可用空间(以字节为单位)
printf '%s' $(($(stat -f --format='%f*%S' /path)))
您无需成为超级用户即可运行它。
顺便说一句,我不太明白
%s 块大小(用于更快的传输)
%S 基本块大小(用于块计数)
在使用中stat
。
答案4
截至 2021/Ubuntu 20.04,该命令sudo tune2fs -l /dev/sd...
至少对我来说不起作用,因为它说我所有的外部 ext4 驱动器的保留空间为 0,而实际上,两个驱动器的保留空间均为 50GB。
Nautilus 的驱动器属性弹出窗口为我提供了两个驱动器的保留空间的正确大小,但是显示的方式非常不清楚/不明显(作为使用情况披萨图中的白色部分以及既未空闲也未使用的空间,隐含在数字中)。
也就是说,它tune2fs
仍然适用于其他事情,因为我可以通过它将两个驱动器上的相同保留空间清零sudo tune2fs -m 0 /dev/sd...
。