将数百万次写入文件会损坏我的硬盘吗?

Posted

技术标签:

【中文标题】将数百万次写入文件会损坏我的硬盘吗?【英文标题】:Will writing million times to a file, spoil my harddisk? 【发布时间】:2012-12-13 14:23:32 【问题描述】:

我有一个 IO 密集型模拟程序,它在每次迭代时将模拟跟踪/数据记录到一个文件中。由于模拟运行超过数百万次迭代并将数据记录到磁盘中的文件(每次都覆盖文件),我很想知道这是否会损坏硬盘,因为大多数存储磁盘都有上限写入/擦除周期(例如,闪存盘允许多达 100,000 次写入/擦除周期)。将文件拆分为多个文件会是更好的选择吗?

【问题讨论】:

【参考方案1】:

您需要认识到,对单个文件的一百万次写入调用可能只会对磁盘的每个块写入一次,这不会对磁盘​​或 SSD 设备造成任何损害。如果您将文件的第一个块覆盖一百万次,您将面临更大的磨损风险,但有很多缓解因素。首先,如果它是一个程序的单次运行,则操作系统可能会将磁盘映像保存在内存中,而不会在此期间完全写入磁盘——除非您使用的是日志文件系统。如果它是一个日志文件系统,那么实际的写入将分布在许多不同的块上。

如果您设法在磁旋转硬盘上写入同一块一百万次,您仍然不会面临严重损坏磁盘的风险。

“硬盘写入周期”的 Google 搜索显示了很多信息丰富的文章(更具体地说,也许是关于 SSD 的文章),相关搜索也可能对您有所帮助。

【讨论】:

不要忘记磁盘本身可能有一个缓存来合并写入。【参考方案2】:

在 SSD 上,对任何特定块的写入(或更准确地说是擦除周期)的数量是有限的。任何给定的块可能超过 100K 到 100 万,SSD 使用“磨损加载”来避免每次对同一块进行不必要的“写入”。 SSD 只能写入零,因此当您将“重置”位为 1 时,您必须擦除整个块。 [人们可以在电池上放置一个逆变器以使其相反,但你会得到一个或另一个,所以它没有多大帮助]。

真正的硬盘更像是一种机械设备,因此与您向同一个地方写入多少次无关,更多的是头部运动。

我不会太担心。写一个文件应该没问题,一个文件或多个文件都没有什么影响。

【讨论】:

SLC - 100k 写入周期,MLC - 3k,TLC 1k,但 SLC 稀有且昂贵,大多数消费类驱动器是 MLC 和 TLC。

以上是关于将数百万次写入文件会损坏我的硬盘吗?的主要内容,如果未能解决你的问题,请参考以下文章

下载过多对电脑硬盘有损害吗?

高效地将数百万个 JSON 文件附加到单个文件中

节点在下载后写入损坏的.xlsx文件

将数百万个文件从根 AZStorageBlob 复制到子文件夹

JPA 查询调用 getter 数百万次

字节流案例——复制文件