干货 | LVM快照学习
一个执着于技术的公众号
前言
在上一章节,我们学习了LVM逻辑卷管理技术,知道了LVM能够通过增减PE的数量来弹性调整文件系统的大小。除此之外,LVM还有另一个重要功能「LVM快照技术」,也就是可以给文件系统做一个备份。
LVM快照原理
❝
在讲LVM之前,大家先思考一个问题;为什么不管多大的逻辑卷进行备份,快照都会在几秒之内完成?
❞
其实LVM快照采用写时复制技术(copy-on-wire,COW),即当LVM快照创建的一瞬间,系统会记录那个时间点逻辑卷的状态、数据等。此时拍下的快照相当于一张白纸。如图所示:
快照做好后,随着时间的推移,源卷里的东西会发生改变。如数据1、2改写成了A、B,如下图:
此时lv源卷里发生改变的数据会转移到快照卷里面去。当恢复快照时,源卷会和快照进行合并,源卷里没有改变的数据+快照卷,就恢复到最初的状态
「注意」
快照卷空间大小不能设置太小,否则当源卷数据改变太大时,快照卷没法装下。快照卷大小封顶由卷组(VG)的大小决定。
快照与待备份的逻辑卷(LV)必须要在同一个VG下,否则创建快照会失败。
创建 LVM 快照
1、实验准备
在做LVM快照之前,我们先把逻辑卷创建出来:
1)事先准备4个分区
2)创建PV
3)创建卷组vg1
4)创建大小为10G的逻辑卷lv1
5)格式化&&挂载至/data下
6)写入数据,以便后面实验验证
2、LVM快照实验
在创建快照之前,我们先查看下系统当前的LV及VG的使用情况
通过查询,得知逻辑卷lv1大小为10G,所属卷组vg1;卷组vg1容量为40G,空闲容量还有30G。因此我们有足够的资源为逻辑卷lv1创建快照。
1、创建快照
参数解释:
-L:指定快照卷大小
--snapshot :指定创建类型为快照卷
--name:指定快照卷名称
/dev/vg1/lv1:代表要对lv1卷打快照
其实快照就是一个特殊类型的逻辑卷,跟创建逻辑卷的命令相同,也是lvcreate。
lvs查询快照卷
2、模拟数据受损,以便进行备份恢复
❝这里代表原始数据是
hello world,被恶意更改为hello worl。现在我们采用「LVM快照回滚」找回我们的“重要数据”❞
3、挂载快照
「这里有个报错哦」
排错步骤如下:
1)根据提示,执行dmesg | tail
2)根据报错提示,无法挂载此UUID的磁盘。我们再查看下磁盘的UUID吧
这时会发现:逻辑卷lv1与快照卷lv1_snap001共用同一个UUID了。通过查询资料,得出以下结论:
❝
如果逻辑卷使用的文件系统为xfs,挂载快照卷时会报错的。因为xfs不允许相同的UUID文件系统直接挂载(快照是LVM的克隆,因此UUID是一致的)。要解决这个办法,要么修改其UUID,要么带上
nouuid参数,让文件系统忽略相同的UUID所造成的问题。❞
3)我们这里选择带上nouuid参数,执行结果如下图:
问题解决,快照卷已挂载至/data_bak
4、还原数据
❝以上实验是我们明确知道需要还原的某个文件,因此挂载快照卷,直接拷贝其快照卷中的文件即可。但是,当数据卷上有很多小文件,数据都有可能被改变。这种情况就不适用上面的方法了。接下来我们介绍还原数据卷上所有数据的方式。
❞
还原整个逻辑卷的数据
1、挂载快照卷2、把快照中的数据导出
本实验将快照卷的数据导至/opt目录
3、卸载数据卷&&格式化数据卷&&重新挂载
此时数据卷已无数据,现在利用我们备份的数据进行恢复
4、把数据还原到源数据卷
❝这样就把创建快照时刻的数据完全还原出来了,只不过操作有点繁琐。接下来,我们用一种更简单方法,利用「合并快照」两步搞定数据还原。
❞
合并快照(merge snapshot)
1、老规矩,先模拟大量重要数据受损,需要恢复整个逻辑卷的情况:
这里的大量文件,就特指test文件吧
2、卸载数据卷和快照卷
3、合并快照
确认源数据卷和快照数据卷都没有被挂载后就可以执行合并快照的操作了:
注意,合并快照的操作会自动删除快照数据卷,如下图所示:
4、重新挂载源数据卷
test文件内容已变成“hello world”,说明整个数据卷上的内容已经被还原到了创建快照的时刻。
总结
快照是 LVM 中的一个稍微高级一点的话题,但仅就日常使用来说,本文介绍的常见用法足够大家愉快的开启探索之旅了。
往期精彩
干货 | LVM快照学习的更多相关文章
- 烂泥:LVM学习之KVM利用LVM快照备份与恢复虚拟机
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一段时间一直在学习有关LVM逻辑卷方面的知识,前几篇文章介绍了有关LVM的逻辑卷的基本相关知识,包括逻辑卷及卷组的扩容与缩小.今天我们再来介绍LVM ...
- Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份
这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...
- lvm snapshot(lvm 快照)
lvm快照有多种实现方法,其中一种是COW(Copy-On-Write),不用停止服务或将逻辑卷设为只读就可以进行备份,当一个 snapshot创建的时候只是拷贝原始卷里的元数据,而不是物理上的数据, ...
- 烂泥:KVM利用LVM快照快速部署虚拟机
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了有关KVM利用LVM快照备份和恢复虚拟机的功能,这篇文章我们来介绍,如何利用LVM快照功能为KVM快速部署虚拟机. 部署虚拟机需要以下几 ...
- lvm快照备份数据库(Mysql5.7)
备份的目的 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 备份的分类 以操作过程中服务的可用性分: 冷备份:cold backup mysql服务关闭,mysq ...
- LVM快照备份与恢复
简介 最近在做数据备份方面的工作,用到两个工具,一个是dd,而另一个是lvm的快照(snapshot).由于数据比较大,直接是用dd非常耗时,而lvm的快照可以在几秒内轻松搞定,而且可以达到实时的 ...
- LVM : 快照
LVM 机制还提供了对 LV 做快照的功能,也就是说可以给文件系统做一个备份,这也是设计 LVM 快照的主要目的.LVM 的快照功能采用写时复制技术(Copy-On-Write,COW),这比传统的备 ...
- MySQL基于LVM快照的备份恢复(临时)
目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...
- mysql数据库基于LVM快照的备份
lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上 2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁 3 ...
随机推荐
- Oracle入门基础(七)一一集合运算
SQL> /* SQL> 查询10和20号部门的员工 SQL> 1. select * from emp where deptno=10 or deptno=20; SQL> ...
- SpringMVC常用的注解有哪些?
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上.用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径. @RequestBody:注解实现接收http请求 ...
- redis支持哪些数据类型?redis命令大全
一.redis支持的数据类型 1)String 常用命令:set/get/decr/incr/mget等: 应用场景:String是最常用的一种数据类型,普通的key/value存储都可以归为此类: ...
- 记MyBaits-Plus 实现菜单的无限层关系
Mybatis-Plus父子菜单 首先来看一下实现的效果 pojo层 @Data @TableName("platform_role") public class Role imp ...
- SCTF 2018_Simple PHP Web
SCTF 2018_Simple PHP Web 进入环境注意观察url http://www.bmzclub.cn:23627/?f=login.php 有点像是文件读取我们尝试读一下/etc/pa ...
- char的越界赋值即其原理剖析
思考: int ch = 'A'; int ch1 = 65; int ch2 = 321; printf("%c %c %c\n", ch, ch1, ch2);的输出结果是什么 ...
- visual studio 2019工具里添加开发中命令提示符的方法
最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...
- 记一些css 3效果
半透明边框 background-clip: 规定背景的绘制区域 .div { width: 200px; height: 200px; background: blue; border: 10px ...
- putty 远程登录ubuntu的方法
首先,要确定linux的ssh服务已经开启了: 首先要确定开启了ssh-server: 安装:sudo apt-get install openssh-server 安装:su ...
- Flex布局在小程序的使用
一篇旧文,上手小程序时做的一些探索 Flex布局是一种十分灵活方便的布局方式,目前主流的现代浏览器基本都实现了对Flex布局的完全支持.而在微信小程序中,IOS端使用的渲染引擎WKWebView和安卓 ...