linux内核:如何在恐慌之前复制文件?

时间:2014-11-18 08:27:07

标签: file file-io linux-kernel filesystems embedded-linux

我在tmpfs分区上有一个文件,它有很多更新。 我想在崩溃/重启之前将其复制到其他分区(闪存分区)。

不能将此文件保留在闪存分区的第一位, 因为这个闪存具有有限的读/写生命周期,我试图避免过多的读/写操作。 太多写入会损坏闪存,这就是文件在tmpfs上的原因。

重新启动重启 - 我可以修改重启过程以在重启前复制 - 有更简洁的方法吗?

重新崩溃 - 我不知道有什么方法可以做到这一点。有任何想法吗? 我知道我不应该搞乱内核空间中的文件。

由于

1 个答案:

答案 0 :(得分:1)

只有内核恐慌可能导致内核数据结构已损坏且不可靠。理想情况下,如果您使用的版本是稳定且经过测试的版本,则您的内核不会出现混乱。我建议使用崩溃工具捕获vmcore,并与供应商一起解决内核恐慌的根本原因。

但是,如果您指的是电源故障导致系统突然关闭,这可能会导致内存中存储的数据/文件丢失,您可以编写一个cron-job来将文件同步到磁盘上间隔并调整内核的脏页同步频率。话虽如此,如果您要写入的文件非常重要,为什么要将其设计为首先保存在内存中。

您应该每隔几秒或定期将此文件同步回磁盘一次。这样您就不会丢失完整的数据。

由于tmpfs文件的读/写次数很多,因此可能需要考虑使用SSD来实现此目的。了解文件系统事务日志如何配置为存储在SSD驱动器上。

编写一个cron-job,用于以频繁的间隔或在有更新时将tmpfs文件同步到SSD或磁盘。您可能需要考虑更改某些内核可调参数(例如,vm.dirty_expire_centisecs=0vm.dirty_background_ratio=0),以便任何脏页面立即同步到磁盘。需要注意的是,这样做会导致更高的CPU%和I / O负载,因为页面会经常同步到磁盘,尽管数据丢失会保持最小。