我有一个 IO 密集型模拟程序,它在每次迭代时将模拟跟踪/数据记录到一个文件中。由于模拟运行超过数百万次迭代并将数据记录到磁盘中的文件(每次都覆盖文件),我很想知道这是否会损坏硬盘,因为大多数存储磁盘都有上限写入/擦除周期(例如,闪存盘允许多达 100,000 次写入/擦除周期)。将文件拆分为多个文件是更好的选择吗?
2 回答
您需要认识到,对单个文件的一百万次写入调用可能只会对磁盘的每个块写入一次,这不会对磁盘或 SSD 设备造成任何损害。如果您将文件的第一个块覆盖一百万次,您将面临更大的磨损风险,但有很多缓解因素。首先,如果它是一个程序的单次运行,则操作系统可能会将磁盘映像保存在内存中,而不会在此期间完全写入磁盘——除非您使用的是日志文件系统。如果它是一个日志文件系统,那么实际的写入将分布在许多不同的块上。
如果您设法在磁旋转硬盘上写入同一块一百万次,您仍然不会面临严重损坏磁盘的风险。
对“硬盘写入周期”的 Google 搜索显示了许多信息丰富的文章(更具体地说,也许是关于 SSD 的文章),相关搜索也可能对您有所帮助。
在 SSD 上,对任何特定块的写入(或更准确地说是擦除周期)的数量是有限的。对于任何给定的块,它可能超过 100K 到 100 万,并且 SSD 使用“磨损加载”来避免每次对同一块进行不必要的“写入”。SSD 只能写入零,因此当您将“重置”位为 1 时,您必须擦除整个块。[人们可以在电池上放置一个逆变器以使其相反,但你会得到一个或另一个,所以它没有多大帮助]。
真正的硬盘更像是一种机械设备,所以与你在同一个地方写入多少次无关,它更多的是头部运动。
我不会太担心它。写一个文件应该没问题,一个文件或多个文件都没有什么影响。