我正在开发一个系统,它在虚拟机内的NTFS上复制和写入文件。 VM可以随时断电(直接关机)。断电是从外部控制的,所以我没有办法检测它。由于文件和完整的目录正在被写入迷路。有没有办法防止这种情况,或者我是否必须开发自己的文件系统?我必须将文件存储在本地磁盘上,不能通过网络发送文件。
答案 0 :(得分:1)
在您的数据写入(发送到API)和将此数据写入物理硬件之间始终存在[短]时间。如果系统在中间崩溃,数据将丢失。
Windows中有一个设置可禁用某些磁盘的系统写入缓存。此设置可帮助您确保数据至少发送到主机的硬件。可能这就是你一直在寻找的答案。
编写自己的文件系统无济于事,因为它主要是写入缓存导致数据丢失。但是,也可以存在文件系统级缓存,我不知道上面提到的写缓存设置是否也会影响内部文件系统缓存。
答案 1 :(得分:0)
如果您将数据写入使用&#34打开的文件;请通过"启用后,该方法仅在数据物理写入磁盘后才返回,因此您可以确定它已写入。通常通过在打开文件时传入WRITE_THROUGH标志来执行此操作。