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



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


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


我被告知应该为HD硬盘留出20%的空闲空间,以获得更好的性能,当HD硬盘接近满容量时,它确实会放慢速度。 (来源。)


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


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


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


您通常希望保留大约10%的空闲空间,以避免碎片(来源)。如果硬盘容量超过75%或80%,则值得考虑升级到更大的SSD。 (来源)


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

如果知道有任何这样的研究,如果您能提供其链接以及研究结果的简短摘要,将不胜感激。谢谢!

评论

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

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

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

@EugenRieck,请参阅乔恩·特尼(Jon Turney)的“同龄人的表演结束”(新科学家,1990年9月22日)。同行评议是不完善的,但是很少有更好的选择。即使是平庸而错误的论文也应比模糊的论文更容易被伪造,在博客或论坛帖子中传递主张,使其成为理解的更好起点。
@EugenRieck:“同行评审赚钱者”;一些出版商比其他出版商更道德。 (如果您想知道的话,是的,我知道美国诉亚伦·斯沃茨(Aaron Swartz)的悲剧。)“这两个世界没有重叠。”幸运的是,他们做到了。在大学和其他地方,我看到系统管理员和学者都可以从SE和PR中受益。请让我们保持话题,谢谢:)

#1 楼


是否进行过任何研究,最好是发表在同行评审的期刊[…]上?否则,为此。至少在30年前,至少在个人计算机和工作站操作系统领域,这是一个热门话题。在BSD员工开发Berkeley Fast File System以及Microsoft和IBM在开发高性能File System的时候。

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

应该相当例如,从伯克利FFS的块分配算法的描述中可以明显看出,如果当前和辅助气缸组中没有可用空间,并且该算法因此达到第四级回退(“对所有气缸应用穷举搜索组”),分配磁盘块的性能会受到影响,文件的碎片也会受到影响(从而影响读取性能)。 (以改进当时文件系统设计的布局策略),这是过去30年来公认的智慧。

例如:即使在本世纪出版的有关Unix文件系统的书籍中,也可以不加批判地重复发现原始文件中的论点,即基于创建者的实验,以免FFS卷的容量不足90%充满,以免降低性能。 ,Pate2003,第216页)。很少有人对此表示怀疑,尽管Amir H. Majidimehr实际上是在一个世纪之前做过的,他说xe在实践中并未观察到明显的效果。尤其是因为习惯的Unix机制将最后10%的磁盘保留给超级用户使用,这意味着90%的完整磁盘实际上对于非超级用户来说100%的磁盘已被完全填充(Majidimehr1996 p。68)。比尔·卡尔金斯(Bill Calkins)如此认为,在实践中,在观察低自由空间的性能影响之前,一个人可以用21世纪的光盘填充多达99%的光盘,因为即使只有1%的现代尺寸光盘也足以拥有很多无碎片的空闲空间。 (Calkins2002,第450页)。还有其他例子。就像逻辑块寻址和分区位记录的SCSI和ATA世界从BSD文件系统设计中仔细考虑了所有旋转延迟的计算一样,SSD的物理机制也将其释放出了空闲空间。获得了适用于温彻斯特光盘的智慧。

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

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

复杂性也很复杂,例如可以识别TRIM的文件系统驱动程序可以在磁盘卷中释放空间,SSD制造商本身也已经分配各种程度的预留空间,这些预留空间甚至在设备外(例如,主机)都不可见,用于各种用途,例如垃圾收集和损耗均衡。 br /> Marshall K. McKusick,William N. Joy,Samuel J. Leffler和Robert S. Fabry(1984-08)。 UNIX的快速文件系统。 ACM在计算机系统上的交易。第2卷第3期。第181-197页。存档于cornell.edu。
雷·邓肯(1989-09)。新的高性能文件系统的设计目标和实现。微软系统杂志。第4卷第5期。第1-13页。
Marshall Kirk McKusick,Keith Bostic,Michael J. Karels和John S. Quarterman存档(1996-04-30)。 “伯克利快速文件系统”。 4.4 BSD操作系统的设计与实现。 Addison-Wesley专业。 ISBN 0201549794.
丹·布里奇斯(1996-05)。高性能文件系统内部-第4部分:碎片,磁盘空间位图和代码页。重要的位。存档于OS / 2的《电子开发者杂志》。
基思·史密斯(Keith A. Smith)和玛格·塞尔兹(Margo Seltzer)(1996)。 FFS磁盘分配策略的比较。 USENIX年度技术会议论文集。存档在harvard.edu。
史蒂夫·帕特(Steve D.Pate)(2003)。 “ FFS的性能分析”。 UNIX文件系统:演化,设计和实现。约翰·威利(John Wiley)儿子们ISBN9780471456759。
Amir H. Majidimehr(1996)。优化UNIX以提高性能。学徒大厅。 ISBN9780131115514。
比尔·卡尔金斯(Bill Calkins)(2002)。 “管理文件系统”。在Solaris 9内部。Que Publishing。 ISBN 9780735711013.
Anand Lal Shimpi(2012-10-04)。探索现代SSD中的备用区域与性能一致性之间的关系。 AnandTech。
亨利·库克,乔纳森·埃利索普,劳拉·凯斯和安德鲁·沃特曼(2010)。 IotaFS:探索SSD的文件系统优化。 IEEE消费电子交易。存档于stanford.edu。
https://superuser.com/a/1081730/38062
Accela Zhao(2017-04-10)。关于SSD和FTL的摘要。 github.io。
Windows会修剪SSD上未分区(未格式化)的空间吗?


