lvm快照有多种实现方法,其中一种是COW(Copy-On-Write),不用停止服务或将逻辑卷设为只读就可以进行备份,当一个 snapshot创建的时候只是拷贝原始卷里的元数据,而不是物理上的数据,所以snapshot的创建特别快。原始卷写入数据snapshot记录哪些数据发生变化,并备份旧数据,当恢复的时候就可以把旧数据恢复到对应位置。

介绍下LVM管理的相关命令

  • pvcreate ,pvmove ,pvremove ,pvscan ,pvdisplay
  • vgcreate ,vgremove ,vgscan ,vgdisplay ,vgreduce ,vgextend
  • lvcreate ,lvmove ,lvremove ,lvscan ,lvdisplay ,lvreduce ,lvextend ,lvresize ,lvchk

LVM备份恢复示例:

现有一个Disk /dev/sdb: 17.2 GB,先将它划分为两个分区,一个作为源分区做成lvm,一个作为备份数据保存点

[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xcaf172f9

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    16779263     8388608   83  Linux
/dev/sdb2        16779264    33554431     8387584   83  Linux

1、创建lvm

[root@localhost ~]# pvcreate /dev/sdb1                         整个磁盘17G
[root@localhost ~]# vgcreate vgtest /dev/sdb1
[root@localhost ~]# lvcreate -L 7G -n srcdata vgtest
[root@localhost ~]# vgextend vgtest /dev/sdb2         把另一个分区也划入vgtest卷组
[root@localhost ~]# mkfs -t ext3 /dev/vgtest/srcdata
[root@localhost ~]# mount /dev/vgtest/srcdata /mymnt/mnt

2、模拟初始数据

[root@localhost ~]# tar zcf /mymnt/mnt/backup.gz /etc/*
[root@localhost ~]# echo 'hello world'> test.txt

当前lvm下已经有两个文件了,模拟磁盘备份前状态

3、创建快照

使用一个10G的大小对7G的lv创建快照有如下提示

[root@localhost ~]# lvcreate -L +10G -n snapsrc -s /dev/vgtest/srcdata (-s表示创建快照)
  Reducing COW size 10.00 GiB down to maximum usable size 7.03 GiB.
  Logical volume "snapsrc" created

查看,发现快照卷已经创建出来了,大小是7G
[root@localhost ~]# lvdisplay

--- Logical volume ---
LV Path                /dev/vgtest/snapsrc
LV Name                snapsrc
VG Name                vgtest
LV UUID                ZIx3hb-80iW-R2Nf-XET6-9wfA-MG8K-6A3bRe
LV Write Access        read/write
LV Creation host, time localhost.localdomain, 2016-04-20 10:37:14 +0800
LV snapshot status     active destination for srcdata
LV Status              available
# open                 0
LV Size                7.00 GiB
Current LE             1792
COW-table size         7.03 GiB
COW-table LE           1800
Allocated to snapshot  0.00%                  这个是快照lv特有的,显示用了多少空间
Snapshot chunk size    4.00 KiB
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     8192
Block device           253:3

随着原始卷写入数据,快照卷的使用率也会增加。测试下往原始卷写入30M数据,使用率变成0.42%

[root@localhost ~]# cd /mymnt/mnt/
[root@localhost mnt]# dd if=/dev/zero of=./addfile bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.0974659 s, 323 MB/s
[root@localhost mnt]# lvdisplay | grep %
  Allocated to snapshot  0.42%

再新增一个文件[root@localhost mnt]# ls -lr /etc/* >b.txt,此时在执行快照之后原始卷新增了两个文件。此时如果想恢复之前的状态,要先卸载原始卷,再使用--merge(合并)恢复。

[root@localhost mymnt]# umount mnt
[root@localhost mymnt]# lvconvert --merge /dev/vgtest/snmpsrc
  Merging of volume snmpsrc started.
  srcdata: Merged: 100.0%
  Merge of snapshot into logical volume srcdata has finished.
  Logical volume "snmpsrc" successfully removed
[root@localhost mymnt]# mount /dev/vgtest/srcdata mnt

至此原始卷就恢复到备份前的状态了。


1、快照还有一种恢复方法就是,创建快照后直接挂载,把其中数据复制备份

[root@localhost mnt]# lvcreate -L +7G -n backuplv -s /dev/vgtest/srcdata
[root@localhost mnt]# mount /dev/vgtest/backuplv /mymnt/dstmnt/
[root@localhost mymnt]# tar -zcf dstmnt/dstmnt.tar.gz /mymnt/dstmnt/*     挂载后使用tar打包备份

备份好之后卸载快照卷,并lvremove 移除快照卷,以节省空间。

2、另外使用dump也可以实现备份恢复数据

[root@localhost ~]# dump -0u /tmp/data.bak.dump /snap
[root@localhost ~]#  mkdir /data
[root@localhost ~]# cd /data/
[root@localhost ata]#  restore -rf /tmp/data.bak.dump

3、 也可以使用dd将快照卷备份,然后直接替换还原

dd if=/dev/vgtest/srcdata of=/backupsrcdata.dd  备份
dd if=/backupbackupsrcdata.dd of=/dev/vgtest/srcdata  还原

lvm snapshot(lvm 快照)的更多相关文章

  1. Exadata LVM snapshot备份失败

    一台X4-2 的计算节点进行image升级,在正式升级之前利用LVM snapshot备份操作系统时备份失败,并且报大量IO错误,提示无法找到LVM snapshot的挂载点.检查文件系统状态: [r ...

  2. 在Linux下如何创建LVM及LVM创建过程

    Linux LVM创建过程:(我用的是Centos6.8) 一.准备工作: LVM可以的创建可以在系统安装的过程中创建,也可以在安装完系统之后再创建建,都是可以的,我的是在系统安装完之后创建的,具体的 ...

  3. lvm拉伸与快照

    一.拉伸 *用fdisk分区 *构建pv *将pv加入vg *将pv内的pe加入lv *通过resize将文件系统的容量增加 1.分区 [root@server3 ~]# fdisk /dev/vdb ...

  4. Linux磁盘管理之LVM逻辑卷快照

    一.快照的工作原理 所谓快照就是将当时的系统数据记录下来,在未来若有数据变动,则会将变更前的数据放入快照区进行保存.我们可理解为快照就是给系统拍了一张照片,记录当时系统在拍快照的状态.只不过现实生活中 ...

  5. GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除

    LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性.最大的优点是在不损伤数据的前提下调整存储空间的大小. 本篇主要讲述L ...

  6. MySQL备份---lvm snapshot

    正常安装(缺点要锁表) 1, 创建一个LV(逻辑卷) , 把MySQL的数据目录放到这个LV上 /var/lib/mysql 对这个LV做快照, 从快照备份数据 删除快照 非正常安装 1,创建LV 2 ...

  7. lvm创建和快照

    查看磁盘 创建分区 新建1G的1分区 新建1G的2分区 新建1G的3分区 查看新建的分区 因标准分区是83交换分区是82做lv是8e所以要改变类型 查看: 保存退出: 创建物理卷pv 将物理卷pv创建 ...

  8. 【LVM】LVM自动扩容脚本

    概要说明: /dev/mapper/vg0-data挂载在目录/data下: 当新增物理磁盘时,需要自动对/dev/mapper/vg0-data磁盘时进行扩容(自动化脚本): 当新增物理磁盘时,自动 ...

  9. [LVM]创建LVM卷

    https://www.cnblogs.com/softidea/p/5147090.html

随机推荐

  1. Redis应用场景

    Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的 ...

  2. 51nod 1515 明辨是非 并查集 + set + 启发式合并

    给n组操作,每组操作形式为x y p. 当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等:否则输出NO,并忽略此次操作. 当p为0时,如果第x变量和第y个变量可以不相等,则输 ...

  3. 学习C++的第一天

    # include<iostream>   //头文件的使用using namespace std;  //命名空间的使用int main(){ int a,b; cin>>a ...

  4. typedef struct 结构体

    typedef struct _TTTT_ {   int    i;  }TT_TT; 定义变量如下: struct _TTTT_  NewTT;方法1 TT_TT NewTT;方法2 是声明和定义 ...

  5. VGA逐行扫描控制器的Verilog建模

    前言:因为VGA是一种模拟图像传输数据接口,所要将数字信号用DAC转换成模拟量.本文用的一款ADI公司高精度的视频IC,实则一款高带宽的视频DAC.因为VGA时序较为简单,并且网上的VGA驱动基本大同 ...

  6. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  7. MySQL的表的优化和列类型的选择

    列选择原则: 1:字段类型优先级 整型 > date,time  >  enum,char>varchar > blob 列的特点分析: 整型: 定长,没有国家/地区之分,没有 ...

  8. AIX系统程序异常不释放光驱处理

    AIX操作系统有时会出现程序异常不释放光驱,可以用以下命令进行处理: #fuser -kxuc /dev/cd0 或者 #fuser /dev/cd0 以上命令会列出访问光驱设备的所有进程,然后使用k ...

  9. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  10. linux tr命令详解

    通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您也可以用它来除去重复 ...