数据记录时USB记忆棒的预期寿命

问题描述

我知道,闪存驱动器的平均预期寿命约为100,000个写入周期。这给我提出了一个问题

我编写了一个程序,每6秒钟将一些值写入到USB记忆棒上的CSV文件中。每天都会创建一个文件。该机器是采用结构文本(类似于pascal)和C库进行文件处理的Sigmatek PLC。代码类似于文件fopen(打开今天的文件),将一些值与时间戳一起写入流,然后文件fclose(关闭文件)。

我听说有人说这可能意味着我的USB记忆棒不会持续很长时间,因为我每6秒打开和关闭一次文件。他建议我打开文件,像往常一样每6秒钟写入一次值,然后在10或20分钟后关闭,这样USB记忆棒的使用寿命会更长。他的理由是,只有在您实际使用Fclose关闭文件时,才会写入USB记忆棒。有人可以确认吗?

或者即使我每隔6秒打开和关闭一次,这也可能根本不会成为问题,因为USB记忆棒具有16gb的内存,并且只有在很长一段时间之后才会用尽内存(1个文件的最大容量为500kb,一天创建了一个文件),因此我只是写文件,而不是写文件并从内存中擦除? 100,000个写周期的生命周期是纯粹基于写还是写,擦除和重写?

解决方法

首先,每10到20分钟处理一次fclose()。这取决于缓冲模式(对于C,请参见setvbuf)。在缓冲模式下,您被告知是正确的-在fclose()时写入任何缓冲数据。但是,丢失数据的风险增加了(例如突然断电意味着丢失了未写入的缓冲区)。

我们还制作了使用可写闪存(不是USB)的嵌入式系统。 100,000个写周期是非常可变的。表示“ P / E”(编程擦除)周期。如果仅添加数据,那么以您引用的速度,我就不会对此太在意。如果您正在执行其他操作(例如擦除/压缩日志文件),而这可能导致多次写入同一存储位置,那么您需要对此进行更多考虑。您还需要查看操作系统正在执行的操作-例如,最好不启用任何类型的自动碎片整理。