HDD或SSD上有多少可用空间?


111

在非正式(即新闻技术)技术出版社以及在线技术博客和讨论论坛中,通常会遇到一些轶事建议,以在硬盘驱动器或固态驱动器上留出一定的空间。给出了各种原因,或者有时根本没有原因。因此,尽管这些主张在实践中可能是合理的,但它们对它们却具有神话般的气息。例如:

  • 一旦磁盘已满80%,则应将其视为已满,然后立即删除或升级。如果它们满了90%,则应考虑自己的私人裤子着火了,并采取适当的措施立即采取补救措施。(来源。)

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

  • 有人告诉我,我应该给高清硬盘留出20%的可用空间,以获得更好的性能,当高清硬盘接近满容量时,它的确会放慢速度。(来源。)

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

  • 我会说通常为15%,但是现在每天有多大的硬盘驱动器,只要您有足够的临时文件和交换文件,从技术上讲您是安全的。(来源。)

  • 我建议在Windows上使用10%以上的磁盘,因为如果在驱动器上没有那么多的可用磁盘碎片整理将无法运行。(来源。)

  • 您通常希望留出大约10%的可用空间,以免造成碎片(Source)

  • 如果驱动器的可用空间始终超过75%或80%,则值得考虑升级到更大的SSD。(来源。)

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

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


2
我不了解研究发现,但我了解自己的发现。如果对所有文件进行碎片整理,则在几乎满的驱动器上不会有性能损失(除了目录访问速度会稍有降低)。问题在于,许多碎片整理程序会优化文件碎片,但是在此过程中,可用空间会更加碎片化,因此新文件会立即变得碎片化。随着磁盘变满,自由空间碎片变得更糟。
AFH

8
@Abdul-有关交换文件大小的许多建议都具有误导性。关键要求是一次要有足够的内存(真实和虚拟)用于所有要激活的程序,因此RAM越少,交换就越需要。因此,将RAM占一定比例(通常建议为两倍)是错误的,除了将其作为任意的初始大小,直到找到真正需要的数量为止。找出系统最繁忙时使用了多少内存,然后将其加倍并减去RAM大小:您永远不会想用完交换空间。
AFH

2
我认为这确实取决于您使用驱动器的目的。如果您需要从硬盘驱动器中添加或删除大量数据,那么我将根据需要移动的文件大小留出可观的可用空间。一般而言,10-20%的建议似乎是合理的,但是除了个人经验之外,我没有其他理由可以支持。
大卫,

2
@EugenRieck,请参阅乔恩·特尼(Jon Turney)的“同End表演 ”(《新科学家》,1990年9月22日)。同行评议是不完善的,但是很少有更好的选择。即使是平庸和错误的论文也应比模糊的论文更容易被伪造,在博客或论坛帖子中传递主张,使其成为更好的理解起点。
sampablokuper

2
@EugenRieck:“ 同行评审赚钱者 ”;一些出版商比其他出版商更道德。(如果您想知道的话,是的,我知道美国诉亚伦·斯沃茨(Aaron Swartz)的悲剧。)“ 这两个世界没有任何重叠。 ”幸运的是,他们确实如此。在大学和其他地方,我看到系统管理员和学者都可以从SE和PR中受益。请让我们继续保持话题,谢谢:)
sampablokuper

Answers:


10

是否有任何研究,最好发表在同行评审期刊[…]上?

为此,必须回溯20年以上的系统管理。至少在30年前,至少在个人计算机和工作站操作系统领域,这是一个热门话题。当BSD人员开发Berkeley Fast FileSystem时,Microsoft和IBM正在开发High Performance FileSystem。

两位作者的文献都讨论了这些文件系统的组织方式,以便通过尝试使连续的文件块连续,从而使块分配策略产生更好的性能。您可以在有关该主题的当代文章中找到有关此问题的讨论,以及有关分配块的可用空间的数量和位置会影响块放置和性能的事实。

例如,从伯克利FFS的块分配算法的描述中应该很明显,如果当前和辅助气缸组中没有可用空间,则该算法将达到第四级后备状态(“应用穷举搜索到所有柱面组”),分配磁盘块的性能将受到影响,文件的碎片也将受到影响(并因此导致读取性能下降)。