评论


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

– ivan_pozdeev
17-10-9在14:43

#2 楼

尽管我不能谈论“同行评审期刊”发表的“研究”,而且我也不想依靠那些来进行日常工作,但是我可以谈论数百种产品的现实情况。多年来在各种操作系统下运行的服务器:
全磁盘降低性能的三个原因:文件系统降级:如果没有足够的空间,大多数文件系统将无法最佳布局文件
硬件级别降级:没有足够可用空间的SSD和SMR磁盘将显示吞吐量下降,甚至更糟的是,延迟增加(有时要差很多个数量级)

第一点很简单,尤其是因为没有一个明智的生产系统会在动态扩展和收缩文件时使用交换空间。
第二点在文件之间有很大不同系统和工作量。对于工作负载混合的Windows系统,70%的阈值非常有用。对于只有很少文件但又很大的Linux ext4文件系统(例如,视频广播系统),这一比例可能会高达90%以上。在高写入工作负载上实现免费块擦除,导致写入延迟增加了数千%。我们通常在分区级别上保留25%的空闲空间,然后观察低于80%的填充率。
建议
我意识到我提到了如何确保强制执行最大填充率。一些随机的想法,它们都不是“同行评审”(付费,伪造或真实的),而是全部来自生产系统。

使用文件系统边界:/var不属于根文件系统。 br />监视,监视,监视。如果适合您,请使用现成的解决方案,否则请解析df -h的输出,以防万一。这样可以在没有自动删除选项的情况下从安装了根目录fs的30个内核中节省您运行自动升级的权限。而不是在嵌入式设备上,您可能只需将4G的两倍用于root用户即可。


评论


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

–user11574
17-10-4在12:18

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

–解毒
17-10-4在17:33

既然系统性癌症已经吞噬了大多数发行版,那么第一点并不是无关紧要的。 / var填满,您的服务器崩溃。

–克莱里斯-谨慎乐观-
17-10-4在17:42

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

–奥特·图密特
17-10-5在4:55

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

– jpmc26
17-10-9在9:36



#3 楼


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

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

防止不必要的行为所需的最小空间,它本身可能具有不确定性。可以安全地以80 mph的速度朝向砖墙行驶,直到碰到它的那一刻为止。保留,以免系统在管理员有时间做出反应之前降级。


操作系统,文件系统,底层存储体系结构以及应用程序行为,虚拟内存配置等的特定组合。对于希望提供最终免费服务的人来说,这无疑是一个挑战。空间需求。
这就是为什么有这么多“掘金”建议的原因。您会注意到,其中许多人针对特定配置提出了建议。例如,“如果您的SSD在接近容量时会受到性能问题的影响,请保持20%以上的可用空间。”
由于没有简单的答案,因此确定系统最小可用空间的正确方法要求是根据系统的特定配置考虑各种通用建议,然后设置阈值,对其进行监视,并愿意根据需要进行调整。
或者,您可以至少保留20%的可用空间。当然,除非您有一个42 TB RAID 6卷,并由SSD和传统硬盘的组合以及预先分配的交换文件来支持...(这对认真的人来说是个玩笑。)

评论


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

–user11574
17-10-4在15:38

