答案1
当您执行 LVM 快照时,挂起的数据(在内核缓冲区中,而不是应用程序中)将刷新到磁盘,并且在快照正在进行时应用程序将被阻止写入。如果您通过某种外部方式备份 FS 所在的块设备(例如磁盘是虚拟的,并且您在主机上备份它),则也可以使用 或 来以相同的方式冻结fsfreeze
FS xfs_aio
。实现快照的文件系统(如 BTRFS、NILFS、ZFS...)也会这样做。一般来说,这些级别的快照确实可以保证快照中的数据是在给定时间提交给 FS 的数据的即时冻结,并且冻结的 FS 处于一致的干净状态。
至于告诉应用程序停顿和刷新他们的将数据缓冲到 FS,没有通用框架,而且我上次检查时,普遍的共识是,引入不必要的复杂性和相关错误更有可能造成损害,而不是改善问题,因为应用程序应该专注于使数据保持一致的形状无论如何,磁盘以防系统/硬件崩溃。
某些应用程序(例如某些数据库)可以像 MySQL 那样被告知停止运行FLUSH TABLES WITH READ LOCK
。