了解为什么我在安装新硬盘时会损失这么多空间

Mat*_*ogh 16 mount hard-drive

我刚刚为我的媒体服务器购买了一个 4TB 的 Western Digital Red 硬盘。我想了解为什么我通过将其格式化为 ext4 然后安装它而最终失去了如此多的空间。我知道驱动器自己的文件会丢失一些,但我丢失的东西似乎有点多。

我采取的步骤:

使用格式化驱动器 sudo mkfs.ext4 /dev/sde

编辑 FS 选项卡,使其在启动时自动挂载

UUID=3276bc13-20a5-4225-ad33-d8fecdd5216c /wd_red_1 ext4 defaults 0 0
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时,df -h这是我的输出

/dev/sde        3.6T   89M  3.4T   1% /wd_red_1
Run Code Online (Sandbox Code Playgroud)

我总共损失了 700GB 的空间,这看起来是不是有点多?

相比之下,我有一个希捷 2TB 硬盘,我经历了同样的过程,它只占用了 200GB(所以我有 1.8TB 可用)。我做错了什么吗?

服务器正在运行 18.04.3 LTS

Ric*_*ich 64

光盘制造商以十进制值列出大小,因此您的 4TB HD 实际上是 4,000,000,000,000 字节。但是df -h以二进制基数列出(即 4KB 是 4096 Bytes,4MB 是 4,194,304 Bytes,4GB 是 4,294,967,296 Bytes,4TB 是 4,398,046,511,104 Bytes。基数)。这几乎就是您看到的由 列出的值df -h

你没有损失任何容量,这只是制造商玩的数字游戏。

要检查这一点,请尝试df -H。使用大写的 H,它以十进制值列出它,所以它会说“4T”或非常接近该数字而不是“3.6T”。制造商甚至更进一步,他们列出的“4TB”也是近似值。实际可能略高于或略低于此值。

  • 如果 df 输出 [https://en.wikipedia.org/wiki/Binary_prefix](二进制前缀)以避免混淆,这将很有用。kibi Ki, Mi mebi, Gi gibi, Ti tebi。 (19认同)
  • @jamesqf 与他们谈论的“T”的永久混乱相比,我更喜欢有人在学习“Ti”的含义时感到困惑!特别是当它给 SI 单位增加歧义时。 (19认同)
  • ...这就是引入 gibi- *et 的论据。al.* 前缀,@marcelm,但事实是,直到最近,该论点才受到微不足道的关注。使用“kilo”表示 2^10,“mega”表示 2^20,“giga”表示 2^30 在计算术语中已经司空见惯了几十年。那*是*人类惯例。你可以认为这是方言的问题。如果存储制造商没有决定尝试操纵错配以获取市场优势,这可能永远不会成为问题,但他们做到了,现在我们有了愚蠢的“gibi-”等。 (13认同)
  • @Matt:我认为这实际上会引起更多混乱,因为很多人不知道这些是什么意思。我当然不会。 (9认同)
  • _“你没有损失任何容量,这只是制造商玩的数字游戏。”_ - 我认为这是计算机玩的数字游戏。Giga 的意思是 10⁹,而不是 2³⁰。这适用于处理器中的千兆焦耳、千兆瓦和千兆赫。千兆以太网也是 10⁹ 位/秒。为什么存储应该有所不同?计算机应该符合人类惯例,而不是相反。另请注意,桌面环境倾向于(正确)为此显示基数为 10 的单位。低级工具可以免除,但我同意@Matt 的观点,他们最好使用正确的单位。 (8认同)
  • _“但事实是,直到最近,该论点才受到微不足道的关注。”_ - 硬盘驱动器 [几乎总是](https://en.wikipedia.org/wiki/Gigabyte#Consumer_confusion) 以 1000 为基数进行测量单位。[本文](https://www.ixsystems.com/community/threads/the-great-capacity-non-conspiracy-tib-vs-tb.25265/) 同意至少从 1980 年开始就是这种情况。注意此外,二进制前缀(GiB 等)已经 [1995 年提出](https://en.wikipedia.org/wiki/Binary_prefix#gibi),25 年前。所以这绝不是最近的现象。 (4认同)
  • @JohnBollinger 你的“最近”——自从它开始受到关注以来已经过去了 10 年。 (2认同)
  • @marcelm,“kilo”*et al* 的传统用法可以追溯到 80 年代之前很久。尽管存储制造商的操纵实践并非新鲜事物,但正如我所说:直到最近,使用二进制前缀的争论*受到的关注微不足道*,正如今天许多 IT 专业人员仍然不熟悉这些前缀的事实所证明的那样。 (2认同)

van*_*ium 15

当然,Rich 提供的公认答案是观察到的制造商规格与df显示的规格之间存在差异的主要原因。但是,有一些因素会导致您实际拥有的空间少于磁盘容量所显示的空间。

部分是由于ext4 文件系统开销。这些系统非常可靠和稳健。文件系统的结构需要相当大的空间。您可以在此处阅读有关技术细节的信息(感谢用户 Matt)。

另一个原因是占用的“保留空间”,它是总驱动器容量的固定百分比。通常,对于大型驱动器,尤其是数据驱动器,该固定百分比非常高。Linux 系统通常为 root 用户和系统服务保留 5% 的新分区。这里的想法是,即使磁盘空间不足,root 用户仍应能够登录并且系统服务仍应运行。如果根分区上没有剩余空间,则不会发生这种情况。

因此,您将通过减少此保留空间来获得空间。使用tune2fs,您可以调整该百分比:

sudo tune2fs -m 1 /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

会将分区 /dev/sdb1 上的保留空间减少到 1%(在此处替换您自己的分区)。对于数据驱动器,您可能可以将其设置为零。但是,为了防止产生过多的数据碎片,ext4 卷永远不应该被完全填满,因此除了保持在最大存储量以下之外,您还可以留出一些保留空间,这也有助于避免碎片化所需的剩余可用空间.

  • 这与为什么 3.6T 虽然只使用了 89M 却变成只有 3.2T 可用更相关 (12认同)
  • 这个答案也是一个很好的答案,但这不是所见差异的主要原因。 (2认同)
  • 这里描述了 ext4 布局:https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Layout 大部分开销空间位于大型驱动器的 inode 表中(我认为默认值占 1.6%) (2认同)