这是LVM快照的工作方式吗?


19

我试图弄清楚LVM快照是如何工作的,所以我可以在文件服务器上实现它,但是我很难在google上找到任何说明它如何工作的信息,而不是如何将其用于基本备份系统。

根据我的阅读,我认为它的工作原理如下:

  • 您有一个具有主分区的LVM,并且该分区中没有很多未分配的可用空间
  • 然后,您拍摄快照并将其安装在新的逻辑卷上。快照应该已更改,因此第一个快照将是完整副本,对吗?
  • 然后,第二天拍摄另一张快照(该分区的分区不必太大)并安装它。
  • LVM会以某种方式跟踪快照,并且不会在主卷上存储未更改的位。
  • 然后,您确定您有足够的快照并删除第一个快照。我不知道这是如何工作的,或者将如何影响下一个快照。

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


vgdiplay

obu1:/ home / jail / home / qps / backup / D#vgdisplay
  -卷组-
  VG名称文件服务器
  系统编号
  格式化lvm2
  元数据区1
  元数据序列3
  VG Access读/写
  VG状态可调整大小
  最大LV 0
  Cur LV 2
  打开LV 2
  最大PV 0
  固化PV 1
  法案PV 1
  VG大小931.51 GB
  PE大小4.00 MB
  总计PE 238467
  Alloc PE /大小238336 / 931.00 GB
  免费PE / 131 / 524.00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

Answers:


30

不会看看LVM-HOWTO快照部分吗?

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

LVM快照在包含该快照的卷所在的卷组内部“活动”,而不是另一个卷。您的语句“ ...有很多未分配的可用空间,而不是分区”,这听起来像是您认为快照“活”在受快照限制的卷组之外,这是不正确的。您的卷组位于硬盘分区中,并且该卷将受快照和您拍摄的所有快照的影响。

使用LVM快照的通常方法不是用于长期存储,而是用于获取文件系统的一致“图片”,以便可以进行备份。备份完成后,快照将被丢弃。

创建LVM快照时,您需要指定一定的空间来容纳快照处于活动状态时所做的所有更改。如果进行的更改多于您为快照指定的空间,则该空间将无法使用,必须丢弃。您不希望留下快照,因为(a)快照将填满并变得不可用,并且(b)快照处于活动状态时,系统的性能会受到影响-事情变慢了。

编辑:

Microsoft卷影复制服务和LVM快照的功能并没有太大的不同。Microsoft的解决方案更为全面(与Microsoft的情况一样,无论好坏,他们的工具和产品通常都试图解决相当大的问题而不是专注于一件事)。

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


1
因此,它不是在卷影复制(VSS)之后真正建模的,因为那不是VSS的工作方式?
Malfist

这更有意义。
Malfist

1
我认为您在某种程度上误解了LVM快照。LVM快照创建“虚拟”设备,它们像独立卷一样安装,但实际上不是“分区”。LVM快照“驻留”在要快照的卷中,就像VSS快照一样。
埃文·安德森

1
您能否澄清快照处于活动状态时更新的数据在哪里?到主LV和快照存储旧块的副本?还是快照LV,而主LV保持不变?
贝诺瓦2012年

1
@benoit答案第一行中的链接涵盖了这一点。阅读有关LVM1只读快照行为的说明,我想您会找到答案的。(这是您描述的第一种方法,而不是第二种。)
Peter Hansen

28

如Evan所说,LVM快照是写时复制快照解决方案的一个示例。它的工作方式与Evan所暗示的有所不同,但没有很大的不同。

当您有没有快照的LVM卷时,对该卷的写入将按您的期望进行。块已更改,仅此而已。

创建快照后,LVM会立即创建一个块池。该池还包含该卷的LVM元数据的完整副本。当对主卷进行写操作(例如更新inode)时,将被覆盖的块复制到该新池中,并将新块写入主卷。这是“写时复制”。因此,从拍摄快照到主卷的当前状态之间更改的数据越多,该快照池将占用更多的空间。

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

詹姆斯指出了该系统的故障之一。当您具有同一卷的多个快照时,每次您写入主卷中的一个块时,都有可能触发每个快照中的写入。这是因为每个快照都维护自己的已更改块池。同样,对于长快照树,访问快照可能会导致服务器上的大量计算,从而弄清楚需要为访问提供确切的块。

处置快照时,LVM只会删除快照池并根据需要更新快照树。如果删除的快照是快照树的一部分,则某些块将被复制到较低级别的快照。如果它是最低的快照(或唯一的快照),则仅删除该池,并且操作非常快。


某些文件系统确实提供了文件内快照,ZFS和BTRFS只是其中两个比较知名的快照。尽管文件系统本身管理已更改/未更改的映射,但它们的工作原理类似。可以说这是一种更好的实现方式,因为您可以为整个快照系列选择fckck以实现一致性,而使用直接LVM则无法做到这一点。


感谢您的详细解释。抱歉,我很困惑“就该卷上的文件系统而言,没有快照。” 您能详细解释一下这是什么意思吗?非常欣赏任何响应〜
卡尔

2
@Carr意味着快照完全在文件系统之外处理。内置快照功能的其他文件系统(例如BTRFS和XFS)确实具有快照的概念,因此不应将LVM快照与这些系统一起使用。
sysadmin1138

@ sysadmin1138我很好奇您提到的XFS的内置快照,用于FS的一致性检查/修复。我有一个多TB XFS FS,它以肮脏的方式崩溃了,我想检查/修复它,而又不使其脱机(数百个用户,几个小时无法脱机)。我正在考虑创建XFS快照,然后在实时文件系统保持在线的同时对其运行fsck来查找/修复错误,然后进行修复,请与实时文件系统交换。为此,XFS快照会比LVM快照更好吗?
扬拉林斯基

2

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

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

无论如何,更改是存储在快照上的唯一内容。快照保持的时间越长,存储的更改越多-如果大小或释放不当,快照可能会被填满。

快照卷上的磁盘访问速度比普通卷慢。您必须考虑到这一点。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.