这些和类似的分析(与旨在改善当时文件系统设计的布局策略的唯一文件系统设计相去甚远)已经建立在过去30年的智慧之上。

例如:在FFS量保持低于90%满,以免性能遭受原始论文,这是基于由创作者做出实验的格言,可以发现,即使在公布本世纪Unix文件系统的书不加批判地重复(如(2003年,第216页)。很少有人对此表示怀疑,尽管Amir H. Majidimehr实际上在上个世纪就这样做了,他说xe在实践中并未观察到明显的效果。这不仅是因为其保留该最终10%的超级用户使用,这意味着90%满盘是有效100%满对于非超级用户习惯的Unix机构的反正 (Majidimehr1996第68页)。比尔·卡尔金斯(Bill Calkins)也是这样,他建议在实践中,在观察低自由空间的性能影响之前,可以用21世纪的光盘填充99%的光盘,因为即使只有1%的现代尺寸光盘也足以拥有很多无碎片的空闲空间。仍在玩(Calkins2002 p。450)

后者是一个例子,说明所接受的智慧可能会变得错误。还有其他例子。就像逻辑块寻址分区位记录的SCSI和ATA世界从BSD文件系统设计中仔细考虑了所有旋转延迟的计算一样,SSD的物理机制也将其释放出了空闲空间。获得了适用于温彻斯特光盘的智慧。

借助SSD,整个设备(即磁盘上所有卷及其之间的可用空间)的可用空间量会影响性能和使用寿命。而且,SSD不需要旋转盘片,也不用寻找磁头,这一事实削弱了将文件存储在具有连续逻辑块地址的块中这一想法的基础。规则再次更改。

使用SSD时,建议的最小可用空间实际上比33年前对Winchester光盘和Berkeley FFS进行的实验所得出的传统10%更多。例如,Anand Lal Shimpi给出25%。这种差异由于以下事实而变得更加复杂:必须在整个设备上都具有可用空间,而10%的数字在每个FFS卷内,因此受分区程序是否知道TRIM的所有空间的影响。由分区表分配给有效的磁盘卷。

它也因诸如TRIM感知的文件系统驱动程序之类的复杂性而变得更加复杂,这些驱动器可以对磁盘卷中的可用空间进行 TRIM释放,而且SSD制造商本身也已经分配了不同程度的预留空间,而这些预留空间甚至在设备之外也看不到(例如,主机)。 )用于各种用途,例如垃圾收集和磨损均衡。

参考书目


5
如果没有文字参考,“参考书目”是没有用的。
ivan_pozdeev

49

尽管我不能谈论“同行评审期刊”发表的“研究”,而且我也不想依靠那些来进行日常工作,但是我可以谈论数百种产品的现实情况。多年来在各种操作系统下的服务器:

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

  • 可用空间不足:考虑临时文件,更新等。
  • 文件系统降级:如果没有足够的空间,则大多数文件系统都无法最佳布局文件
  • 硬件级降级:没有足够可用空间的SSD和SMR磁盘将显示吞吐量降低,甚至更糟糕的是,延迟增加(有时会增加多个数量级)

第一点很简单,尤其是因为没有一个明智的生产系统会在动态扩展和收缩文件时使用交换空间。

第二点在文件系统和工作负载之间存在很大差异。对于工作负载混合的Windows系统,70%的阈值非常有用。对于只有很少文件但又很大的Linux ext4文件系统(例如,视频广播系统),这可能会增加90%以上。

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

推荐建议

我意识到我提到了如何确保强制执行最大填充率。一些随机的想法,它们都不是“同行评审”的(付费,假造或真实的),而是全部来自生产系统。

  • 使用文件系统边界:/var不属于根文件系统。
  • 监视,监视,监视。如果适合您,请使用现成的解决方案,否则将解析输出df -h并放开警报铃,以防万一。这可以在没有自动删除选项的情况下从安装了自动升级的根fs上的30个内核中省掉您的钱。
  • 首先权衡一下fs溢出的潜在破坏与扩大它的成本:如果您不在嵌入式设备上,则可能只是将4G的根数翻了一番。

19
这是有帮助的:与典型的轶事相比,它更详细,并且具有更大的解释力。我相应地投票赞成。但是,我确实希望获得更多可靠的证据,而不仅仅是“互联网上的某人说这是他们的经验”。
sampablokuper

