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

Life expectancy of usb stick when datalogging

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

我编写了一个程序,我每 6 秒将一些值写入 USB 记忆棒上的 csv 文件。每天都会创建一个新文件。该机器是用结构文本(类似于 pascal)编程的 Sigmatek PLC,带有用于文件处理的 C 库。代码看起来像文件 fopen(打开今天的文件),将一些值连同时间戳写入流,然后文件 fclose(关闭文件)。

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

或者即使我每 6 秒打开和关闭一次,这可能根本不会成为问题,因为 USB 记忆棒有 16GB 内存,并且只会 运行 在很长一段时间后内存不足( 1 个文件最大为 500kb,每天创建一个文件),因此我只是在写入而不是从内存中写入和擦除? 100,000 次写入周期寿命是基于纯写入还是写入、擦除和重写?

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

我们还制作了使用可写闪存(而非 USB)的嵌入式系统。 100,000 个写周期变化很大。这意味着“P/E”(program-erase)个周期。如果你只是附加数据,那么按照你引用的速度,我不会太在意它。如果你正在做其他事情,比如 erasing/compressing 日志文件,这可能会导致多次写入相同的存储位置,那么你需要多考虑一下。您还需要查看 OS 正在执行的操作 - 例如,最好不要启用任何类型的 auto-defrag。