尝试理解lvm快照

尝试理解lvm快照

我在 lvm tuto 中看到了“cow”的提及,这让我很困惑,因为它让我一直认为快照 vol 的行为就像 overlayfs 或其他 cow fs,在修改原始 vol 中的内容后,更改会被写入其中。

  1. 那么实际上,快照卷在原始文件被修改后会保留卷中文件的原始副本吗?我这样理解对吗?

  2. btrfs 快照也可以这样工作吗?

  3. 据说我对修改更感兴趣,我只想获取修改后的文件和原始卷中所做的其他更改,例如增量备份,有什么更好的方法来做到这一点?

答案1

你不能真正将 LVM 与 btrfs 进行比较,因为 btrfs 是一个文件系统,对文件进行操作,而 LVM 在块层操作,对磁盘块进行操作。 LVM 卷通常包含文件系统,但 LVM 本身对文件一无所知。

LVM 在块级别执行写时复制:创建快照后,第一次覆盖卷中的特定块时,该块的旧内容将首先复制到快照中。 LVM不知道也不关心数据是什么方法:无论它是文件、可用空间、内部文件系统结构还是其他什么的一部分。它只是卷中特定位置的字节块。

这意味着快照保留了创建快照时整个 LVM 卷的原始内容。如果卷包含文件系统(通常是这种情况),则快照包含该文件系统过去存在的副本。您可以挂载文件系统的历史副本并访问文件的旧版本;它完全独立于具有文件系统“当前”副本的主卷。

如果您想查找卷和快照之间的文件差异,则需要安装两个文件系统并使用其他工具来比较两组文件。由于 LVM 对文件一无所知,因此它无法告诉您快照中存储的历史块数据包含哪些文件。

相关内容