(这有点像我昨天遇到的问题是由于复制时删除而丢失了数据)
我已经知道 NTFS 不能很好地处理意外删除。较新的基于 Unix 的文件系统(如 btrfs、ZFS、ext4 或 nilfs2)在这方面做得更好吗?事后文件恢复的可能性会更高吗?
答案1
切断驱动器电源本身就很危险。无论你选择哪种文件系统,你都很有可能最终导致数据损坏。
有些文件系统比其他文件系统更能处理这个问题。有些文件系统使用日记. 为了最大程度地保证安全,您需要一个可以记录元数据(例如目录条目)的文件系统和数据,另外还使用了写屏障。这会带来(有时是相当大的)性能损失。
使用数据日志记录(并适当使用屏障),对文件的任何写入要么成功,要么失败。这为您提供了在复制过程中断电时避免损坏的最佳机会。仍然需要检查文件系统并重播或跳过日志条目,但这应该相当快。显然,这很可能会让您处于仅成功复制部分文件的状态。像同步或者泰拉复制可以帮助您。
在您列出的文件系统中,NTFS 仅记录元数据。ext3 和 ext4 提供选修的除了元数据日志记录之外,还有数据日志记录(以性能为代价)。btrfs 和 zfs 使用不同的方法,即写时复制,它应该提供与数据日志记录类似的好处。nilfs2 是一个连续快照文件系统,但我对它了解不够,无法评论它在这种用例中的可行性。
如果您担心断电期间数据丢失,您可能需要考虑使用 UPS。一些 RAID 卡还允许电池备份,这可能很有用,具体取决于您的具体使用情况。
答案2
ZFS 当然可以应对复制过程中的断电问题。
如果没有提交,要写入的数据将在事件期间丢失,但以前的文件数据和整个文件系统(作为事务性的)不会受到影响并且在设计上保持清洁。