硬盘或固态硬盘需要留出多少空间?

在非正式(即新闻性)技术媒体以及在线技术博客和讨论论坛上,人们经常会遇到这样的建议:在硬盘驱动器或固态驱动器上留出一定的可用空间。他们给出的理由五花八门,有时甚至毫无理由。因此,这些说法虽然在实践中可能是合理的,但却带有神话色彩。例如

  • 一旦磁盘容量达到 80%,就应将其视为,并应立即删除或升级。如果磁盘达到 90%满,你就应该认为自己的裤子着火了,并立即采取适当的补救措施。(来源.

  • 为了保持垃圾回收的最高效率,传统的建议是保持 20% 到 30% 的硬盘为空(来源.

*>有人告诉我,为了提高性能,我应该在硬盘上保留 20% 左右的空闲空间,当硬盘接近满时,速度就会减慢。(来源.

  • 你应该为交换文件和临时文件留出空间。我目前留出了 33% 的可用空间,并发誓不低于 10GB 可用硬盘空间。(Source.

  • 我通常会说是 15%,不过现在的硬盘都很大,只要你有足够的空间存放临时文件和交换文件,从技术上讲你就是安全的。(来源.

  • >我建议在 Windows 系统上使用 10%以上的磁盘碎片,因为如果运行磁盘碎片时硬盘上没有那么多可用空间,它就不会运行。(来源.

  • >一般来说,你希望留出 10% 左右的可用空间,以避免碎片(来源.

  • 如果你的硬盘持续超过 75% 或 80%,值得考虑升级到更大的固态硬盘。(Source.

是否对操作系统、文件系统和存储技术(如磁盘与固态)的特定组合所需的可用空间的百分比或绝对数量进行过研究(最好是发表在同行评审期刊上)?(理想情况下,此类研究还应解释不超过特定使用空间的原因,例如,为了防止系统用完交换空间,或避免性能损失)。

如果你知道有这样的研究,请给我一个链接,并简要介绍研究结果。谢谢!

虽然我不能谈论在同行评审期刊上发表的研究成果,而且我也不想在日常工作中依赖这些研究成果,但我可以谈论多年来在各种操作系统下使用数百台生产服务器的现实情况:

全磁盘降低性能有三个原因:

  • 可用空间不足:想想临时文件、更新等。
  • 文件系统退化:如果没有足够的空间,大多数文件系统都无法以最佳方式布局文件
  • 硬件级性能下降:固态硬盘和 SMR 磁盘如果没有足够的可用空间,吞吐量就会下降,更糟糕的是,延迟会增加(有时会增加几个数量级)

第一点是微不足道的,尤其是因为任何正常的生产系统都不会在动态扩展和收缩文件时使用交换空间。

第二点在文件系统和工作负载之间存在很大差异。对于混合工作负载的 Windows 系统来说,70% 的阈值是非常实用的。而对于文件少但容量大的 Linux ext4 文件系统(如视频广播系统)来说,这个阈值可能高达 90%以上。

第三点与硬件和固件有关,但特别是使用 Sandforce 控制器的固态硬盘,在高写入工作量时可能会退回到自由块擦除状态,导致写入延迟增加数千个百分点。我们通常会在分区级别留出 25% 的空闲空间,然后观察低于 80% 的填充率。

建议

我意识到我提到了如何确保执行最大填充率。这是一些随机的想法,没有一个是经过同行评审的(付费、伪造或真实的),但都来自生产系统。

  • 使用文件系统边界:/var "不属于根文件系统。
  • 监控、监控、监控。如果适合你,就使用现成的解决方案,否则就解析 df -h 的输出,以防万一。这可以让你在没有自动删除选项的情况下,避免在安装了自动升级并运行的根文件系统上安装 30 个内核。
  • 权衡 fs 溢出可能造成的破坏与一开始就把它变大的代价:如果你使用的不是嵌入式设备,你可能只需将 root 的 4G 增加一倍。
评论(14)

有没有研究过......操作系统、文件系统和存储技术的特定组合所需的可用空间的百分比或绝对数量......?

在 20 年的系统管理工作中,我从未遇到过详细说明各种配置对可用空间要求的研究。我怀疑这是因为计算机的配置千差万别,可能的系统配置太多,很难做到这一点。

要确定系统需要多少可用空间,必须考虑两个变量:

1.防止不必要行为所需的最小空间,本身可能有一个不固定的定义。

需要注意的是,仅凭这一定义来确定所需的自由空间是无益的,因为这相当于说,在与砖墙相撞之前,以 80 英里/小时的速度驶向砖墙是安全的。

2.存储空间的消耗速度决定了需要预留额外的可变空间,以防系统在管理员来得及做出反应之前就出现性能下降。

操作系统、文件系统、底层存储架构的特定组合,以及应用程序行为、虚拟内存配置等,给想要提供明确的可用空间要求的人带来了相当大的挑战。

这就是为什么会有如此多的建议。你会发现,许多建议都是围绕特定配置提出的。例如,"如果你的固态硬盘在接近容量时会出现性能问题,那么请将可用空间保持在 20% 以上;

因为这个问题没有简单的答案,所以确定你的系统'最低可用空间要求的正确方法是根据你的系统'具体配置来考虑各种通用建议,然后设置一个阈值,对其进行监控,并愿意在必要时进行调整。

**当然,除非你有一个42 TB的RAID 6卷,由固态硬盘和传统硬盘以及预先分配的交换文件组合支持......(这是给严肃的人开的玩笑)。

评论(4)

对于固态硬盘来说,应该留出一些空间,因为重写率随之增加,会对磁盘的写入性能产生负面影响。对于所有固态硬盘来说,80% 满载可能是安全值,一些最新型号的固态硬盘甚至可以在 90-95% 满载的情况下正常工作。

https://www.howtogeek.com/165542/why-solid-state-drives-slow-down-as-you-fill-them-up/

评论(3)