2
我喜欢在阅读此答案时想一想,一个重要的注意事项是没有“所有解决方案”的答案,并且可以通过考虑每个用例来找到所需的更多详细信息。当Eugen列出了哪些重要过程可能会使用最后可用的空间时,我肯定知道在这里如何更好地解决问题。
Pysis

4
既然系统性癌症已经吞噬了大多数发行版,那么第一点并不是一件容易的事。/var填满,服务器倒塌。
克莱里斯

6
尤金·里克(Eugen Rieck)-我不想说,但您的回答是关于a)您的工作;b)为什么有用。我看不到任何指向相关研究的指标,例如,如果您在Windows系统上填充了70%以上,将会发生什么。请注意,最初的问题是关于实际(不一定经过同行评审)的研究。
奥特·图梅特

6
@sampablokuper给您的可靠建议:学术优先事项与日常运营优先事项有很大不同。这就是为什么您的大学学位并没有真正为您做好准备的原因。学者很少关心这些系统的日常实际问题。始终检查您的信息是否健全,但除此之外,请相信成功地在空中文件上运行这些系统的人。您还可以从人群中获取信息,这大大降低了获取垃圾信息的可能性。
jpmc26 2015年

29

是否进行过任何研究……针对操作系统,文件系统和存储技术的特定组合所需的可用空间的百分比或绝对数量??

在20年的系统管理中,我从未遇到过详细研究各种配置的自由空间需求的研究。我怀疑这是因为计算机配置多种多样,由于可能的系统配置数量众多,很难做到。

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

  1. 防止不必要的行为所需的最小空间,它本身可能具有不确定性。

    请注意,仅通过此定义来定义所需的自由空间是无济于事的,因为这等效于说可以安全地将80 mph的速度朝向砖墙行驶,直到与之碰撞为止。

  2. 存储消耗的速度决定了要保留的额外可变空间量,以免系统在管理员有时间做出反应之前降级。

操作系统,文件系统,底层存储体系结构以及应用程序行为,虚拟内存配置等的特定组合给希望提供确定的可用空间需求的用户带来了很大的挑战。

这就是为什么有那么多“掘金”建议的原因。您会注意到,其中许多人针对特定配置提出了建议。例如,“如果您的SSD在接近容量时会受到性能问题的影响,请保持20%以上的可用空间。”

因为没有简单的回答这个问题,正确的方法,以确定您的系统的最小可用空间的要求是在系统的特定配置的光线考虑各种通用的建议,然后设定一个阈值时,监测它,并愿意进行调整有必要的。

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


8
感谢您的回答:)我想谈谈您的观点之一:“ 由于存储耗尽的机器的后果是不言而喻的,没有必要证明建议留出一些可用空间。 ”不,这不是事实不言而喻。它给人们带来的惊喜超出您的预期。操作系统,文件系统等的不同组合可能以不同的方式对这种情况做出响应:有些可能会发出警告;有些则会发出警告。有些可能会在没有警告的情况下失败;谁知道?因此,希望能对此有更多的启发。因此,我的问题是:)
sampablokuper

1
当我断言这是不言而喻的有存储耗尽机器的后果,我不是在描述这些后果,而是声称存储耗尽的机器总是经历的结果。正如我试图在回答中证明的那样,这些后果的性质以及避免这些后果的“最佳”可用空间数量是高度特定于配置的。我想可以尝试对所有目录进行分类,但是我认为这比帮助更令人困惑。
Twisty模仿者,

另外,如果您确实要问特定的配置如何对磁盘空间不足做出反应(例如,警告,性能问题,故障等),请相应地编辑您的问题。
Twisty模仿者,

我还要添加三个额外的问题:3.根据企业的未来增长预测,磁盘消耗最可能和最坏的情况是什么?4.磁盘空间用尽时,企业的成本是多少?5.交货时间是多少您是否需要大幅增加磁盘容量?我的一位客户在他们的情况下拥有250TB的zfs突袭现场,他们需要在重大更改之前几周就知道,因为大约需要一天的时间才能将每个更大的磁盘添加到raid阵列中,然后淘汰较小的磁盘。
iheggie

