LVM快照与文件系统快照


32

据我所知,LVM可以为卷拍摄快照。还有许多支持快照的文件系统(ZFS,Btrfs,reiserfs等)。

但是,我从未了解LVM快照和文件系统快照之间的区别。如果可以使用LVM拍摄快照,为什么有人花时间在文件系统中实现快照?

编辑:在某些情况下,其中任何一个都是首选的吗?为什么?

Answers:


25

这些快照中的大多数是写时复制快照,在很少更新的系统上,它们确实非常快而且便宜(在存储方面)。LVM快照是COW快照,ZFS / BTRFS都有快照的COW模式,reiserfs本身没有快照,Novell的NSS文件系统也是COW,Windows NTFS卷的卷影副本也是如此。

写入时复制快照将目标卷的元数据的副本复制到快照池中。然后,根据使用的COW模式,他们将在写新数据之前将被新写操作覆盖的数据复制到快照池。

ZFS和BTRFS(最终如果没有的话)具有完整的快照功能,这对于捕捉到单独的介质很有用,这反过来对于使用可移动介质的便秘网络备份系统非常方便。ZFS不会将其称为“快照”,而是利用ZFS的功能来使用zfs sendzfs recv通过网络将卷和快照复制到远程主机(或本地阵列)。

与LVM相比,我更喜欢文件系统级快照功能,因为我更好地相信文件系统本身可以干净地处理该过程。但是,由于缺乏直接的文件系统支持,因此LVM在大多数情况下应该可以正常工作。

如果您需要为快速的短期恢复需求而非常快速地进行时间点备份,则COW快照非常有用。例如每天进行一次,或每天进行4次,请保持一周。如果您需要恢复用户意外删除的文件,或者需要将整个系统回滚到更新前的配置,这将很方便。它们还可以被某些备份系统用作完全静止的文件系统,因此快照卷获取的备份不必担心打开的文件会受到干扰。要记住的关键是快照卷将与主卷位于同一存储上,因此在阵列故障的情况下不要给您任何东西。

如果将快照带到某种可移动或远程介质中,则快照非常有用。如果您具有网络存储,则目标可能是与主存储所在的iSCSI或光纤通道阵列不同的iSCSI。这可以为某些类型的故障提供阵列外保护。如果使用可移动媒体,例如3TB ESATA驱动器,您甚至可以将其用作简单的磁盘备份系统。这些快照可能与COW兄弟不在同一硬件上,因此对于灾难恢复很有用。


在完整快照与COW快照上。

多年来,“快照”一词已经有些漂移。今年,我非常确定它的意思是“使用块重定位对原始数据进行写时复制”。根据此定义,上面显示的“完整”快照实际上不是快照,而是复制。某些存储供应商过去使用“快照”的不同定义来描述他们执行的各种块级操作。使用快照作为复制过程一部分的系统会引起混乱。


“一个简单的事实是,文件系统级快照优于通过LVM的快照,因为文件系统知道如何在快照过程中保持自身的一致性,而LVM可以做到这一点”,实际上,事实并非如此。检查出来:serverfault.com/questions/300961/...
poige

1
«ZFS和BTRFS(最终,如果还没有的话)具有完整快照功能»—您应该解释“完整”快照的含义。AFAIK,使用ZFS的快照没有“ COW / full”选项。所有快照都是COW,但是以后可以将其作为整个文件系统或卷保存在单独的介质上。
jlliagre

5

LVM需要预先计划。我倾向于不使用它,因为它也是抽象的另一层,在我需要时很少可用。但是,还有其他选项可以在不使用LVM的情况下在文件系统级别(Linux)进行克隆。您可以使用R1Soft的热复制来执行此操作。这是一个内核模块,但是使您能够即时添加此功能。


3

非常清楚的问题:由于LVM“不知道”关于FS的任何信息,因此不能保证 LVM的快照具有一致的FS 状况

编辑(请参见评论):—除非FS支持.freeze_fs,否则为true ,否则应由FS妥善处理。


2
假; LVM会在拍摄快照之前促使文件系统自我同步。
womble

1
@womble:即使在之后sync,快照也与已安装的文件系统完全相同;因此,当您安装它时,它会显示为“不是干净地卸载”(因为它没有被卸载),因此必须先执行一些纠正措施。当然,通常只是日志重播,在之后sync,应该是空的重播;因此没有数据丢失的危险。
哈维尔

1
@womble,1)同步是不够的,因为在同步和LVM的快照处理之间将有一个新I / O请求的窗口。它需要某种阻止。2)XFS具有称为“冻结”(xfs_freeze is intended to be used with volume managers and hardware RAID devices that support the creation of snapshots.)的特殊功能—快照的特殊功能,LVM-2是否知道并已经使用它?3)告诉我在用户空间(sources.redhat.com/cgi-bin/cvsweb.cgi/LVM2/?cvsroot=lvm2)或内核源代码中的什么地方,我可以证明您是正确的告诉我们LVM生产FS同步。
poige 2011年

9
好的,我已经完成了作业,现在可以回答问题的第3部分-实际上,LVM使用内核的freeze_bdev(),正如其标题中所述lock a filesystem and force it into a consistent state。因此,至少我可以说我可能说错了“不能保证拥有一致的FS”,因为这是在FS实现中支持freeze_fs“方法”的问题-某些FS当然具有这种支持(EXT3,Reiser3,XFS),而有些则不是(例如EXT2)。此外,它回答了第二个问题-XFS的冻结很可能由LVM自动处理。
poige

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.