lvm快照备份技术详细知识点

一、LVM 简介

LVM(Logical Volume Manager)即逻辑卷管理器,是 Linux 系统中用于管理磁盘存储的关键技术。在传统磁盘管理方式下,磁盘分区一旦确定,其大小调整往往较为复杂,且难以灵活应对业务变化。LVM 则打破了这种限制,它允许用户将多个物理磁盘分区组合成卷组(Volume Group,VG)。例如,系统中有多个物理磁盘 /dev/sda/dev/sdb,可以把它们的部分空间整合起来,形成一个统一管理的卷组。

从卷组中,用户可以进一步划分出逻辑卷(Logical Volume,LV)。逻辑卷类似于虚拟磁盘分区,具有极高的灵活性。用户可以根据实际需求,动态地调整逻辑卷的大小,进行格式化等操作。比如,在构建数据库存储时,可在卷组上创建逻辑卷来专门存储 MySQL 数据库的数据文件,为数据库的高效运行提供有力支持。

二、LVM 快照概念

(一)定义

LVM 快照是对现有逻辑卷(源逻辑卷)在某一特定时刻的 “瞬间影像”。它本质上是一个特殊的逻辑卷,初始时几乎不占用额外存储空间(仅记录少量元数据),并且与源逻辑卷共享数据块。

当源逻辑卷中的数据发生变化时,LVM 会将原始数据块的内容复制到快照区域(前提是这些数据块此前未被复制过)。通过这种机制,快照始终能够反映出创建它时源逻辑卷的数据状态。例如,对于一个持续运行的文件系统,在创建快照后,即便文件系统中的数据不断更新、删除或新增,快照中的数据依然保持创建时刻的状态,为数据备份和恢复提供了稳定的副本。

(二)工作原理示例

假设有一个存储 MySQL 数据的逻辑卷 LV1,其大小为 100GB,当前已使用 50GB。在上午 10 点,我们创建了一个针对 LV1 的快照 Snapshot1。在创建瞬间,Snapshot1 几乎不占用额外空间,只是记录了 LV1 在上午 10 点的数据状态。

随后,LV1 中的数据发生了变化。例如,一个存储用户信息的数据块被更新,LVM 会检测到这一变化,并将更新前的数据块内容复制到 Snapshot1 的存储区域。这样,无论 LV1 后续如何变化,Snapshot1 始终保留着上午 10 点的数据,确保了数据的一致性和可追溯性。

三、LVM 快照备份过程

(一)拍摄快照

使用 lvcreate 命令来创建快照。假设我们有一个名为 vg_mysql 的卷组,其中包含用于存储 MySQL 数据的逻辑卷 lv_mysql,现在要创建一个名为 lv_mysql_snapshot、大小为 1GB 的快照,执行以下命令:

lvcreate -n lv_mysql_snapshot -L 1G -s /dev/vg_mysql/lv_mysql

参数解释:

  • -n:用于指定快照的名称,这里为 lv_mysql_snapshot
  • -L:指定快照的大小,设置为 1GB。需注意,快照大小应根据源逻辑卷的数据变化频率和数据量合理估算,以确保备份过程中快照空间充足。
  • -s:表示创建的是快照,其后紧跟源逻辑卷的路径 /dev/vg_mysql/lv_mysql

(二)挂载快照

  1. 创建挂载点
    首先,使用 mkdir 命令创建一个挂载点,例如 /mnt/mysql_snapshot
mkdir -p /mnt/mysql_snapshot

-p 选项的作用是确保如果指定的目录不存在,会递归创建该目录及其上级目录;若目录已存在,则不报错。

  1. 挂载快照
    然后,使用 mount 命令将快照挂载到创建的挂载点上:
mount /dev/vg_mysql/lv_mysql_snapshot /mnt/mysql_snapshot

此时,通过访问 /mnt/mysql_snapshot 目录,就可以读取到快照中的数据,为后续的备份操作做好准备。

(三)进行备份

挂载点 /mnt/mysql_snapshot 进行备份操作,可选用多种备份工具:

  1. Rsync 备份
    rsync 是一款强大的文件同步工具,具有高效、灵活的特点。例如,将快照中的数据备份到 /backup/mysql_snapshot_$(date +%Y%m%d) 目录(其中 $(date +%Y%m%d) 会根据当前日期生成目录名,方便区分不同日期的备份),执行以下命令:
rsync -avz /mnt/mysql_snapshot/ /backup/mysql_snapshot_$(date +%Y%m%d)/

参数解释:

  • -a:以归档模式同步,保留文件的权限、所有者、组等属性,确保备份数据的完整性和一致性。
  • -v:输出详细信息,在备份过程中可以实时查看同步进度和文件传输情况。
  • -z:在传输过程中进行压缩,可有效减少数据传输量,提高传输效率,尤其适用于网络备份场景。
  1. Tar 备份
    tar 是常用的归档工具,用于将文件和目录打包成一个归档文件。例如,将挂载点的内容打包成一个压缩归档文件,执行以下命令:
