![LVM 快照 - 新数据是否会被以前的数据替换?](https://linux22.com/image/191565/LVM%20%E5%BF%AB%E7%85%A7%20-%20%E6%96%B0%E6%95%B0%E6%8D%AE%E6%98%AF%E5%90%A6%E4%BC%9A%E8%A2%AB%E4%BB%A5%E5%89%8D%E7%9A%84%E6%95%B0%E6%8D%AE%E6%9B%BF%E6%8D%A2%EF%BC%9F.png)
据我了解,LVM 快照在创建时就有一个大小。根据 LVM 手册页,快照可能会耗尽其所有空间并变得不可用(除非扩展)。但它的空间是如何被用完的呢?
假设:我在源(原始逻辑卷)上有一个 10M 的文件。当我创建快照时,它将是相同的。我在源文件中附加了一些数据。现在文件大小为15M。如果我再次做同样的事情,将 15M 文件大小变为 20M,那么 15M 文件会替换快照上的 10M 文件吗?如果没有,那么快照以什么方式耗尽其可用空间?
答案1
写时复制 LVM 快照包含快照与源之间的差异。因此,每次对其中任何一个进行更改时,更改都会添加到快照中,从而可能会增加快照中所需的空间。 (“可能”是因为对先前更改已快照的块的更改不需要更多空间,因此它们会覆盖先前的更改 - 目标是跟踪当前差异,而不是所有更改的历史记录。)
LV 不知道存储在其中的数据的结构。将 5MiB 附加到文件会导致至少 5MiB 的更改写入源,因此需要将更改的块添加到快照中(以保留其快照内容)。将另外 5MiB 写入文件会导致(至少)对源进行另外 5MiB 的更改,从而导致将类似数量的数据写入快照(同样,以保留原始内容)。这内容如快照中所示,文件或卷的内容永远不会因源的更改而更改。