参考书目

参考书目

在非正式(即新闻)技术媒体以及在线技术博客和论坛中,人们经常会看到一些传闻建议,建议在硬盘驱动器或固态驱动器上留出一些可用空间。对此给出了各种理由,有时甚至根本没有理由。因此,这些说法虽然在实践中可能合理,但却带有一种神秘的色彩。例如:

  • “一旦您的磁盘已满 80%,您就应该考虑它们满的,你应该立即删除或升级。如果他们击中90%好了,你应该想象自己的裤子真的着火了,并立即做出适当的反应来解决这个问题。” (来源

  • “为了使垃圾收集保持最佳效率,传统建议是保持 20% 到 30% 的驱动器为空。”(来源

  • “有人告诉我,为了获得更好的性能,我应该在硬盘上留出大约 20% 的可用空间,当硬盘接近满载时,它的运行速度确实会变慢。”(来源

  • “您应该为交换文件和临时文件留出空间。我目前留出了 33% 的可用空间,并发誓不会让可用硬盘空间低于 10GB。”(来源

  • “我认为一般是 15%,但是考虑到现在的硬盘容量,只要有足够的空间存储临时文件和交换文件,从技术上来说你就是安全的。”(来源

  • “我建议在 Windows 上将磁盘空间设置为 10% 以上,因为如果在运行碎片整理程序时驱动器上没有那么多可用空间,碎片整理程序将无法运行。”(来源

  • “通常要留出大约 10% 的空闲空间以避免碎片化。”(来源

  • “如果您的驱动器始终处于 75% 或 80% 以上的占用率,则值得考虑升级到更大的 SSD。”(来源

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

如果您知道任何此类研究,请提供链接以及研究结果的简短摘要,我将不胜感激。谢谢!

答案1

有没有相关的研究,最好是发表在同行评审的期刊上[…]?

这个问题需要追溯到 20 多年前,无论是系统管理还是其他方面。30 多年前,这是一个热门话题,至少在个人电脑和工作站操作系统领域是如此;当时 BSD 人员正在开发伯克利快速文件系统,而微软和 IBM 正在开发高性能文件系统。

其创建者撰写的关于这两个文件系统的文献讨论了这些文件系统的组织方式,以便块分配策略通过尝试使连续的文件块相邻,可以实现更好的性能。您可以在有关该主题的当代文章中找到关于此问题的讨论,以及关于分配块的剩余可用空间的数量和位置会影响块放置并进而影响性能的事实的讨论。

例如,从 Berkeley FFS 的块分配算法的描述中可以明显看出,如果当前和辅助柱面组中没有可用空间,因此算法达到第四级回退(“对所有柱面组进行详尽搜索”),分配磁盘块的性能将受到影响,文件的碎片也会受到影响(从而影响读取性能)。

正是这些分析和类似的分析(这些分析远非唯一旨在改进当时文件系统设计的布局策略的文件系统设计)建立了过去 30 年的传统智慧。

例如:原始论文中的格言是,FFS 卷的占用率应保持在 90% 以下,以免性能受到影响,这是基于创建者所做的实验,在本世纪出版的有关 Unix 文件系统的书籍中也可以发现不加批判地重复了这一格言(例如,Pate2003 第 216 页)。很少有人质疑这一点,尽管 Amir H. Majidimehr 实际上在上个世纪就质疑过,他说 xe 在实践中没有观察到明显的效果;尤其是因为传统的 Unix 机制将最后的 10% 保留给超级用户使用,这意味着对于非超级用户来说,90% 的磁盘实际上是 100% 的磁盘反正 (Majidimehr1996,第 68 页)。Bill Calkins 也持这种观点,他认为在实践中,21 世纪的磁盘大小可以填满 99%,然后才会观察到低可用空间对性能的影响,因为即使是 1% 的现代磁盘大小也足以留下大量未碎片化的可用空间可供使用(Calkins2002,第 450 页)

后者是传统观念如何变成错误的例子。还有其他例子。就像 SCSI 和 ATA 世界一样逻辑块寻址分区位记录而是把所有的精心计算都抛到九霄云外旋转潜伏期在 BSD 文件系统设计中,因此 SSD 的物理机制会将适用于温彻斯特磁盘的可用空间传统观念抛到九霄云外。

对于 SSD,可用空间量在整个设备上即跨光盘上的所有卷以及它们之间的,对性能和寿命都有影响。而文件需要存储在具有连续逻辑块地址的块中这一想法的基础被 SSD 没有盘片旋转和磁头寻道这一事实所削弱。规则再次改变。

对于 SSD,建议的最小可用空间量实际上是更多的而不是传统的 10%,这是 33 年前使用温彻斯特圆盘和伯克利 FFS 的实验得出的。例如,Anand Lal Shimpi 给出了 25%。这一差异还因必须是自由空间这一事实而加剧整个设备而 10% 的数字是在每个单独的 FFS 体积内因此会受到分区程序是否知道要 TRIM 分区表未分配给有效磁盘卷的所有空间的影响。

它还因 TRIM 感知文件系统驱动程序等复杂性而变得更加复杂,这些驱动程序可以 TRIM 可用空间之内磁盘容量,以及 SSD 制造商本身也已经分配不同程度的预留空间对于诸如垃圾收集和磨损均衡等各种用途而言,它甚至在设备之外(即主机)也是不可见的。

参考书目

答案2

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

磁盘满了会降低性能的原因有三个:

  • 可用空间不足:考虑临时文件、更新等。
  • 文件系统性能下降:如果空间不足,大多数文件系统都无法以最佳方式布局文件
  • 硬件级别降级:没有足够可用空间的 SSD 和 SMR 磁盘将出现吞吐量下降,甚至更糟的是延迟增加(有时会增加几个数量级)

第一点是微不足道的,特别是因为没有任何理智的生产系统会在动态扩展和收缩文件时使用交换空间。

第二点在文件系统和工作负载之间有很大差异。对于具有混合工作负载的 Windows 系统,70% 的阈值相当有用。对于文件较少但较大的 Linux ext4 文件系统(例如视频广播系统),这个阈值可能会高达 90% 以上。

第三点取决于硬件和固件,但特别是带有 Sandforce 控制器的 SSD 在高写入工作负载下可能会出现空闲块擦除,导致写入延迟增加数千个百分点。我们通常在分区级别留出 25% 的空闲空间,然后观察到填充率​​低于 80%。

建议

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

  • 使用文件系统边界:/var不属于根文件系统。
  • 监控、监控、监控。如果现成的解决方案适合您,请使用它,否则请解析输出df -h并在必要时发出警报。这可以为您节省在安装并运行自动升级的根文件系统上的 30 个内核,而无需使用自动删除选项。
  • 首先权衡一下 fs 溢出的潜在破坏与使其变大的成本:如果您不是在嵌入式设备上,您可能只会将 4G 加倍用于 root。

答案3

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

在 20 年的系统管理生涯中,我从未见过详细研究各种配置的可用空间需求。我怀疑这是因为计算机的配置种类繁多,由于可能的系统配置数量众多,因此很难进行研究。

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

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

    请注意,仅通过这个定义来定义所需的自由空间是没有帮助的,因为这相当于说以 80 英里/小时的速度向砖墙行驶直到与砖墙相撞都是安全的。

  2. 存储空间消耗的速度,这要求保留额外可变的空间量,以免系统在管理员有时间做出反应之前就出现问题。

操作系统、文件系统、底层存储架构以及应用程序行为、虚拟内存配置等的特定组合对于希望提供明确的可用空间要求的人来说是一个很大的挑战。

这就是为什么有这么多“精辟”的建议。您会注意到,其中许多建议都围绕特定配置提出建议。例如,“如果您的 SSD 在接近容量时容易出现性能问题,请保持 20% 以上的可用空间。”

因为这个问题没有简单的答案,所以正确的方法是识别你的系统的最小可用空间要求是根据系统的具体配置考虑各种通用建议,然后设置阈值,监控它,并根据需要进行调整。

或者您可以保留至少 20% 的可用空间。当然,除非你有一个 42 TB 的 RAID 6 卷,该卷由 SSD 和传统硬盘组合以及预先分配的交换文件支持......(对于严肃的人来说,这是一个笑话。)

答案4

对于 SSD,应该留出一些空间,因为重写率会增加,并对磁盘的写入性能产生负面影响。80% 的占用率可能对所有 SSD 磁盘来说都是安全值,一些最新型号即使在占用 90-95% 的容量的情况下也能正常工作。

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

相关内容