tar czf /backup/mysql_snapshot_$(date +%Y%m%d).tar.gz /mnt/mysql_snapshot

参数解释:

  • c:创建新的归档文件。
  • z:使用 gzip 进行压缩,以减小归档文件的大小,节省存储空间。
  • f:指定归档文件的名称,这里为 /backup/mysql_snapshot_$(date +%Y%m%d).tar.gz

(四)清理快照

备份完成后,为释放存储空间,需要及时清理快照:

  1. 卸载快照
    使用 umount 命令卸载已挂载的快照:
umount /mnt/mysql_snapshot
  1. 删除快照
    使用 lvremove 命令删除快照:
lvremove -f /dev/vg_mysql/lv_mysql_snapshot

-f 选项表示强制删除,即使逻辑卷正在使用也会删除。但需谨慎使用,以免误删重要数据。

四、LVM 快照备份的优点

(一)实现热备份

对于正在运行的服务,如 MySQL 数据库、Web 服务器等,LVM 快照备份允许在不停止服务的情况下进行备份操作。这对于需要 7×24 小时不间断运行的业务系统至关重要,避免了因备份而导致的服务中断,极大地减少了对业务的影响。例如,对于一个在线交易平台,在业务高峰期也能通过 LVM 快照备份进行数据备份,确保数据安全的同时,保障了交易的正常进行。

(二)高效利用存储空间

快照初始占用的空间相对较小,它仅记录创建快照后数据的变化部分。只有当原始逻辑卷中的数据发生更改时,快照空间才会逐渐被占用。这种特性使得在存储资源有限的情况下,也能够高效地进行备份操作。相比传统的全量备份方式,LVM 快照备份大大减少了存储空间的浪费,提高了存储资源的利用率。

(三)数据一致性较好

由于快照能够精确记录创建瞬间的数据状态,只要在备份过程中快照空间足够,就可以保证备份数据的一致性。相比其他备份方式,如直接复制正在被写入的数据库文件,LVM 快照备份能够提供更可靠的数据备份副本。在数据恢复时,基于 LVM 快照备份的数据能够确保系统迅速恢复到备份时刻的状态,减少数据丢失和不一致的风险。

五、LVM 快照备份的注意事项

(一)快照大小管理

合理估计快照大小是关键。如果在备份过程中,原始逻辑卷的数据变化量超过了快照的大小,快照可能会损坏,导致备份数据不完整或无法恢复。通常需要根据数据变化的频率和数据量来确定快照的大小。例如,对于一个数据更新频繁的数据库,需要适当增大快照的大小,以确保在备份期间能够完整记录数据变化。

(二)备份速度和资源占用

虽然 LVM 快照备份可以实现热备份,但在备份过程中,系统资源(如 I/O、CPU 等)仍然会被占用。备份大型数据库的快照时,可能会对系统性能产生一定的影响。同时,备份速度也会受到多种因素的影响,如存储设备的性能、网络带宽(如果备份到远程存储)等。因此,在进行备份操作时,应合理安排备份时间,尽量选择系统负载较低的时段进行备份,以减少对业务的影响。

(三)备份后的清理工作

完成备份后,需要及时清理快照。快照会占用存储空间,如果不及时删除,可能会导致存储资源耗尽。并且,过多的快照可能会增加管理成本和潜在的风险(如快照之间的混淆等)。定期清理不再需要的快照,不仅可以释放存储空间,还能提高系统的管理效率和稳定性。

通过以上对 LVM 快照备份的全面介绍,我们可以看到它在数据备份领域的强大功能和优势。在实际应用中,应充分了解其原理和操作步骤,结合业务需求和系统特点,合理运用 LVM 快照备份技术,确保数据的安全和可靠。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用SIPP发起媒体流性能测试详解

使用SIPP发起媒体流性能测试详解 一、SIPP工具简介二、测试前的准备三、编写测试脚本四、运行测试五、分析测试结果六、总结SIPP(SIP Performance Protocol)是一个开源工具,专门用于SIP(Session Initiation Protocol)协议的性能测试和基准测试。SIP是一种用于控制多媒体通…

macOS 安装JDK17

文章目录 前言介绍新特性下载安装1.下载完成后打开downloads 双击进行安装2.配置环境变量3.测试快速切换JDK 小结 前言 近期找开源软件,发现很多都已经使用JDK17springboot3 了,之前的JDK8已经被替换下场,所以今天就在本机安装了JDK17&#…

重温STM32之环境安装

