在 LVM中 录制逻辑卷快照并恢复(第三部分)
创始人
2024-03-01 14:10:12
0

LVM快照是以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作,并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大,快照卷同样也会产生这样大的改变。因而,对于空间有效利用的最佳途径,就是总是进行小的修改。如果快照将存储空间消耗殆尽,我们可以使用lvextend来扩容。而如果我们需要缩减快照所占用卷的大小,可以使用lvreduce。

Take Snapshot in LVM

在LVM中录制快照

如果我们在创建快照后意外地删除了无论什么文件,我们没有必要担心,因为快照里包含了我们所删除的文件的原始文件。创建快照时,很有可能文件已经存在了。不要改变快照卷,保持创建时的样子,因为它用于快速恢复。

快照不可以用于备份选项。备份是某些数据的基础副本,因此我们不能使用快照作为备份的一个选择。

前置阅读

我的服务器设置

  • 操作系统 — 安装有LVM的CentOS 6.5
  • 服务器IP — 192.168.0.200

步骤1: 创建LVM快照

首先,使用‘vgs’命令检查卷组中的空闲空间以创建新的快照。

# vgs
# lvs

Check LVM Disk Space

检查LVM磁盘空间

正如你所见,在vgs命令输出中,我们可以看到有8GB的剩余空闲空间。所以,让我们为我的名为tecmint_datas的卷创建快照。处于演示的目的,我将会使用以下命令来创建1GB的快照卷。

# lvcreate -L 1GB -s -n tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas        

或者

# lvcreate --size 1G --snapshot --name tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas

上面的两个命令都是干得同一件事:

  • -s – 创建快照
  • -n – 为快照命名

Create LVM Snapshot

创建LVM快照

此处,是对上面高亮要点的说明。

  1. 我在此创建的快照的大小。
  2. 创建快照。
  3. 创建快照名。
  4. 新的快照名。
  5. 要创建快照的卷。

如果你想要移除快照,可以使用‘lvremove’命令。

# lvremove /dev/vg_tecmint_extra/tecmint_datas_snap

Remove LVM Snapshot

移除LVM快照

现在,使用以下命令列出新创建的快照。

# lvs

Verify LVM Snapshot

验证LVM快照

上面的你看到了吧,成功创建了一个快照。上面我用箭头标出了快照创建的源,它就是tecmint_datas。是的,因为我已经为tecmint_datas l-volume创建了一个快照。

Check LVM Snapshot Space

检查LVM快照空间

让我们添加一些新文件到tecmint_datas里头。现在卷里大概有650MB左右的数据,而我我们的快照有1GB大。因此,有足够的空间在快照卷里备份我们的修改。这里我们可以使用下面的命令来查看到,我们的快照当前的状态。

# lvs

Check Snapshot Status

检查快照状态

你看到了,现在已经用掉了**51%**的快照卷,你要对你的文件作更多的修改都没有问题。使用下面的命令来查看更多详细信息。

# lvdisplay vg_tecmint_extra/tecmint_data_snap

View Snapshot Information

查看快照信息

再来对上面图片中高亮的要点作个清楚的说明。

  1. 快照逻辑卷名称。
  2. 当前使用的卷组名。
  3. 读写模式下的快照卷,我们甚至可以挂载并使用该卷。
  4. 快照创建时间。这个很重要,因为快照将跟踪此时间之后的每个改变。
  5. 该快照属于tecmint_datas逻辑卷。
  6. 逻辑卷在线并可用。
  7. 我们录制快照的源卷大小。
  8. 写时复制表大小,Cow = copy on Write,这是说对tecmint_data卷所作的任何改变都会写入此快照。
  9. 当前使用的快照大小,我们的tecmintdata有10GB,而我们的快照大小是1GB,这就意味着我们的数据大概有650MB。所以,如果tecmintdatas中的文件增长到2GB,现在的51%中的内容将增加到超过所分配的快照的大小,当然,我们在创建快照时会出现问题。这就意味着我们需要扩展逻辑卷大小(快照逻辑卷)
  10. 给出快照组块的大小。