12

当然,除了SSD能够预先为您擦除可用空间外,驱动器本身(无论是HDD还是SSD)都不会在乎它的使用百分比。读取性能将完全相同,而SSD上的写入性能可能会稍差。无论如何,在几乎满载的驱动器上,写性能并不重要,因为没有空间可以写任何东西。

另一方面,您的OS,文件系统和应用程序将希望您始终有可用空间。20年前,对于应用程序来说,通常在尝试将文件保存到驱动器之前先检查驱动器上有多少空间。今天,应用程序会在未征得您许可的情况下创建临时文件,并且通常会崩溃或无法正常运行。

文件系统也有类似的期望。例如,NTFS为MFT保留了很大一部分磁盘,但仍显示此空间为空闲空间。当您将NTFS磁盘填充到其容量的80%以上时,会出现MFT碎片,这会对性能产生非常实际的影响。

此外,拥有可用空间确实有助于防止常规文件碎片化。文件系统倾向于通过根据文件的大小找到每个文件的正确位置来避免文件碎片化。在接近填充的磁盘上,它们的选择较少,因此必须做出较差的选择。

在Windows上,还期望您有足够的磁盘空间用于交换文件,必要时可以增加。如果不能,您应该期望自己的应用程序被强制关闭。交换空间很少确实会降低性能。

即使交换具有固定大小,但由于系统磁盘空间不足而导致系统崩溃和/或使其无法启动(Windows和Linux均如此),因为操作系统希望在启动过程中能够写入磁盘。因此,是的,达到90%的磁盘使用率应该使您考虑油漆起火。直到最近的下载被删除以为OS留出很少的磁盘空间后,我才一次见过无法正常启动的计算机。


8

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

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


1
Mod Up-SSD与HDD非常不同。尽管驱动器之间的确切机制有所不同,但SSD将[甚至相同放置的]数据写入磁盘上的[空闲]位置,并使用后续的垃圾收集来防止一个点上的过度磨损(这称为“磨损平衡”)。磁盘越满,执行此操作的效率就越低。
布拉德(Brad),

2
还值得注意的是,某些“较新”磁盘可以正常工作的原因是,它们已经提供了用户无法访问的大量空白空间(尤其是“企业” SSD确实如此)。这意味着它们始终具有“空闲块”来写入数据,而没有“读取-擦除-重写”周期,这会减慢“完整” SSD的速度。
斯图尔特·布洛克

1
请注意,所有固态硬盘已经在一定程度上做到了这一点,并向您隐藏了它。这是损耗平衡的一部分。留下更多的自由空间为磨损平衡提供了更多空间。这对于经常写入的磁盘可能是有益的,特别是如果它是廉价的TLC SSD模型。再说一次,如果您必须保留20%的可用空间,那么您将失去廉价磁盘的某些好处。最后,新磁盘肯定不会更好。第一代SSD是SLC磁盘,具有100.000擦除周期。当前的TLC可能低至5000-差了20倍。
MSalters

8

“规则”因您的要求而异。还有一些特殊情况,例如ZFS:“在90%的容量下,ZFS从基于性能的优化切换到基于空间的优化,这对性能产生了巨大影响。” 是的,这是ZFS 的设计方面……不是通过观察或传闻得出的。显然,如果您的ZFS存储池仅由SSD组成,则问题不大。但是,即使使用旋转磁盘,当您处理静态存储时,您也可以愉快地达到99%或100%,并且不需要一流的性能-例如,您个人最喜欢的电影收藏,它永远不会改变,在哪里安全是重中之重1。

接下来,btrfs –一种极端情况:当可用空间太低(几个MByte)时,您可能会遇到无法返回的地步。不可以,不能删除文件。根本没有足够的空间删除文件。btrfs是一个COW(写时复制)文件系统,您可能会无法再修改元数据。此时,您仍然可以在文件系统中添加其他存储(USB拇指驱动器可能会工作),然后从扩展的文件系统中删除文件,然后收缩文件系统并再次删除其他存储)。同样,这是文件系统设计引起的某些方面。