缩写 CMSIS:common microcontroller software interface standard 1,keil mdk安装 链接 Keil Product Downloads 安装好后,开始安装平台软件支持包(keil 5后不在默认支持所有的平台软件开发包,需要自行下载&#…

vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权

文章目录 简介一、先看效果1.1 授权定位前,先弹出隐私协议弹框1.2 上述弹框点击同意,得到如下弹框1.3 点击三个点,然后点设置 1.4 在1.2步骤下,无论同意或者拒绝 二、manifest.json 文件配置三、微信公众平台配置3.1 登录进入微信…

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序

接下来编译 LED 驱动,该驱动用于在基于华为设备框架(HDF)的系统中控制 LED 灯的开关,完整代码如下所示: 更多内容可以关注:迅为RK3568开发板篇OpenHarmony

kafka集群安装Raft 协议

​使用消息中间件,可以实现系统与系统之间的异步通信和无缝对接,也可用在模块之间的的异步通信,有效避免了同步阻塞IO。作为一个高吞吐量、可扩展、高可靠性的分布式消息系统,Kafka 能够胜任从简单的消息队列到复杂的流处理平台的…

华为AI培训-NLP实验

中文分词、命名实体识别、语义词性标注、语句逻辑推理、文本摘要、机器翻译、文本情感分析、内容创作 1 实验介绍 1.1 实验背景 中文分词、命名实体识别、语义词性标注、语句逻辑推理是自然语言处理领域中的重要任务。中文分词是将连续的汉字序列切分成有意义的词语序列…

Flask学习入门笔记

Flask学习入门笔记 前言1. 安装Flask2. 创建一个简单的Flask应用3. 路由与视图函数3.1 基本路由3.2 动态路由3.3 HTTP方法 4. 请求与响应4.1 获取请求数据4.2 返回响应 5. 模板渲染5.1 基本模板渲染5.2 模板继承 6. 静态文件6.1 静态文件的目录结构6.2 在模板中引用静态文件6.2…

citrix netscaler13.1 重写负载均衡响应头(基础版)

在 Citrix NetScaler 13.1 中,Rewrite Actions 用于对负载均衡响应进行修改,包括替换、删除和插入 HTTP 响应头。这些操作可以通过自定义策略来完成,帮助你根据需求调整请求内容。以下是三种常见的操作: 1. Replace (替换响应头)…

【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)

目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显,发现可以打SSTI 本地起一个服务,折半查找fuzz黑名单,不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…

WEB渗透技术研究与安全防御

目录 作品简介I IntroductionII 1 网络面临的主要威胁1 1.1 技术安全1 2 分析Web渗透技术2 2.1 Web渗透技术的概念2 2.2 Web漏洞产生的原因2 2.3 注入测试3 2.3.1 注入测试的攻击流程3 2.3.2 进行一次完整的Sql注入测试4 2.3.3 Cookie注入攻击11 3 安全防御方案设计…

软考高级5个资格、中级常考4个资格简介及难易程度排序

一、软考高级5个资格 01、网络规划设计师 资格简介:网络规划设计师要求考生具备全面的网络规划、设计、部署和管理能力;该资格考试适合那些在网络规划和设计方面具有较好理论基础和较丰富从业经验的人员参加。 02、系统分析师 资格简介:系统分…

Centos 宝塔安装

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装成功界面 宝塔说明文档 https://www.bt.cn/admin/servers#wcu 或者可以注册宝塔账号 1 快速部署 安装docker 之后 2 需要在usr/bin下下载do…

Java锁 从乐观锁和悲观锁开始讲 面试复盘

目录 面试复盘 Java 中的锁 大全 悲观锁 专业解释 自我理解 乐观锁 专业解释 自我理解 悲观锁的调用 乐观锁的调用 synchronized和 ReentrantLock的区别 相同点 区别 详细对比 总结 面试复盘 Java 中的锁 大全 悲观锁 专业解释 适合写操作多的场景 先加锁可以…

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址:https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…

latin1_swedish_ci(latin1 不支持存储中文、日文、韩文等多字节字符)

文章目录 1、SHOW TABLE STATUS WHERE Name batch_version;2、latin1_swedish_ci使用场景注意事项修改字符集和排序规则修改表的字符集和排序规则修改列的字符集和排序规则修改数据库的默认字符集和排序规则 3、ALTER TABLE batch_version CONVERT TO CHARACTER SET utf8mb4 C…

复健第二天之[MoeCTF 2022]baby_file

打开题目在线环境可以看到: 感觉要用伪协议去求,但是我们并不知道flag的位置,这里我选择用dirsearch去扫一下: 最像的应该就是flag.php了 于是就构建payload: **?filephp://filter/convert.base64-encode/resource…

机器学习之SVD奇异值分解实现图片降维

SVD奇异值分解实现图片降维 目录 SVD奇异值分解实现图片降维1 SVD奇异值分解1.1 概念1.2 基本步骤1.2.1 矩阵分解1.2.2 选择奇异值1.2.3 重建矩阵1.2.4 降维结果 1.3 优缺点1.3.1 优点1.3.2 缺点 2 函数2.1 函数导入2.2 函数参数2.3 返回值2.4 通过 k 个奇异值降维 3 实际测试3…

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件,但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别: 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

移动端布局 ---- 学习分享

响应式布局实现方法 主流的实现方案有两种: 通过rem \ vw/vh \ 等单位,实现在不同设备上显示相同比例进而实现适配. 响应式布局,通过媒体查询media 实现一套HTML配合多套CSS实现适配. 在学习移动端适配之前,还需要学习移动端适配原理: 移动端适配原理(Viewport) 了解VSCo…