进行整个系统备份时同步卷快照

从LVM快照进行备份时,是否有一种方法可以保证卷之间的一致性? 考虑这种情况:

  • 一些系统升级正在进行中。 它会将一些文件写入/usr卷,一旦完成,就会在/var卷中logging成功。
  • 由于升级即将完成,我运行一个备份脚本,创build/usr/var卷的快照以及系统的其余卷,然后从这些快照创build备份 。
  • 就在升级的最后一次对/usr卷的写入/刷新完成之前,备份脚本将获取/usr快照。
  • 写入完成后,升级操作的成功会很快logging在/var的模糊深处。
  • 备份脚本获取/var的快照。
  • 备份脚本从它拥有的快照创build备份,呃快照。

所以这个tomfoolery的结果是,所得到的/usr备份包含一个缺less几位的文件,而/var备份包含指示该文件是完整的并被批准使用的元数据。

如果不深入研究这些操作系统的系统升级系统会被这些琐事所困扰的细节,有没有办法避免这样的问题呢? 至less这似乎可能会导致某些应用程序在恢复这种备份后意外失败。

这个问题比这个更一般。 即使有一卷获得快照,也无法保证该卷上的数据在文件级别上是有意义的。 LVM快照仅确保块级一致性。

确保文件处于一致状态的唯一方法是让您的应用程序将所有内容刷新到磁盘,并在创build快照时挂起写入。 如果您真的关心这一点,并且您的应用程序支持它,则应该将其脚本编写到您的备份过程中。

对于您的特定用例,为什么不确保在执行升级时备份不能运行? 在这段时间内禁用它,或者延迟它,直到升级完成。 至less要保持正在升级的文件的一致性。