几年前,我看过一个演示,说硬盘在 < 50% 满载时性能最佳,而对于繁忙的服务器,您希望将硬盘的使用率保持在 < 80%。原因是磁道是从内向外写入的,访问(尤其是随机访问)对内磁道比对外磁道更快。旋转延迟较低。
另一方面,对于当今的缓存,以及 SQL Server 等产品中的有时预读,较长的外部轨道(没有轨道来跟踪移动)可能会成为否定因素。
这是真的吗?有什么理由在现代硬盘系统上保留可用空间吗?Windows 与 *Nix 有什么不同吗?
答案1
根据我的经验,担心外轨与内轨已经不值得了。与其他影响性能的因素(RAID、缓存、文件系统碎片等)相比,性能差异实在太小了。
但是,直接回答你的问题,在现代硬盘(尤其是旋转(非 SSD)磁盘)上保留大量可用空间肯定是有原因的,那就是文件碎片和寻道时间。当有大量可用空间时,可以按顺序写入文件,从而允许读取它们而无需多次寻道。这使得文件的检索速度比磁盘头必须到处寻道才能拾取文件的小块要快得多。
这篇文章/博客文章更针对文件碎片而不是磁盘性能,但它提供了我发现的有关文件碎片以及可用空间为何对其产生影响的更好的解释之一:为什么 Linux 不需要碎片整理?
磁盘越满,文件(尤其是大文件)就会变得越碎片化,读取和访问的速度就越慢。这也是 Linux 文件系统保留一定比例的空间(通常为 5%)仅供 root 用户使用的原因。这个保留空间对于紧急情况非常有用(这样用户就不会完全填满磁盘并导致问题),但主要目的是减少磁盘填满时的磁盘碎片。当处理非常大的文件时(数据库很常见),可以通过预分配数据文件来减少碎片问题(假设数据库(或其他应用程序)支持它)。
在磁盘容量大且价格相对低廉的今天,很少有理由让文件系统达到容量上限。在性能至关重要的情况下更是如此。
答案2
我同意 Cashell 先生的观点(并投票支持他),但我想补充另外两个因素。
首先,根据您的操作系统,系统需要一些可用空间来存储交换文件和其他临时文件。当然,Linux 有一个专用的交换卷,但 Windows、OS X 和 Netware 都希望使用系统卷来存储临时文件。始终在系统卷上保留至少 1 GB 到 10%(如果可以管理,最多 20%)的可用空间是一种很好的做法。
其次,服务器的规则是,现在和将来都是通过增加 RAM 来应对缓慢的磁盘性能。操作系统调度程序变得越来越复杂,它们会将读取操作保留在 RAM 中,直到方便的时候再写回磁盘。某些应用程序为了保证数据完整性,还会将临时的“回滚”文件写入磁盘,这些文件最终将与主数据集合并。RAM 越多,从磁盘进行的读取操作就越少(因为经常访问的文件通常会缓存在 RAM 中),操作系统就越能隐藏缓慢的写入操作。