当我断言这是不言而喻的时候,就会发现存储耗尽的机器会带来什么后果,我并不是在描述这些后果,而是断言存储耗尽的机器总是会遇到后果。正如我试图在答案中证明的那样,这些后果的性质以及避免这些后果的“最佳”可用空间数量是高度特定于配置的。我想可以尝试对所有目录进行分类,但是我认为这比帮助更令人困惑。

–我说恢复莫妮卡
17-10-4在15:53



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

–我说恢复莫妮卡
17-10-4在15:56

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

– iheggie
17-10-8在5:53



#4 楼

当然,除了SSD能够预先为您擦除可用空间外,驱动器本身(无论是HDD还是SSD)都不会在乎它的使用百分比。读取性能将完全相同,而SSD上的写入性能可能会稍差。无论如何,在几乎满载的驱动器上,写性能并不重要,因为没有空间可以写任何东西。另一方面,您的OS,文件系统和应用程序将希望您拥有可用空间次。 20年前,应用程序通常会先尝试检查驱动器上有多少空间,然后再尝试将文件保存在那里。如今,应用程序会在未征得您许可的情况下创建临时文件,并且通常会在崩溃时崩溃或行为异常。例如,NTFS为MFT保留了很大一部分磁盘,但仍显示此空间为空闲空间。当您将NTFS磁盘填充到其容量的80%以上时,您会得到MFT碎片,这对性能有非常实际的影响。

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

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

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

#5 楼

对于SSD,应该留出一些空间,因为重写速率会增加,并且会对磁盘的写入性能产生负面影响。 80%的可用空间可能是所有SSD磁盘的安全值,某些最新型号甚至可以在90-95%的占用容量下正常工作。固态驱动器随着您填充它们的速度降低/

评论


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

–布拉德
17-10-4在19:31

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

– Stuart Brock
17-10-5在11:08

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

– MSalters
17-10-6在10:42

#6 楼

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

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

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

评论


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

– camelccc
17年10月8日在1:30

#7 楼

有很多很多因素会导致非常特定于设置的结果。因此,没有固定的数字,只能根据这些参数进行测量。 (这可能就是为什么其他用户报告没有对此特定主题进行具体研究的原因-太多变量无法编译任何结论性的内容。)
HDD始终分配所有扇区。因此,它绝对不在乎其中有多少包含当前用户数据。 (对于控制器,所有扇区始终都包含一些数据,它只是按照提示进行读取和覆盖。)
另一方面,SSD的控制器动态地(取消)分配其扇区,类似于文件系统。这使这项工作在更高的使用率下更加困难。它的难易程度及其对可观察性能的影响取决于:


控制器的性能和算法的质量
写入负载
从总体上来说负载(让控制器有时间进行垃圾回收)
预留空间(某些制造商甚至让客户选择预订或动态更改) br />
文件系统


不同的文件系统设计用于不同的负载和主机处理要求。可以通过format参数在某种程度上进行调整。
FS写入性能是可用空间和碎片的函数,读取性能仅是碎片的函数。它从一开始就逐渐降低,所以问题就在于您可以承受的阈值在哪里。繁重的负载强调快速查找和访问新的空闲块
繁重的负载强调合并相关数据,以便可以以较少的开销读取数据

#8 楼

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

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

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

评论


仅当从未从驱动器中删除任何文件时,才如此。在现实生活中,当您达到90%的容量时,您将在驱动器上散布一堆自由点。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
17-10-5在10:25

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

– Wes Toleman
17-10-6在9:10



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

–索比昂·拉文·安德森(ThorbjørnRavn Andersen)
17-10-7在21:35

#9 楼

这取决于驱动器的预期用途,但是通常20%到15%的可用空间是旋转磁盘的一个好答案,而10%或更多的可用空间对于SSD来说是好的。可能会移动计算机上的主驱动器和文件,然后20%的可用空间应可防止显着降低速度。这将在驱动器上留出足够的空余空间,以便根据需要移动和复制数据。当空闲位置更接近原始数据时,旋转驱动器将最有效,而固态硬盘中的物理位置不会影响日常性能。因此,纯粹出于性能方面的考虑,旋转驱动器应具有更多的可用空间。在SSD上,减少的可用空间将减少驱动器的使用寿命,但不会降低性能。 SSD尝试将临时数据和随机下载文件存储在使用最少的位置,以便它们可以平衡整个驱动器上的单元使用情况。否则,驱动器的一部分将比其他驱动器更快地老化。某些较新的SSD可以智能地重新排列文件,以便移动空白空间,但是较旧的驱动器可能无法这样做。

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

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