可以为您提供“真实(大量)数据”的人可能是处理“真实(大量)存储”的人。Twisty(出色的回答)提到混合阵列(由大量廉价的慢速旋转,大量的快速旋转磁盘,许多SSD ...组成)在企业环境中运行,而企业环境的主要限制因素是管理员的速度。能够订购升级。从16T到35T可能需要6个月的时间...因此您最终会得到报告的认真支持,建议将警报设置为50%。


2
您显然从未将zfs池设置为100%,这不是应该有意做的事情。这很痛苦,您无法删除任何内容,您必须截断一些文件才能完全获得写访问权限,甚至还可以删除任何内容。
camelccc

4

有很多很多因素会导致非常特定于设置的结果。因此,没有固定的数字,只能根据这些参数进行测量。(这可能就是为什么其他用户报告没有对此特定主题进行特定研究的原因-变量太多,无法得出结论。)

  • 硬件

    • HDD始终分配所有扇区。因此,它绝对不在乎其中有多少包含当前用户数据。(对于控制器,所有扇区始终都包含一些数据,它只是按照提示进行读取和覆盖。)
    • 另一方面,SSD的控制器会动态地(取消)分配其扇区,类似于文件系统。这使这项工作在更高的使用率下更加困难。它的难易程度及其对可观察性能的影响取决于:
      • 控制器的性能和算法的质量
      • 写负荷
      • 从总体上来说,这是整体负载(给控制器时间来进行垃圾回收)
      • 空间预留空间大(某些制造商甚至允许客户选择预定或动态更改)
  • 文件系统

    • 针对不同的负载和主机处理要求设计了不同的文件系统。可以通过格式参数对其进行某种程度的调整。
    • FS的写入性能是可用空间和碎片的函数,读取性能仅是碎片的函数。它从一开始就逐渐降低,所以问题是您可以忍受的阈值在哪里。
  • 负载类型

    • 大量写入的负载强调快速查找和访问新的空闲块
    • 大量读取强调合并相关数据,因此可以以较少的开销读取数据

3

机械驱动器要考虑的一件事是,外边缘的吞吐量高于内部边缘的吞吐量。这是因为对于较大的外部圆周,每转有更多的扇区。

当驱动器达到容量时,性能将下降,因为只有较慢的内部扇区可用。

有关更深入的分析,请参见https://superuser.com/a/643634


5
仅当从未从驱动器中删除任何文件时,才如此。在现实生活中,当容量达到90%时,您将在驱动器上散布一堆自由点。
德米特里·格里戈里耶夫

1
我并不是要说硬盘控制器将避免填补空白,但是随着驱动器的填补,将使用更多的内部扇区。容量为90%的磁盘将比仅55%的磁盘使用更多的内部扇区。搜索时间对性能有很大影响,因此这主要是对大型连续文件的好处。但是,更大的可用空间确实意味着有更多机会连续存储大文件。
Wes Toleman

@WesToleman硬盘控制器不负责决定事情的去向,它只是将扇区号映射到物理位置。操作系统-特别是文件系统。
托尔比约恩Ravn的安徒生

3

这取决于驱动器的预期用途,但是通常20%到15%的可用空间对于旋转磁盘是一个很好的解决方案,而10%或更多的可用空间对于SSD来说很好。

如果这是计算机上的主驱动器,并且文件可能已移动,则20%的可用空间应可防止显着降低速度。这将在驱动器上留出足够的开放空间,以便根据需要移动和复制数据。当空闲位置更接近原始数据时,旋转驱动器将最有效,而在SSD中,物理位置不会影响日常性能。因此,纯粹出于性能原因,旋转驱动器应具有更多的可用空间。在SSD上,减少的可用空间将减少驱动器的使用寿命,但不会降低性能。SSD尝试将临时数据和随机下载文件存储在使用最少的位置,以便它们可以平衡整个驱动器上的单元使用情况。否则,驱动器的一部分会比其他驱动器更快地老化。

如果这是介质驱动器或长期存储驱动器,则5%到10%的空闲空间就足够了,如果它是旋转磁盘,则最好是10%的空闲空间。您不需要那么多的可用空间,因为该驱动器很少需要移动数据,因此性能几乎没有那么重要。可用空间主要用于丢弃和替换坏扇区,并使文件更连续。

除非有很好的明确理由,否则我不会超过一天将任何驱动器的容量超过95%。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.