为什么 HFS+ 和 ext4 之间存在尺寸差异?

为什么 HFS+ 和 ext4 之间存在尺寸差异?

我最近在我的 Ubuntu 服务器上设置了一个 NFS 服务器,目前正在将文件从 HFS+ HDD 迁移到 ext4。但是我遇到了一个问题,在传输完成之前,接收磁盘(ext4 格式)的空间不足。两个驱动器都是 2 TB 的外部 USB 驱动器,接收驱动器是新格式化的,因此上面不应该有任何东西。

我知道 ext4 的默认块大小是 4K,正如预期的那样,比较

du /media/[Receiving Drive]/*
du --apparent-size /media/[Receiving Drive]/*

显示大多数(如果不是全部)文件都在磁盘上占用额外的 4K。HFS+ 驱动器(不幸的是,我已经将其格式化为 ext4,因此无法获取任何信息)有 12 GB 以上的可用空间,但是根据 ext4 磁盘的当前使用情况以及我已经传输的文件数量,我缺少了超过 200 GB 的空间!

我完全不知道这种差异从何而来,因为最多每个文件增加 4K 也会远远少于 1 GB,更不用说 200 了。

两个驱动器现在都格式化为具有 GUID 分区表的 ext4,并且磁盘实用程序显示它们之间的容量差异约为 700MB(另一个谜团)。

可以这么说,我陷入困境了。有什么建议吗?

答案1

使用默认设置,ext4 每 16,386 字节分配一个 inode,一个 inode 为 256 字节,因此在 2 TB 的磁盘上,inode 表占用约 32 GB。您可以在使用 选项格式化时减少此设置,-T largefilemkfs.ext4如果您有大量小文件,您可能会用尽 inode 并且无法创建更多 inode,即使还有可用空间。除非您的大多数文件小于半兆左右,否则这应该不是问题。

另一件事是,默认情况下,5% 的空间是保留的,普通用户无法占用。在您的 2 TB 驱动器上,这相当于 100 GB。您可以使用sudo tune2fs /dev/sdXX -m 0(其中 /dev/sdXX 是所讨论的驱动器/分区)禁用此功能,但无论如何,将驱动器填充超过 95% 通常不是一个好主意,因为它往往会导致碎片化。

相关内容