我曾专业地建议用 SSD 升级软件开发团队的构建服务器 (Win7) 上的硬盘,理由是它可以加快构建过程,因为我们每晚的构建过程会创建大量文件。我相信我们不会遇到闪存磨损问题,因为我们的公司政策是所有机器使用 24 个月后都要全部更换。
结果是 480Gb Kingston V300 被安装到服务器中。
果然,正如预期的那样,构建速度现在明显加快了;但是在过程开始时进行的“清理”操作(涉及删除大约 2GB 的文件(~80k 个文件和 2k 个文件夹))现在花费的时间明显更长;大约需要 15-20 分钟,而不是在传统硬盘上所需的约 3 分钟,并且削弱了更快构建时间带来的好处。
我已经尝试了可以想象到的所有“删除”方法,包括我们构建系统的“清理”内部和外部,包括对整个系统执行 rmdir /s /q;结果是一样的。
现在事情变得有趣了。在我大量的绝望实验中,我发现将要删除的整个目录复制到另一个位置,然后删除它的速度非常快;大约 45 秒。即使只是将其复制到原位(“(1) 的副本”等)并删除二进制相同的副本也需要很短的时间;但无论我如何处理原始文件,它仍然需要 15-20 分钟。
因此,似乎由于某种原因,一旦驱动器上创建了“另一堆东西”,驱动器上的“一堆东西”就会需要更长的时间才能删除;但是否则删除起来会非常快。
谁能解释一下发生了什么,以及我该如何缓解这种情况?
答案1
首先:重新考虑你的工作流程。为什么不直接重命名目录以将其移开,在新目录上运行构建,然后在使用率较低的时段删除旧目录。如果你能用 0.1 秒,那么即使是 3 分钟也似乎太浪费了。
现在关于删除时间:我怀疑,出于某种原因,该目录中的某些内容仍在被操作系统使用 - 可能是经典的(搜索索引器)?这很容易被旋转磁盘上的创建时间要长得多的事实所掩盖。您可以通过尝试在几个小时后删除内容,然后检查需要多长时间来验证这一点。
编辑
如果内容只有 2GB 大小,那么 RAM 磁盘将是显而易见的选择。