断电后的零字节文件 – ext4 centos 6.4

在电源故障后一分钟内写入的文件在系统返回时为零字节。 testing一个我们不能保证的系统将有UPS备份。

Centos 6.4
内核2.6.32-358.14.1.el6.x86_64
ext4默认安装

看到这发生在2个不同的系统(我已经尝试过的唯一两个系统)

第一款采用PERC h710控制器的RAID 6和4个3TB硬盘。
它发生与没有lvm
它发生在写入和回写caching中。

第二个没有RAID控制器的2TB磁盘
只testing没有lvm

如何防止这个build议?

根据你的描述,这听起来像操作系统没有刷新你的数据到磁盘,因为你有文件元数据,没有任何内容/长度。

写(2)不能保证你的数据已经到达磁盘(除非你打开(2)你的文件与O_DIRECT),你在OS /文件系统的要求,当它决定刷新数据/元数据到磁盘。 为了保证您的数据安全地被隐藏起来,您有两种select:

  • fsync(2)/ fdatasync(2)并检查它是否成功返回
  • closures(2)并检查它是否成功返回

在这方面的一个重要警告是caching(可能或不可能)在驱动器和RAID控制器上都有电池支持,特别是有一些驱动器将把你的写入到内部RAMcaching中,并声明它们已经写入,其中存在一些时间窗口,在这个时间窗口,电力损失会使你的数据丢失。