有没有办法让 Linux 中的扩展文件系统使用更少的空间?

有没有办法让 Linux 中的扩展文件系统使用更少的空间?

我有许多在 Linux 系统上使用的外部和内部硬盘。我只有 Linux 系统,因此使用 Linux 文件系统才有意义,对吧?但是我目前到处都在使用 NTFS,因为它可以让硬盘获得最大的可用空间。

不过,我现在想切换到 Linux 文件系统,主要是因为权限和兼容性(例如,我无法在 Linux 下调整 LUKS 加密的 NTFS 分区的大小,一直告诉我在 Windows 下使用 chkdsk)。

但是,当我格式化这些硬盘时,我尝试了许多不同的文件系统,每个 Linux 文件系统,甚至据我所知没有日志功能的 ext2,都占用了大量空间。我不记得确切的值,但 NTFS 在 2TB 硬盘上占用了超过 100GB 的空间,这可不少。

所以我的问题是:有没有办法让 ext 文件系统占用更少的空间?或者有没有其他文件系统(我试过 ext2、ext3、ext4、NTFS 和 vfat - 它们都没有 NTFS 提供的可用空间那么大)可以完美支持 Linux 并且可用空间很大?

我很想知道文件系统(尤其是没有日志功能的 ext2)为什么会比 NTFS 占用那么多空间,我也不知道该去哪里问。如果可能的话,我更倾向于使用不带日志功能的 ext4 和其他占用这么多空间的东西。

答案1

默认情况下,ext2 及其后续版本会保留 5% 的文件系统空间供 root 用户使用。这样可以减少碎片,并减少管理员或任何 root 拥有的守护进程没有空间可用的可能性。

这些保留块可防止未以 root 身份运行的程序占用您的磁盘空间。这些考虑是否值得损失容量取决于文件系统的用途。

5% 的比率是在 20 世纪 80 年代设定的,当时磁盘要小得多,但一直保持原样。如今 1% 可能足以保证系统稳定。

-m可以使用以下命令选项更改预订tune2fs

tune2fs -m 0 /dev/sda1

这会将保留块百分比设置为 0%(0 个块)。

要获取当前值(以及其他值),请使用以下命令:

tune2fs -l <device> 

答案2

另一个尚未讨论的点是您在文件系统上保留的 inode 数量。

默认情况下,mkfs 会创建一定数量的 inode,这样就可以将大量非常小的文件放入文件系统中。如果您知道文件会非常大,并且只会将少量文件放入 FS,则可以减少 inode 数量。

注意!此数字(即空间与 inode 数量之间的比率)只能在创建文件系统时设置。即使在扩展 FS 时,该比率仍保持不变。

答案3

如果你打算存储在其中的数据是可压缩的,那么使用compress=zstd(或compress-force=zstd)挂载的 btrfs 可能会比 ext* 使用少得多的磁盘空间

  • 这将使 btrfs 在将数据写入磁盘之前透明地压缩数据,并在读取数据时透明地解压缩数据。此外,ext4 在创建文件系统时预先分配所有 inode,btrfs 根据需要创建它们,我想这也可能节省一些空间。

相关内容