我正在开发一个在虚拟机内的NTFS上复制和写入文件的系统。虚拟机可以随时断电(直接关机)。断电是从外部控制的,所以我没有任何方法来检测它。由于正在写入的文件和完整目录会丢失。有没有办法防止这种情况发生,或者我必须开发自己的文件系统?我必须将文件存储在本地磁盘上,无法通过网络发送文件。
发布于 2015-11-22 06:30:43
在您的数据被写入(发送到API)和此数据被写入物理硬件之间始终存在一段很短的时间。如果系统在中间崩溃,数据将会丢失。
Windows中有一项设置,可禁用某些磁盘的系统写缓存。此设置可帮助您确保至少将数据发送到主机的硬件。这可能就是你一直在寻找的答案。
编写自己的文件系统不会有太大帮助,因为主要是写缓存导致数据丢失。不过,也可以存在文件系统级缓存,我不知道我上面提到的写缓存设置是否也会影响内部文件系统缓存。
发布于 2017-02-06 15:03:47
如果您将数据写入启用了"write through“的文件,则该方法仅在数据以物理方式写入磁盘后才返回,因此您可以确保数据已写入。通常通过在打开文件时传入一个WRITE_THROUGH标志来实现。
https://stackoverflow.com/questions/33843713
复制相似问题