Linux 中的 LVM 备份和恢复快照 - Linux 系统管理
Linux 上使用逻辑卷管理器 (LVM) 来管理硬盘驱动器和其他存储设备。顾名思义,它可以将原始存储分类为逻辑卷,从而易于配置和使用。
在本教程中,您将学习如何在Linux系统中创建LVM备份和恢复。 LVM 在任何 Linux 发行版上的工作方式都是相同的,因此您可以在自己的系统上使用以下任何命令。
跟随我们一起使用 LVM 在硬盘上创建分区、物理卷、卷组、逻辑卷和文件系统。我们还将展示如何安装、扩展和删除新创建的逻辑卷。在本教程的最后,我们将拍摄该卷的快照,然后展示如何恢复备份。
在本教程中您将学习:
如何在LVM中创建逻辑卷
如何创建逻辑卷的快照
逻辑卷快照的工作原理
如何恢复逻辑卷的备份
Linux 中的 LVM 备份和恢复步骤
在主要 Linux 发行版上安装 LVM
您的 Linux 系统可能已经安装了 LVM,但并非每个发行版都默认安装它。使用下面相应的命令通过系统的包管理器安装 LVM。
要在 Ubuntu、Debian 和 Linux Mint 上安装 LVM:
$ sudo apt install lvm2
要在 CentOS、Fedora、AlmaLinux 和 Red Hat 上安装 LVM:
$ sudo dnf install lvm2
要在 Arch Linux 和 Manjaro 上安装 LVM:
$ sudo pacman -S lvm2
创建分区
我们要做的第一件事是在磁盘上创建分区。这是为了便于在下一节中创建物理卷,物理卷可以在原始的、未分区的块设备或单个分区上创建。为了本教程的目的,我们将研究后者。
在此示例中,我们将使用的磁盘是 /dev/sdb
,这是一个 5GB(当前未分区)的硬盘。
我们可以使用以下命令查看 /dev/sdb
磁盘及其相关详细信息。
# fdisk -l
接下来,让我们使用 cfdisk 来对磁盘进行分区。
# cfdisk /dev/sdb
您的控制台中将打开一个界面,使用起来非常直观。我们创建了以下两个分区作为示例。
通过选择“写入”完成更改,然后在完成后退出实用程序。现在,当我们再次执行 fdisk -l 时,我们可以看到列出的分区。
创建物理卷
现在,我们可以使用 pvcreate
命令在新分区上创建物理卷。
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
使用pvdisplay
命令查看有关系统上所有物理卷的信息,或指定您希望查看详细信息的特定卷。
# pvdisplay
OR
# pvdisplay /dev/sdb1
创建卷组
在此阶段,我们需要创建一个卷组,它将用作物理卷的容器。在此示例中,我们将使用以下 Linux 命令将卷组命名为“mynew_vg”,其中将包含 /dev/sdb1
分区:
# vgcreate mynew_vg /dev/sdb1
或者,同时包含两个分区:
# vgcreate mynew_vg /dev/sdb1 /dev/sdb2
使用以下命令显示有关卷组的信息。
# vgdisplay
我们可以使用 vgextend 命令向该组添加更多物理卷。
# vgextend mynew_vg /dev/sdb2
Volume group "mynew_vg" successfully extended
创建逻辑卷
现在我们可以继续创建逻辑卷。将我们的卷组视为一个“大蛋糕”可能会有所帮助,我们可以从中切出“碎片”(逻辑卷),这些“碎片”将被视为 Linux 系统上的分区。
以下命令将创建一个名为 vol01
、大小为 400MB 的逻辑卷。
# lvcreate -L 400 -n vol01 mynew_vg
然后,我们将创建另一个名为 vol02
的卷,大小为 1GB。
# lvcreate -L 1000 -n vol02 mynew_vg
最后,我们可以使用 lvdisplay 命令来查看我们刚刚创建的逻辑卷。
在逻辑卷上创建文件系统
逻辑卷几乎可以使用了。我们需要做的就是使用 mkfs 命令在其上创建一个文件系统。
# mkfs.ext4 -m 0 /dev/mynew_vg/vol01
-m
选项指定为超级用户保留的百分比,我们可以将其设置为 0 以使用所有可用空间(默认为 5%)。
逻辑卷快照
最后,我们可以拍摄前面部分中创建的逻辑卷的快照。为此,我们还需要逻辑卷“volume1”上的一些示例数据,因此一旦我们从快照恢复,我们就可以通过将原始数据与从快照恢复的数据进行比较来确认整个过程。
了解 Snaphost
为了理解快照的工作原理,我们首先需要了解逻辑卷由什么组成以及数据是如何存储的。这个概念类似于众所周知的符号链接。当您创建文件的符号链接时,您并不是创建实际文件的副本,而只是创建对其的引用。逻辑卷以类似的方式存储数据,它由两个基本部分组成:
元数据指针
数据块
创建快照时,逻辑卷管理器只需创建指向单独逻辑卷的所有元数据指针的副本。元数据不会消耗太多空间,因此您可以创建 2GB 逻辑卷到 5MB 快照卷的快照。 只有当您开始更改原始逻辑卷的数据时,快照卷才会开始增长。这意味着,每次删除或编辑原始逻辑卷上的文件时,都会在快照卷上创建该文件(数据)的副本。对于简单的更改,您可能需要创建逻辑卷原始大小约 5-10% 的快照卷。如果您准备对原始逻辑卷进行许多更改,那么您将需要超过 10% 的空间。
Linux 中从逻辑卷快照进行 LVM 备份和恢复
现在我们准备开始了。按照下面的分步说明在 Linux 中从逻辑卷快照创建 LVM 备份和还原。
首先,我们将为逻辑卷创建一个新的安装点,然后安装该卷。
$ sudo mkdir -p /mnt/volume1 $ sudo mount /dev/mynew_vg/vol01 /mnt/volume1
如前所述,我们需要将一些示例数据放在逻辑卷上。这样,我们以后就可以验证备份和恢复是否成功。在此步骤中,我们只需将
/usr/bin
目录复制到该卷。$ sudo cp -av /usr/bin/* /mnt/volume1 $ du -s /usr/bin 162528
现在我们要创建逻辑卷“volume1”的快照。在此过程中,逻辑卷管理器将创建一个新的单独逻辑卷。这个新逻辑卷的大小为 20MB,称为“volume1_snapshot”:
$ sudo lvcreate -s -L 20M -n volume1_snapshot /dev/mynew_vg/vol01 Logical volume "volume1_snapshot" created
现在快照已创建,我们可以开始更改“volume1”上的数据,例如删除我们之前复制的全部内容:
$ sudo rm -rf /mnt/volume1/*
接下来,我们使用以下
lvconvert
命令来恢复我们的快照。
$ sudo lvconvert --merge /dev/mynew_vg/vol01/volume1_snapshot
Can't merge over open origin volume
Merging of snapshot volume1_snapshot will start next activation.
执行上述命令后,逻辑卷“volume1”一旦激活就会回滚。因此,接下来需要做的是重新激活“volume1”。首先,请确保卸载我们尝试恢复的卷。
$ sudo umount /mnt/volume1
现在我们可以停用和激活卷:
$ sudo lvchange -a n /dev/mynew_vg/vol01 $ sudo lvchange -a y /dev/mynew_vg/vol01
最后一步,再次挂载逻辑卷“volume1”并确认所有已删除的数据已恢复。
$ sudo mount /dev/mynew_vg/vol01 /mnt/volume1 $ du -s /mnt/volume1 162528
结束语
以上是使用逻辑卷管理器进行快照操作以及如何在 Linux 中执行 LVM 备份和恢复的基本示例。逻辑卷快照的用处是巨大的,无论您是系统管理员还是开发人员,它都一定会帮助您完成任务。尽管您可以使用上述设置来创建多个快照以进行备份恢复,但您还需要知道您的备份将在逻辑卷组中找到其限制。因此,任何低级别的物理卷问题都可能使您的快照变得毫无用处。