在断电写入期间防止内存损坏
Prevent Memory Corruption During Writes with Power Loss
我有一个通过 U 盘运行 windows 的系统(它是专有机器)。这类机器一般都是'pulling the plug'断电。没法绕,就是这么操作的
我们偶尔会在 USB 记忆棒上出现驱动器损坏,或者至少在我们写入内容的目录中出现损坏。除了 'write as little/infrequently as possible' 之外,真的有任何软件解决方案可以解决这个问题吗?
这是一台 windows 机器,写入的应用程序通常用 Java/C# 编写,如果这对任何人都有用的话。损坏通常显示为写目录或写目录的父目录,由于损坏而无法再访问。唯一的处理方法是通过命令行删除它并重新开始。
有没有办法以编程方式处理这种情况,或许可以恢复内存的先前状态,而不是删除并重新开始?
鉴于我们目前的设计,我觉得好像没有任何方法可以防止此类事情发生。如果您进行了足够多的写入并不断拔下插头,您最终会出现损坏,这就是事实。特别是在这个设计中。即使备用电池已充电,如果软件未在电池放电时间内正常关闭,损坏仍可能发生。更不用说上面所说的 gravitymixes 最终会损坏我们之前看到的硬件。
整个项目需要考虑重新设计系统。立即想到某种类型的网络解决方案,其中数据从易失性机器发送到具有更可靠电源的机器上,通过可靠的网络连接记录到实际易失性机器上的磁盘作为最后的努力,如果网络通信在给定时间点(回填)不可靠。我觉得这也会延长硬件寿命。当然,网络可靠性问题就会成为您的问题。
我有一个通过 U 盘运行 windows 的系统(它是专有机器)。这类机器一般都是'pulling the plug'断电。没法绕,就是这么操作的
我们偶尔会在 USB 记忆棒上出现驱动器损坏,或者至少在我们写入内容的目录中出现损坏。除了 'write as little/infrequently as possible' 之外,真的有任何软件解决方案可以解决这个问题吗?
这是一台 windows 机器,写入的应用程序通常用 Java/C# 编写,如果这对任何人都有用的话。损坏通常显示为写目录或写目录的父目录,由于损坏而无法再访问。唯一的处理方法是通过命令行删除它并重新开始。
有没有办法以编程方式处理这种情况,或许可以恢复内存的先前状态,而不是删除并重新开始?
鉴于我们目前的设计,我觉得好像没有任何方法可以防止此类事情发生。如果您进行了足够多的写入并不断拔下插头,您最终会出现损坏,这就是事实。特别是在这个设计中。即使备用电池已充电,如果软件未在电池放电时间内正常关闭,损坏仍可能发生。更不用说上面所说的 gravitymixes 最终会损坏我们之前看到的硬件。
整个项目需要考虑重新设计系统。立即想到某种类型的网络解决方案,其中数据从易失性机器发送到具有更可靠电源的机器上,通过可靠的网络连接记录到实际易失性机器上的磁盘作为最后的努力,如果网络通信在给定时间点(回填)不可靠。我觉得这也会延长硬件寿命。当然,网络可靠性问题就会成为您的问题。