6 LVM 卷快照 #
逻辑卷管理器 (LVM) 逻辑卷快照是一种写入时复制技术,它会监控现有卷数据块的更改,以便在对其中一个块执行写入操作时,将进行快照时块的值复制到快照卷。这样,便可保留数据的时间点副本,直到快照卷删除为止。
6.1 了解卷快照 #
文件系统快照包含有关自身的元数据以及在生成快照后更改过的源逻辑卷的数据块。通过快照访问数据时,您会看到复制来源逻辑卷的时间点。不需要从备份媒体恢复数据或重写更改过的数据。
在快照有效期内,必须先挂载快照,然后才能挂载其来源逻辑卷。
LVM 卷快照可用于从文件系统的时间点视图创建备份。快照是即时创建并永久保留的,直到您将其删除为止。您可以从快照备份文件系统,而卷本身仍可继续供用户使用。快照最初包含自身相关的一些元数据,但不包含来源逻辑卷的实际数据。快照使用写时复制技术在原始数据块中的数据发生更改时进行检测。当对快照卷中的块捕获快照时,它会复制所包含的值,然后允许在来源块中储存新的数据。随着来源逻辑卷上有更多块更改其原始值,快照大小将会增大。
调整快照大小时,请考虑来源逻辑卷中要更改的数据量,以及要保留快照的时间。您为快照卷分配的空间量因以下因素而异:来源逻辑卷的大小、计划保留快照的时间,以及在快照有效期中预期会更改的数据块数。快照卷创建后不能调整大小。从原则上说,应创建一个约占原始逻辑卷大小 10% 的快照卷。如果您预测在删除快照前,来源逻辑卷中的每个块都会至少更改一次,则快照的容量至少应相当于来源逻辑卷的容量加上部份额外空间,其中后者用于储存快照卷的相关元数据。如果数据更改不那么频繁或如果预期的有效期足够短,则需要的空间较少。
在 LVM2 中,快照默认为读/写。直接将数据写入快照时,该块在例外表格中标示为使用,不会从来源逻辑卷中复制。您可以装载快照卷,并通过直接将数据写入快照卷来测试应用更改。您可以通过卸载快照、去除快照,然后重新装载来源逻辑卷,轻松丢弃更改。
在虚拟 Guest 环境中,您可以使用快照功能用于在服务器的磁盘上创建的 LVM 逻辑卷,就如在物理服务器上一样。
在虚拟主机环境中,您可以使用快照功能来备份虚拟机的储存后端,或测试对虚拟机映像(例如用于修补程序或升级)进行的更改,而不必修改来源逻辑卷。虚拟机必须将 LVM 逻辑卷用做其储存后端,以免使用虚拟磁盘文件。您可以装载 LVM 逻辑卷,并将它用做文件型磁盘来储存虚拟机映像;也可以指派 LVM 逻辑卷做为物理磁盘,以便将其视为块设备进行写入操作。
从 SLES 11 SP3 开始,LVM 逻辑卷快照可以瘦配置。如果您创建没有指定大小的快照,则会使用瘦配置。创建为瘦卷的快照在需要时使用瘦池中的空间。快照瘦卷的特性与任何其他瘦卷相同。您可以独立地激活卷、扩展卷、重命名卷、去除卷,甚至可以创建卷的快照。
若要使用群集中瘦配置的快照,来源逻辑卷及其快照必须在单个群集资源中管理。这允许卷及其快照在同一个节点上始终独占性地装载。
当用完快照后,一定要将其从系统中删除。随着来源逻辑卷上数据块的不断更改,快照终将完全填满。填满时就会处于禁用状态,导致您无法重新装载来源逻辑卷。
如果您为一个来源逻辑卷创建多个快照,在去除最后创建快照之前,请先删除较旧的快照。
6.2 使用 LVM 创建 Linux 快照 #
可以使用逻辑卷管理器 (LVM) 创建文件系统的快照。
打开终端控制台,然后输入
tux >
sudo
lvcreate -s [-L <size>] -n SNAP_VOLUME SOURCE_VOLUME_PATH
如果不指定大小,快照会创建为瘦快照。
例如:
tux >
sudo
lvcreate -s -L 1G -n linux01-snap /dev/lvm/linux01
快照将被创建为 /dev/lvm/linux01-snap
卷。
6.3 监视快照 #
打开终端控制台,然后输入
tux >
sudo
lvdisplay SNAP_VOLUME
例如:
tux >
sudo
lvdisplay /dev/vg01/linux01-snap --- Logical volume --- LV Name /dev/lvm/linux01 VG Name vg01 LV UUID QHVJYh-PR3s-A4SG-s4Aa-MyWN-Ra7a-HL47KL LV Write Access read/write LV snapshot status active destination for /dev/lvm/linux01 LV Status available # open 0 LV Size 80.00 GB Current LE 1024 COW-table size 8.00 GB COW-table LE 512 Allocated to snapshot 30% Snapshot chunk size 8.00 KB Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:5
6.4 删除 Linux 快照 #
打开终端控制台,然后输入
tux >
sudo
lvremove SNAP_VOLUME_PATH
例如:
tux >
sudo
lvremove /dev/lvmvg/linux01-snap
6.5 在虚拟主机上使用虚拟机的快照 #
如果将 LVM 逻辑卷用做虚拟机的后端储存,可以让系统灵活地管理基础设备,例如更轻松地移动储存对象、创建快照和备份数据。您可以装载 LVM 逻辑卷,并将它用做文件型磁盘来储存虚拟机映像;也可以指派 LVM 逻辑卷做为物理磁盘,以便将其视为块设备进行写入操作。您可以在 LVM 逻辑卷上创建虚拟磁盘映像,然后创建 LVM 快照。
您可以利用快照的读/写功能创建虚拟机的不同实例,并在这些实例中更改特定虚拟机实例的快照。您也可以在 LVM 逻辑卷上创建虚拟磁盘映像、创建来源逻辑卷的快照以及修改特定虚拟机实例的快照。您还可以创建来源逻辑卷的另一个快照,并修改该快照以取得不同虚拟机实例。不同虚拟机实例的大部分数据与映像一起储存在来源逻辑卷上。
在 Guest 环境中,您还可以利用快照的读/写功能保留虚拟磁盘映像,同时测试修补程序或升级。您创建包含映像的 LVM 卷的快照,然后在快照位置运行虚拟机。来源逻辑卷保持不变,对机器的所有更改均写入快照。为了恢复到虚拟机映像的来源逻辑卷,您需要关闭虚拟机,然后从来源逻辑卷中去除快照。若要重新开始,请重新创建快照、装载快照,然后在快照映像上重启动虚拟机。
下列程序使用文件型虚拟磁盘映像和 Xen 超级管理程序。对于在 SUSE Linux Enterprise 平台上运行的其他超级管理程序(例如 KVM),您可以调整本节中的过程。若要从快照卷中运行文件型虚拟机映像,请运行下列步骤:
确保已挂载包含文件型虚拟机映像的来源逻辑卷,例如在挂载点
/var/lib/xen/images/<IMAGE_NAME>
挂载。创建具有足够空间来储存预期差别的 LVM 逻辑卷快照。
tux >
sudo
lvcreate -s -L 20G -n myvm-snap /dev/lvmvg/myvm如果不指定大小,快照会创建为瘦快照。
创建挂载点,用于挂载快照卷。
tux >
sudo
mkdir -p /mnt/xen/vm/myvm-snap在所创建的挂载点挂载快照卷。
tux >
sudo
mount -t auto /dev/lvmvg/myvm-snap /mnt/xen/vm/myvm-snap在文本编辑器中,复制来源虚拟机的配置文件,修改指向挂载快照卷上的文件型图像文件的路径,然后储存文件,例如
/etc/xen/myvm-snap.cfg
。使用虚拟机的已挂载快照卷启动虚拟机。
tux >
sudo
xm create -c /etc/xen/myvm-snap.cfg(可选)去除快照,然后在来源逻辑卷使用未更改的虚拟机映像。
tux >
sudo
umount /mnt/xenvms/myvm-snaptux >
sudo
lvremove -f /dev/lvmvg/mylvm-snap(可选)根据需要重复此程序。
6.6 将快照与来源逻辑卷合并以还原更改或回滚到先前的状态 #
如果您需要将卷上的数据回滚或还原至先前的状态,快照可能非常有用。例如,如果因管理员失误,或是因软件包安装或升级出故障或没必要,导致数据出现更改,您可能需要予以还原。
您可以使用 lvconvert --merge
命令还原对 LVM 逻辑卷的更改。合并按如下所示开始:
如果来源逻辑卷和快照卷均未打开,合并将立即开始。
如果来源逻辑卷或快照卷已打开,合并将在来源逻辑卷或快照卷第一次启动和同时关闭时开始。
如果来源逻辑卷不能关闭(例如根文件系统),系统会推迟到下一次服务器重引导并激活来源逻辑卷的时候再合并。
如果来源逻辑卷包含虚拟机映像,您必须关闭虚拟机,停用来源逻辑卷和快照卷(也就是依次卸下这些卷),然后发出合并命令。因为来源逻辑卷会自动重新挂载,而且合并完成时会删除快照卷,所以在合并完成之前请勿重启动虚拟机。合并完成之后,您可以将生成的逻辑卷用于虚拟机。
合并开始之后,系统将在服务器重启动之后继续合并,直到合并完成。在合并期间,无法为来源逻辑卷创建新快照。
合并期间,系统对来源逻辑卷的读取或写入操作会透明地重定向到正在合并的快照,因此用户能够立即查看和访问数据,就像当时创建快照时一样,不必等到合并完成。
合并完成后,来源逻辑卷会包含与创建快照时相同的数据,加上合并开始后对数据的任何更改。生成的逻辑卷沿用了来源逻辑卷的名称、次要编号和 UUID。系统会自动重新挂载来源逻辑卷,并去除快照卷。
打开终端控制台,然后输入
tux >
sudo
lvconvert --merge [-b] [-i SECONDS] [SNAP_VOLUME_PATH[...snapN]|@VOLUME_TAG]您可以在命令行上指定一或多个快照;也可以使用相同卷标记来标记多个来源逻辑卷,然后在命令行上指定
@<VOLUME_TAG>
。标记过的卷的快照会合并到其各自的来源逻辑卷中。有关标记逻辑卷的的相关信息,请参见第 5.9 节 “标记 LVM2 储存对象”。选项包括:
- -b, --background
在背景中执行守护程序,这样可以并行合并多个指定的快照。
- -i, --interval <SECONDS>
以固定的间隔以百分比形式报告进度。指定的间隔以秒为单位。
有关此命令的详细信息,请参见
lvconvert(8)
man 页面。例如:
tux >
sudo
lvconvert --merge /dev/lvmvg/linux01-snap此命令将
/dev/lvmvg/linux01-snap
合并到其来源逻辑卷中。tux >
sudo
lvconvert --merge @mytag如果
lvol1
、lvol2
和lvol3
全都以mytag
标记,每个快照卷将依序与其各自的来源逻辑卷合并;即先lvol1
,再lvol2
,然后lvol3
。如果指定了--background
选项,相应标记过的逻辑卷的快照将并行同时合并。(可选)如果来源逻辑卷和快照卷均已打开且可以关闭,则您可以手动停用然后激活来源逻辑卷,以便让合并立即开始。
tux >
sudo
umount ORIGINAL_VOLUMEtux >
sudo
lvchange -an ORIGINAL_VOLUMEtux >
sudo
lvchange -ay ORIGINAL_VOLUMEtux >
sudo
mount ORIGINAL_VOLUME MOUNT_POINT例如:
tux >
sudo
umount /dev/lvmvg/lvol01tux >
sudo
lvchange -an /dev/lvmvg/lvol01tux >
sudo
lvchange -ay /dev/lvmvg/lvol01tux >
sudo
mount /dev/lvmvg/lvol01 /mnt/lvol01(可选)如果来源逻辑卷和快照卷均已打开且来源逻辑卷不能关闭(例如
根
文件系统),则您可以重启动服务器并挂载来源逻辑卷,以让合并在重启动之后立即开始。