当我在系统上对一个空分区运行‘df -ha’时,它报告已使用了 33 MB:
/dev/sdb2 16G 33M 16G 1% /mypartition
但分区上没有文件:
ls -lha /mypartition/
total 0
drwx------ 2 root root 6 Feb 16 21:09 .
drwxr-xr-x 5 root root 57 Feb 17 06:26 ..
什么原因导致“df”报告一些空间已被使用?
答案1
这很正常。当我们创建一个文件系统(比如 ext4)时,它会在创建任何文件之前产生大量开销。这是预留空间其目的是降低碎片化的可能性,并为 fsck 留出一些空间,主要用于根用户确保使用该分区上的文件的服务不会被某些当地的用户填满所有空间。不同的文件系统保留不同的空间。
形式man tune2fs
-m 保留块百分比
Set the percentage of the filesystem which may only be allocated by privileged processes. Reserving some number of filesystem blocks for use by privileged processes is done to avoid filesys‐ tem fragmentation, and to allow system daemons, such as sys‐ logd(8), to continue to function correctly after non-privileged processes are prevented from writing to the filesystem. Nor‐ mally, the default percentage of reserved blocks is 5%.
因此,当您创建文件系统时,默认保留 5% 的块。您可以在创建文件系统时根据需要调整此保留块mkfs.ext4 -m <X> /dev/sdaX
。您也可以在创建文件系统后使用tune2fs -m <X> </dev/sdaX>
命令调整此值。
例如,如果您想删除保留块:
tune2fs -m 0 /dev/sdaX
我强烈建议不要使用 -m 0。保留空间的存在是有原因的。即使没有保留块(-m 0),也总会有一部分空间用于文件系统内部管理。
此外,开销来自 inode 表,它完全取决于您在文件系统中分配了多少个 inode。inode 的默认大小为 256 字节。
而且没有办法在 CLI 上确认这一点。您可以做的是在不同的 Linux 发行版上创建具有不同大小和保留空间的不同文件系统,然后比较结果。
确认保留空间仅供 root 用户使用