fsfreeze 和 lvm 快照之间的区别

fsfreeze 和 lvm 快照之间的区别

我最近听说fsfreeze并且非常有兴趣使用 VMware 为我的虚拟机制作快照,并使用静态获得一致的磁盘状态。我的所有文件系统都是 LVM 卷,并man fsfreeze提到:

fsfreeze 对于设备映射器设备来说是不必要的。当请求创建快照时,设备映射器(和 LVM)会自动冻结设备上的文件系统。有关更多详细信息,请参阅 dmsetup(8) 手册页。

但我发现fsfreeze比需要评估快照大小的复杂 LVM 工具更容易使用。

问题

  • 有区别吗?
  • 我仍然可以对 LVM 卷使用该命令吗?或者也许是物理 LVM 卷?
  • 或者我被迫使用该lvm命令?

关于赏金的附加问题

如果用于备份 mysql/oracle/postgrSQL DB,fsfreeze 或 lvm 快照能否确保快照一致?

更多信息

这里的例子很简单,但你需要理解所有的概念。
VMWare 能够非常快速地拍摄虚拟机快照(不到 5 秒),并在该快照之前和之后执行脚本来稳定虚拟机状态并获得一致的虚拟机快照。我不关心是否能够以只读方式挂载 lvm 快照,而且我不想这样做,因为它们受到磁盘大小等的限制。我想要的是fsfreeze我的文件系统和虚拟机快照并释放锁。
在这种情况下,是否可以使用fsfreezelvm 快照来代替(它更复杂并且与磁盘空间相关联。

答案1

man fsfreeze

-f, --freeze

This option requests the specified a filesystem to be frozen from new 
modifications. When this is selected, all ongoing transactions in the filesystem 
are allowed to complete, new write system calls are halted, other calls which 
modify the filesystem are halted, and all dirty data, metadata, and log information 
are written to disk. Any process attempting to write to the frozen filesystem will 
block waiting for the filesystem to be unfrozen.

要进行备份,从已安装的文件系统中一直进行随机修改,在备份期间冻结 I/O 只是要做的工作的一部分。这是因为,除非文件系统非常小,或者您有一个非常快的备份设备,否则您肯定无法在整个备份期间冻结整个文件系统。

因此,fsfreeze仅凭一己之力很可能不足以做你想做的事。另一方面,LVM 快照正是这项工作所需要的:“制作备份”只需要几秒钟,然后您可以花时间将该备份(快照)实际复制到某个慢速备份设备,如下所示LVM 快照将处理在此长时间备份过程中发生更改的文件系统块。唯一fsfreeze需要的部分是快照创建部分,但该部分已经由 LVM 本身透明地处理,因此,总的来说,您需要注意的就是 LVM 快照。

对于性能良好的 RDBMS(例如 Oracle 及其同类)来说,使用类似的文件系统冻结或块设备快照功能进行的备份被认为足够一致,但是,您必须确保所有数据库文件同时被冻结/快照时间点。如果多个文件系统/LVM 卷受到影响,则可能需要 RDBMS 的帮助。例如,Oracle 提供了一个BACKUP MODE,它可以实现类似于冻结的功能fsfreeze,但是是在数据库级别。

答案2

正如@Laszlo 指出的,冻结只是备份过程的一部分。您首先冻结文件系统,以强制将所有即将写入磁盘的缓冲信息刷新到磁盘。当文件系统被冻结时,在备份过程中文件系统上的数据不会发生更改。冻结文件系统后,您可以使用 tar、dd、dump 或其他方式继续备份(我不是备份解决方案专家)。另外,我不会冻结文件系统,而是在备份之前将文件系统重新挂载为只读(如果可以的话)。

创建 LVM 快照时,无需冻结文件系统;设备映射器会为您处理它。创建快照并不那么困难。为 /dev/mapper/centos-root LVM 逻辑卷创建大小为 2GB 的快照的命令是:

lvcreate -L 2G -n root-snapshot -s /dev/mapper/centos-root

从快照恢复的命令是:

lvconvert --merge /dev/mapper/centos-root-snapshot

请注意,在将快照合并回其原始卷时,如果原始卷处于活动状态,则合并将在下次重新启动时进行。合并后快照将不再存在。

现在有几句话警告。文件系统的 LVM 快照副本是虚拟副本,而不是文件系统的实际介质备份。由于 LVM 快照依赖于原始卷中未更改的数据,因此它们不能替代备份过程。

LVM 快照使用 COW(写时复制)策略。您拍摄的初始快照仅包含实际数据索引节点的硬链接。只要数据保持不变,快照就只包含其 inode 指针,而不包含数据本身。每当您修改快照指向的文件或目录时,LVM 都会自动克隆数据、快照引用的旧副本以及活动系统引用的新副本。

如果要创建 LVM 逻辑卷的备份(而不是快照)在这里查看实现它的几种方法

此外,如果 LVM 快照已满,则该快照将变得无效,因为它无法再跟踪原始卷上的更改。因此,您应该定期监控快照的大小并增加快照卷的大小(快照是完全可调整大小的)以防止其丢失;或者,如果您发现快照卷大于您的需要,您可以减小其大小并释放空间。

答案3

您确定需要冻结 fs 吗?我还没有听说过 ESXi 上的 Linux 静默快照问题——而且我肯定听说过 vm-tools 将允许 Linux 虚拟机通过,嗯,不是 fsfreeze 正确静默,但我认为它是更多的是一个非常短的暂停操作。

我自己也不需要在 ESXi 中运行的静态实时 Linux 虚拟机上出现快照问题。我们正在使用 EMC(强制使用 3par),并且在 ESXi5 上的两者上,我没有听到我的团队或客户提出任何建议,表明快照与我们预期的不符(当时机器的良好图像) )。我应该担心吗?你应该?

相关内容