现在,让我们复制超过1GB的文件到tecmint_datas。让我们看看会发生什么。如果你那么做了,你将会见到‘Input/output error’这样的错误信息,它告诉你快照超出空间大小了。

Add Files to Snapshot

添加文件到快照

如果该逻辑卷满了,它就会自动丢失新的数据,我们就不能再使用了,就算我们去扩展快照卷的大小也不行。最好的方法就是在创建快照时,创建一个和源一样大小的快照卷。tecmint_datas的大小是10GB,如果我们创建一个10GB大小的快照,它就永远都不会像上面那样超载,因为它有足够的空间来录制你的逻辑卷的快照。

步骤2: 在LVM中扩展快照

如果我们需要在超过容量前扩展快照卷的大小,我们可以使用以下命令来完成此项任务。

# lvextend -L +1G /dev/vg_tecmint_extra/tecmint_data_snap

现在,那里有总计2GB大小的快照空间。

Extend LVM Snapshot

扩展LVM快照

接下来,使用以下命令来验证新的大小和写时复制表。

# lvdisplay /dev/vg_tecmint_extra/tecmint_data_snap

要知道快照卷的大小使用**%**。

# lvs

Check Size of Snapshot

检查快照大小

然而,如果你的快照大小和源卷一样,我们就没有必要担心这些问题了。

步骤3: 恢复快照或合并

要恢复快照,我们首先需要卸载文件系统。

# unmount /mnt/tecmint_datas/

Un-mount File System

卸载文件系统

只想检查挂载点是否卸载成功,可以使用下面的命令。

# df -h

Check File System Mount Points

检查文件系统挂载点

这里,我们的挂载已经被卸载,所以我们可以继续恢复快照。要恢复快照,可以使用lvconvert命令。

# lvconvert --merge /dev/vg_tecmint_extra/tecmint_data_snap

Restore LVM Snapshot

恢复LVM快照

在合并完成后,快照卷将被自动移除。现在我们可以使用df命令来查看分区大小。

# df -Th

Check Size of Snapshot

在快照卷自动移除后,你可以用下面的命令查看逻辑卷大小。

# lvs

Check Size of Logical Volume

检查逻辑卷大小

重要:要自动扩展快照,我们可以通过修改配置文件来进行。对于手动扩展,我们可以使用lvextend。

使用你喜欢的编辑器打开lvm配置文件。

# vim /etc/lvm/lvm.conf

搜索单词autoextend。默认情况下,该值和下图中的类似。

LVM Configuration

LVM配置

修改此处的10075,这样自动扩展的起始点就是75,而自动扩展百分比为20,它将自动扩容百分之20

如果快照卷达到75%,它会自动为快照卷扩容20%。这样,我们可以自动扩容了。使用**wq!**来保存并退出。

这将把快照从超载导致下线事故中拯救出来,这也会帮助你节省更多时间。LVM是我们扩容以及获得其它众多特性如精简资源调配、拆卸、虚拟卷和使用精简池的唯一方法,让我们在下一个话题中来讨论吧。


via: http://212.71.234.61/take-snapshot-of-logical-volume-and-restore-in-lvm/

作者:Babin Lonston 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

LVM

相关内容

不支持在MSVC上生成li...
在MSVC上生成libLLVM可能会遇到一些问题,因为LLVM主要...
2025-01-12 00:32:14
BuildingSprin...
使用-GraalVM本机图像编译器,可以构建SpringBoot应...
2024-12-25 14:00:50
BuildaPathofL...
LLVM基本块路径表示函数执行期间的一系列基本块。以下是如何在LL...
2024-12-25 11:30:12
比较LLVM值的类型
要比较LLVM值的类型,可以使用LLVM的Type类以及Value...
2024-12-14 23:00:44
编译最新的Pixel 3X...
这个错误是由于编译Android 10内核时缺少LLVMgold....
2024-12-09 08:01:00
编译一个使用LLVM 17...
下面是一个使用LLVM 17的PassManagerBuilder...
2024-12-09 07:00:10

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...