我有许多在 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 根据需要创建它们,我想这也可能节省一些空间。