我正在为一个必须不断向存储设备写入信息的设备做一个项目。该设备将需要能够断电,但准确地保留它收集的信息,直到断电时间。
我一直在寻找答案,如果像这样的系统断电会发生什么。断电不关闭文件有什么问题吗?是否存在数据损坏的可能性?
谢谢
发布于 2013-05-30 20:23:32
“在断电时安全地存储数据”的整个主题很难用通用的方式解决-确切的解决方案将取决于确切的数据类型,数据的存储速率等。
要在断电时保留信息,需要将数据存储在非易失性存储器(闪存、eeprom或电池供电的RAM)中。同样,这是一个硬件解决方案。
如果你可能“丢失写入文件的数据”?是的,如果系统在写入过程中文件存储设备断电,则完全有可能无法正确写入文件。
这个问题的答案实际上取决于你有多大的自由度来构建/定制硬件来应对这种情况。为高可靠性设计的系统将有一种方法来检测断电,并在断电后仍然运行几秒钟(有时更长),当断电发生时,它将进入“保存所有数据,并正常关闭”模式。通常,这是通过使用不间断电源(UPS)来完成的,UPS具有一个警报机制,通知外部电源已耗尽,当系统接收到此信号时,开始紧急关机。
如果你没有任何方法连接UPS并以有序的方式关闭,那么还有其他功能,如日志文件系统,可以给你一个很好的数据集,但它不能保证给你完整的数据(并且你需要处理你的文件格式,以便“切断数据”不会完全破坏文件-典型的例子是zip- file,它存储在文件的最后的“目录”(内容列表)。因此,您可以完成99.9%的文件,但缺少的0.1%是解码所有内容所需的。
发布于 2013-05-30 20:29:31
是的,数据损坏肯定是有可能的。
然而,有一些指导原则可以用纯软件的方式最小化它:
ext3/ext4,使用data=journal )。sync/syncfs/fsync系统调用或使用sync挂载option).这样,即使您丢失了数据,它也只会写入最后几个字节,并且文件系统一般不会损坏。
您会注意到,我假设的是Unix-y操作系统。据我所知,Windows没有给你足够的控制权来对文件系统施加这种约束。
https://stackoverflow.com/questions/16835529
复制相似问题