【问题标题】:Life expectancy of usb stick when datalogging [closed]数据记录时USB记忆棒的预期寿命[关闭]
【发布时间】:2020-08-16 13:59:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c file stream usb plc


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答,我想我会让它每 6 秒打开/关闭一次,因为我确实只是附加到现有文件,或者在新的一天开始时创建一个新文件.在这种情况下,我通常从不擦除和重写闪存驱动器
    猜你喜欢
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多