这是LVM快照如何工作?

我试图找出如何LVM快照的工作,所以我可以在我的文件服务器上实现它,但我很难find任何解释它如何工作的谷歌,而不是如何使用它的基础备份系统。

从我读到的,我认为它是这样的:

  • 你有一个主分区的LVM,还有许多未分配的可用空间不在分区中
  • 然后,您拍摄一张快照并将其挂载到一个新的逻辑卷上。 快照应该有变化,所以这第一个快照将是一个完整的副本,是正确的?
  • 然后,第二天你拍另一个快照(这个分区的大小不必太大)并挂载它。
  • 不知何故LVM会跟踪快照,并且不会在主卷上存储不变的位。
  • 然后你决定你有足够的快照,摆脱第一个。 我不知道这是如何工作,或如何影响下一个快照。

有人能纠正我在哪里我错了。 充其量,我猜,我找不到任何东西在谷歌上。


vgdiplay

 obu1:/ home / jail / home / qps / backup / D#vgdisplay
   ---卷组---
   VG名称fileserverLVM
  系统ID
  格式lvm2
  元数据领域1
  元数据序列号3
   VG访问读/写
   VG状态可resize
   MAX LV 0
   Cur LV 2
  打开LV 2
  最大PV 0
   Cur PV 1
  法PV 1
   VG尺寸931.51 GB
   PE大小4.00 MB
  总计PE 238467
   Alloc PE / Size 238336 / 931.00 GB
  免费PE /大小131 / 524.00 MB
   VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

Wny没有看看LVM-HOWTO的快照部分 ?

LVM快照是您的基本“写入时复制”快照解决scheme。 快照实际上只不过是要求LVM为您提供一个指向文件系统当前状态的“指针”,并将快照之后所做的更改写入指定区域。

LVM快照在承载快照卷的卷组内“活动”,而不是另一个卷。 你的陈述“……大量的未分配的可用空间而不是分区”使得听起来像你的想法是快照在“快照”的卷组之外“活”,这是不准确的。 您的卷组位于硬盘分区中,卷的快照以及您在卷组中生存的任何shapshots。

使用LVM快照的正常方式不是为了长期存储,而是为了获得文件系统的一致“图像”,以便可以进行备份。 一旦完成备份,快照将被丢弃。

当您创buildLVM快照时,您可以指定一个空间量来保存快照处于活动状态时所做的任何更改。 如果进行了更多的更改,那么您的快照变得不可用,必须丢弃。 您不想留下快照,因为(a)它们会填满并变得无法使用;(b)当快照处于活动状态时,系统的性能会受到影响 – 速度会变慢。

编辑:

Microsoft卷影复制服务和LVM快照的function并没有太大的不同。 微软的解决scheme更全面一些(微软通常就是这种情况),无论他们的工具和产品经常试图解决相当大的问题,而不是集中在一件事情上。

VSS是一个更全面的解决scheme,它将支持快照和基于软件的快照的硬件设备统一到一个API中。 此外,VSS具有API以允许通过快照API使应用程序静止,而LVM快照仅关注快照 – 任何停顿的应用程序都是您的问题(将数据库置于“备份”状态等)。

埃文说,LVM快照是写时复制快照解决scheme的一个例子。 它的工作方式与Evan所暗示的有所不同,但不是很多。

如果您的LVM卷没有快照,则按照您的预期写入卷。 块被改变了,就是这样。

只要创build快照,LVM就会创build一个块的池。 此池还包含卷的LVM元数据的完整副本。 当主卷发生写入操作(例如更新inode)时,被覆盖的块将被复制到新的池中,并且新的块被写入主卷。 这是“抄写”。 因此,获取快照和主卷的当前状态之间的数据变化越多,该快照池将占用的空间就越多。

装载快照时,获取快照时写入的元数据允许将快照池块映射到卷(或更高级别的快照)中更改的块上。 这样,当一个特定块访问时,LVM知道哪个块访问。 就卷的文件系统而言,没有快照。

詹姆斯指出了这个系统的一个缺点。 当有多个相同卷的快照时,每次写入主卷中的块时都可能触发每个快照中的写入操作。 这是因为每个快照维护自己的更改块的池。 而且,对于长的快照树,访问快照可能导致服务器上的相当多的计算,以确定需要为访问提供哪个确切块。

处理快照时,LVM只会删除快照池并根据需要更新快照树。 如果删除的快照是快照树的一部分,则某些块将被复制到较低级别的快照中。 如果它是最低的快照(或者唯一的一个),那么池就会被丢弃,操作非常快。


有些文件系统确实提供了文件系统快照,ZFS和BTRFS只是其中两个最知名的文件系统。 他们的工作方式类似,尽pipe文件系统本身pipe理更改/未更改的映射。 这可以说是一个更好的方法,因为您可以使整个快照族保持一致性,这是直接使用LVM无法做到的。

您不指定是使用Linux还是使用HP-UX。 在HP-UX中,创build一个逻辑卷并将其装载为另一个逻辑卷的快照。 在Linux中,您将创build一个逻辑卷作为快照卷。

在HP-UX中删除快照是通过卸载卷来完成的; 在Linux中,通过使用lvremove删除逻辑卷来完成。

无论如何,这些更改是唯一存储在快照中的内容。 快照可用的时间越长,它所储存的更多的变化 – 如果没有适当的大小或释放,它有可能填满的机会。

快照卷上的磁盘访问速度比正常卷慢; 你必须考虑到这一点。

LVM快照效率低下,快照越多,系统就越慢。

我只支持xfs,因为我们使用的是xfs_freeze,可以用来暂停对文件系统的新访问,并在磁盘上创build一个稳定的映像。

使用写入复制function可以有效地使用光盘空间。

您已经在逻辑卷中创build了一个文件系统,其中有快照的空间。

这是FAQ中的一个例子