LVM
LVM简介
  LVM是将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。
扩展知识:
  传统磁盘管理问题:当分区大小不够用时无法扩展其大小,只能通过添加硬盘,创建新的分区来扩展空间,但是新添加进来的硬盘式作为独立文件系统存在的,原来的文件系统并未得到扩充,上层应用很多时候只能访问一个文件系统。只能让现有磁盘下线,换上新的磁盘之后,再将原始数据导入
  LVM(Logical volume Manager)逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据,新加入的硬盘不会改变现有上层的逻辑卷;作为一种动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性
  LVM的一些概念
  PE(physical Extend)物理拓展
  PV(physical volume)物理卷
  VG(volume group)卷组
  LV(logical volume)逻辑卷

  1、物理硬盘或分区创建为物理卷(PV)
  2、不同的PV加入同一个VG(实际上将硬盘空间划为一个个的PE(PE默认是4MB大小)PE是逻辑卷空间管理的最基本的单位),不同PV的PE全部进入VG的PE池内(创建一个卷组可以理解创建空间池;就是将一个PV多个PV加入到VG当中;在创建好卷组后在/dev/目录下有一个和卷组同名的文件夹)
  3、LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同物理磁盘(当LV创建好后在/dev/vgname/下有个同名的逻辑卷文件)
  4、LV现在就直接可以格式化后挂载使用了
  5、LV的扩充缩减实际上及时增加或减少LV的PE的数量,其过程不丢失原始数据

LVM逻辑卷基础管理操作
  将物理磁盘设备初始化为物理卷
          pvcreate /dev/sdb /dev/sdc
  创建卷组,并将PV加入到卷组中
          vgcreate linuxcast /dev/sdb /dev/sdc
  基于卷组创建逻辑卷
          lvcreate -n mylv -L 2G linuxcast
  为创建好的逻辑卷创建文件系统
          mkfs.ext4 /dev/linuxcast/mylv
  将格式化好的逻辑卷挂载使用
          mount /dev/linuxcast/mylv /mnt
  可以通过一下命令查看LVM相关信息:
  查看物理卷信息:pvdisplay或pvs
       查看卷组信息:vgdisplay或vgs
       查看逻辑卷信息:lvdisplay或lvs
  删除LVM
      删除LV:lvremove /dev/linuxcast/mylv
  删除VG:vgremove linuxcast
  删除物理卷:pvremove /dev/sdb
LVM逻辑卷的拉伸与缩小
  拉伸一个逻辑卷,逻辑卷的拉伸可以在线执行,不需要卸载逻辑卷
  保证VG中有足够的空闲空间
  vgdiplay
  扩充逻辑卷
  lvextend –L +1G /dev/linuxcast/mylv
  查看扩充后LV大小
  lvdisplay
  更新文件系统
  resize2fs /dev/linuxcast/mylv
  查看更新后文件系统
  df -h
  拉伸一个卷组
  将要添加到VG的硬盘格式化为PV
  pvcreate /dev/sdd
  将新的PV添加到指定的卷组中
  vgextend linuxcast /dev/sdd
  查看扩充后的VG大小
  vgdisplay
  缩小一个逻辑卷(逻辑卷的缩小操作必须离线操作,要卸载逻辑卷)
  卸载已经挂载的逻辑卷
  umount /dev/linuxcast/mylv
  缩小文件系统(会提示需要运行fsck检查文件系统)
  resize2fs /dev/linuxcast/mylv 1G
  缩小LV
  lvreduce –L -1G /dev/linuxcast/mylv
  查看缩小后的LV
  lvdisplay
  挂载
  mount /dev/linuxcast/mylv /mut
  缩小卷组
 将一个PV从指定卷组中移除
  vgreduce linuxcast /dev/sdd
  查看缩小后的卷组大小
  vgdisplay
  删除pv
  pvremove /dev/sdd
LVM管理
  LVM: Logical Volume Manager, Version: 2
  dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块
  设备文件:/dev/dm-#
  链接文件:链接到上面的设备文件
            /dev/mapper/VG_Name-LV_Name /dev/mapper/myvg-mylv                
            /dev/VG_Name/LV_Name    /dev/myvg/mylv
  pv管理工具:
  pvs 简要pv信息显示
  pvdisplay 显示pv的详细信息
  pvcreate /dev/sda 创建pv
  pvremove /dev/sda 删除pv
演示:
与PV相关的一些命令有:
    [root@CentOS6 ~]# pv
    pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan     pv.sh
    # 显示其详细信息
    [root@CentOS6 ~]# pvdisplay
      --- Physical volume ---
      PV Name               /dev/sda2  #PV名
      VG Name               vg0             #所属卷组
      PV Size               60.00 GiB / not usable 8.00 MiB  #PV 大小
      Allocatable           yes           #是否可分配
      PE Size               8.00 MiB   #PE 大小
      Total PE              7679     #一共有多少个PE
      Free PE               1023     #空闲多少个PE
      Allocated PE          6656   #已分配多少个PE
      PV UUID               gLbegn-wGEF-FIda-e5Ig-3HJ0-4vUg-v41pSd  #PV 自己的UUID
    [root@CentOS6 ~]# pvs
      PV         VG   Fmt  Attr PSize  PFree
      /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g
创建PV具体步骤如下:
    #先准备块设备,调整其id为8e;
    [root@CentOS6 ~]# fdisk -l /dev/sdb
    Disk /dev/sdb: 85.9 GB, 85899345920 bytes
    255 heads, 63 sectors/track, 10443 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x77136fd1
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1        1306    10490413+  8e  Linux LVM
    /dev/sdb2            1307        2351     8393962+  8e  Linux LVM
    /dev/sdb3            2352        3005     5253255   8e  Linux LVM
    /dev/sdb4            3006       10443    59745735    5  Extended
    /dev/sdb5            3006        3789     6297448+  8e  Linux LVM
     #然后创建pv:pvcreate [-f] /dev/sdb{1,2,3,5}
    [root@CentOS6 ~]# pvcreate /dev/sdb{1,2,3,5}
      Physical volume "/dev/sdb1" successfully created
      Physical volume "/dev/sdb2" successfully created
      Physical volume "/dev/sdb3" successfully created
      Physical volume "/dev/sdb5" successfully created
查看PV信息:pvdisplay [/dev/sdb{1,2,3,5}]
    # 因为是刚刚创建的,所以还不属于任何卷组,所以没有信息状态
    [root@CentOS6 ~]# pvdisplay /dev/sdb1
      "/dev/sdb1" is a new physical volume of "10.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/sdb1
      VG Name              
      PV Size               10.00 GiB
      Allocatable           NO
      PE Size               0  
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               ZNXE1y-rOAW-ket1-Wlzl-Tckl-NqD7-v4lUYb
vg管理工具:
  vgs 简要vg信息显示
  vgdisplay 显示vg的详细信息
  创建vg
  vgcreate  -s # VG_Name  /dev/sda
    -s  指定PE的大小,不指定默认PE大小为4M
  扩充vg
  vgextend  VG_Name  /dev/sda
 缩小vg
  先将要移除的物理卷上的所有PE移动至其它PV(将/dev/sda上的数据移动到其它PE)
  pvmove /dev/sda
  在卷组中将LV移除
  vgreduce  VG_Name   /dev/sda
  删除vg
  vgremove VG_Name
    -f 强制删除
演示:
新增一个vg,并指明其包含哪个或哪些pv实现;
    [root@CentOS6 ~]# vgcreate myvg /dev/sdb1
      Volume group "myvg" successfully created
查看vg信息及包含的pv信息
    [root@CentOS6 ~]# vgdisplay myvg
      --- Volume group ---
      VG Name               myvg
      System ID            
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               10.00 GiB
      PE Size               4.00 MiB
      Total PE              2560
      Alloc PE / Size       0 / 0  
      Free  PE / Size       2560 / 10.00 GiB
      VG UUID               DhKq9c-esRV-0uKq-AQlV-mrWx-A6de-41frUH     
    # 查看PV 的信息,可以看到之前创建PV 有信息了
     [root@CentOS6 ~]# pvdisplay /dev/sdb1
      --- Physical volume ---
      PV Name               /dev/sdb1
      VG Name               myvg
      PV Size               10.00 GiB / not usable 4.54 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              2560
      Free PE               2560
      Allocated PE          0
      PV UUID               ZNXE1y-rOAW-ket1-Wlzl-Tckl-NqD7-v4lUYb
如果想增加VG的容量,进行如下操作: vgextend [卷组名] [pv名]
    [root@CentOS6 ~]# vgextend myvg /dev/sdb2
      Volume group "myvg" successfully extended
    [root@CentOS6 ~]# vgdisplay myvg
      --- Volume group ---
      VG Name               myvg
      System ID            
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  2
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                2
      Act PV                2
      VG Size               18.00 GiB
      PE Size               4.00 MiB
      Total PE              4609
      Alloc PE / Size       0 / 0  
      Free  PE / Size       4609 / 18.00 GiB  # 由原来的10G变为18G,为/dev/sdb1与/dev/sdb2之和
      VG UUID               DhKq9c-esRV-0uKq-AQlV-mrWx-A6de-41frUH
    [root@CentOS6 ~]# pvdisplay /dev/sdb2
      --- Physical volume ---
      PV Name               /dev/sdb2
      VG Name               myvg
      PV Size               8.01 GiB / not usable 1.23 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              2049
      Free PE               2049
      Allocated PE          0
      PV UUID               QqoawY-wc0c-hv7E-gyuJ-KVXw-d5yu-7tfw5e
如果要想把指定pv从卷组中移除,进行如下操作:
  首先,用pvmove命令把要移除pv中的数据转移到其他pv中
  然后,执行 vgreduce 命令,移除指定pv
    # 注意:要从VG中移除pv之前,一定要把该PV中的数据移除到其他PV中,并确保其他PV中能够容纳
    # 这些数据。因为这里是刚刚创建的所以显示没有数据,可直接从VG中移除
    [root@CentOS6 ~]# pvmove /dev/sdb2
      No data to move for myvg
    [root@CentOS6 ~]# vgreduce myvg /dev/sdb2
      Removed "/dev/sdb2" from volume group "myvg"
    [root@CentOS6 ~]# vgdisplay myvg
      --- Volume group ---
      VG Name               myvg
      System ID            
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               10.00 GiB  # 移除成功,发现VG 变小了
      PE Size               4.00 MiB
      Total PE              2560
      Alloc PE / Size       0 / 0  
      Free  PE / Size       2560 / 10.00 GiB
      VG UUID               DhKq9c-esRV-0uKq-AQlV-mrWx-A6de-41frUH
lv管理工具:
  lvs 简要lv信息显示
  lvdisplay 显示lv的详细信息
  创建lv
  lvcreate -L # -n LV_Name VG_Name
    -L  指定创建lv的大小(单位M、G、T)
    -n  指定lv的名字
  删除lv
  lvremove /dev/VG_Name/LV_Name
  注意:在扩展和缩减LV中的-L选项的参数如果没有指定加号或减号就是将大小调整到指定大小,如果有指定加号或减号是在当前大小上增加或较少指定大小
演示:
在mvvg卷组中,创建一个新的逻辑卷LV,名称为mylv,并指明大小为2G;
    # 创建逻辑卷,-L 指明大小,-n 指明逻辑卷名字,最后指明卷组
    [root@CentOS6 ~]# lvcreate -L 2G -n mylv myvg
      Logical volume "mylv" created.
    [root@CentOS6 ~]# ll /dev/mapper/
    total 0
    crw-rw---- 1 root root 10, 58 Feb 22 17:05 control
    lrwxrwxrwx 1 root root      7 Feb 22 18:18 myvg-mylv -> ../dm-4  # 创建的逻辑卷
    lrwxrwxrwx 1 root root      7 Feb 22 17:05 vg0-root -> ../dm-0
    lrwxrwxrwx 1 root root      7 Feb 22 17:05 vg0-swap -> ../dm-1
    lrwxrwxrwx 1 root root      7 Feb 22 17:05 vg0-usr -> ../dm-2
    lrwxrwxrwx 1 root root      7 Feb 22 17:05 vg0-var -> ../dm-3
对新创建的逻辑卷,创建文件系统(注意逻辑卷路径,两个都可以)
    [root@CentOS6 ~]# mkfs.ext4 -L MYLV -b 1024 /dev/mapper/myvg-mylv
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=MYLV
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 2097152 blocks
    104857 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=69206016
    256 block groups
    8192 blocks per group, 8192 fragments per group
    512 inodes per group
    Superblock backups stored on blocks:
      8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
      1024001, 1990657
    Writing inode tables: done                           
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    This filesystem will be automatically checked every 38 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
挂载
    # 查看设备属性信息
    [root@CentOS6 ~]# blkid /dev/mapper/myvg-mylv
    /dev/mapper/myvg-mylv: LABEL="MYLV" UUID="7be26849-b0e5-43f5-87ab-ae46511c306c" TYPE="ext4"
    # 创建挂载点
    [root@CentOS6 ~]# mkdir /testdir
    # 挂载,这里注意文件路径,两者都可以
    [root@CentOS6 ~]# mount /dev/myvg/mylv /testdir
    [root@CentOS6 ~]# mount
    /dev/mapper/vg0-root on / type ext4 (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    tmpfs on /dev/shm type tmpfs (rw)
    /dev/sda1 on /boot type ext4 (rw)
    /dev/mapper/vg0-usr on /usr type ext4 (rw)
    /dev/mapper/vg0-var on /var type ext4 (rw)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    /dev/mapper/myvg-mylv on /testdir type ext4 (rw)  # 挂载成功
    [root@CentOS6 testdir]# df -lh
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root   20G  1.9G   17G  11% /
    tmpfs                 491M     0  491M   0% /dev/shm
    /dev/sda1             190M   34M  147M  19% /boot
    /dev/mapper/vg0-usr   9.8G  2.1G  7.2G  23% /usr
    /dev/mapper/vg0-var    20G  471M   19G   3% /var
    /dev/mapper/myvg-mylv  2.0G  3.1M  1.9G   1% /testdir  # 挂载成功,大小为2G
    # 可以正常使用
    [root@CentOS6 ~]# cd /testdir/
    [root@CentOS6 testdir]# ls
    lost+found
    [root@CentOS6 testdir]# cp /etc/fstab ./
    [root@CentOS6 testdir]# ls
    fstab  lost+found
扩展LV逻辑卷:需先扩展LV在扩展文件系统
  扩展LV: lvextend -L +# /dev/VG_Name/LV_Name
  扩展文件系统:resize2fs /dev/VG_Name/LV_Name
演示:
# 直接扩展逻辑卷到5G,也可以使用 +3G
    [root@CentOS6 testdir]# lvextend -L 5G /dev/myvg/mylv
      Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
      Logical volume mylv successfully resized.
    [root@CentOS6 testdir]# df -lh
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root   20G  1.9G   17G  11% /
    tmpfs                 491M     0  491M   0% /dev/shm
    /dev/sda1             190M   34M  147M  19% /boot
    /dev/mapper/vg0-usr   9.8G  2.1G  7.2G  23% /usr
    /dev/mapper/vg0-var    20G  471M   19G   3% /var
    /dev/mapper/myvg-mylv
                          2.0G  3.1M  1.9G   1% /testdir 
    # 发现还是之前的2G,这时因为扩展的只是物理可用空间,但物理可用空间上文件系统的可用空间
    # 并没有随之扩展,还是创建文件系统时的大小,要想让文件系统也随之扩展到5G,就要使用resize2fs命令
    [root@CentOS6 testdir]# resize2fs /dev/myvg/mylv # resize2fs后没有跟大小,就意味着扩展到可用的最大物理空间
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/myvg/mylv is mounted on /testdir; on-line resizing required
    old desc_blocks = 8, new_desc_blocks = 20
    Performing an on-line resize of /dev/myvg/mylv to 5242880 (1k) blocks.
    The filesystem on /dev/myvg/mylv is now 5242880 blocks long.
    [root@CentOS6 testdir]# df -lh
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root   20G  1.9G   17G  11% /
    tmpfs                 491M     0  491M   0% /dev/shm
    /dev/sda1             190M   34M  147M  19% /boot
    /dev/mapper/vg0-usr   9.8G  2.1G  7.2G  23% /usr
    /dev/mapper/vg0-var    20G  471M   19G   3% /var
    /dev/mapper/myvg-mylv
                          4.9G  3.4M  4.7G   1% /testdir # 变为5G
缩减LV逻辑卷:需先缩减文件系统在缩减LV
  卸载逻辑卷:umount /dev/VG_Name/LV_Name
  强制文件系统检查:e2fsck -f /dev/VG_Name/LV_Name
  缩减文件系统:resize2fs /dev/VG_Name/LV_Name #[mMgGtT]
  缩减LV:lvreduce -L -# /dev/VG_NAME/LV_NAME
演示:
首先卸载文件系统,并强制做文件系统检测和修复(必须检测,不能省略)
    [root@CentOS6 ~]# umount /dev/myvg/mylv
    [root@CentOS6 ~]# e2fsck -f /dev/myvg/mylv
    e2fsck 1.41.12 (17-May-2010)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    MYLV: 12/327680 files (0.0% non-contiguous), 119694/5242880 blocks
缩减逻辑边界(文件系统)到指定大小
    [root@CentOS6 ~]# resize2fs /dev/myvg/mylv 3G
    resize2fs 1.41.12 (17-May-2010)
    Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.
    The filesystem on /dev/myvg/mylv is now 3145728 blocks long.
缩减物理边界到指定大小
    [root@CentOS6 ~]# lvreduce -L 3G /dev/myvg/mylv
      WARNING: Reducing active logical volume to 3.00 GiB.
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce myvg/mylv? [y/n]: y
      Size of logical volume myvg/mylv changed from 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).
      Logical volume mylv successfully resized.
重新挂载使用
    [root@CentOS6 ~]# mount /dev/myvg/mylv /testdir/
    [root@CentOS6 ~]# df -lh
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root   20G  1.9G   17G  11% /
    tmpfs                 491M     0  491M   0% /dev/shm
    /dev/sda1             190M   34M  147M  19% /boot
    /dev/mapper/vg0-usr   9.8G  2.1G  7.2G  23% /usr
    /dev/mapper/vg0-var    20G  471M   19G   3% /var
    /dev/mapper/myvg-mylv
                          3.0G  3.3M  2.8G   1% /testdir
    [root@CentOS6 ~]# cd /testdir/
    [root@CentOS6 testdir]# ls
    fstab  lost+found
LVM快照(snapshot)
  工作原理
      快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
      对于需要备份或者复制的现有数据集临时拷贝以及其它操作来说,快照是最合适的选择
      快照只有在它们和原来的逻辑卷不同时才会消耗空间
           在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
           当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
           快照中只含有原来的逻辑中更改的数据或者自生成快照后的快照中更改的数据
            建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend放大快照
      快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
      由于快照区与原本的LV共用很多PE的区块,因此快照区与被快照的LV必须要要在同一个VG上,系统恢复的时候的文件数量不能高于快照区的实际容量

  LVM快照有多种实现方法,其中一种是COW(Copy-On-Write),不用停止服务或将逻辑卷设为只读就可以进行备份,当一个 snapshot创建的时候只是拷贝原始卷里的元数据,而不是数据区的实际数据,所以snapshot的创建特别快。如果在创建快照的时间点,由于原始卷没有设置为只读,有写入数据(数据有变化),快照(snapshot)就会记录哪些数据发生变化,并备份旧数据,当恢复的时候就可以把旧数据恢复到对应位置。
  注意:
  1、快照卷和原卷要在一个卷组中,因为快照卷备份无变化数据的元数据类似于硬链接,所以不能跨卷组
  2、创建快照卷后,如果原卷中创建新的文件,是不会被快照卷记录的,因为新创建的文件的元数据是新创建的在快照中没有记录
  创建LV快照:
  lvcreate -L # -p r -s -n Snapshot_LV_Name Original_LV_Name
    -L  指定快照文件大小
    -p r 指定快照为只读
    -s  创建快照
   -n  指定快照的名字
   Original_LV_Name 需要创建快照LV的设备文件名字
示例:
  创建快照卷
          lvcreate -L 3G -p r -s -n testlv-snapshot /dev/testvg/testlv
  将创建的快照卷备份为文件(备份后快照卷就可以删除了)
          dd if=/dev/testvg/testlv-snapshot /tmp/testlv-backup.img
          lvremove /dev/testvg/testlv-snapshot
  挂载lv
  mount /dev/testvg/testlv /users
  删除lv中的某个文件
          rm -rf /users/FileName
  卸载lv
          umoun /dev/testvg/testlv
  备份恢复(恢复前卸载lv后,恢复后在挂载)
          dd if=/tmp/testlv-backup.img of=/dev/testvg/testlv
  重新挂载lv,查看删除的文件是否恢复
          mount /dev/testvg/testlv /users
          ls -al /users/FileName
演示:
为现有逻辑卷创建快照,并查看其信息
    [root@CentOS6 ~]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv
      Logical volume "mylv_snap" created.
    [root@CentOS6 ~]# lvdisplay /dev/myvg/mylv_snap
      --- Logical volume ---
      LV Path                /dev/myvg/mylv_snap
      LV Name                mylv_snap
      VG Name                myvg
      LV UUID                FCpSAD-ur03-K3mf-W2UO-qyxD-8bBd-MhX7sQ
      LV Write Access        read only
      LV Creation host, time CentOS6.localdomain, 2017-02-22 19:45:54 +0800
      LV snapshot status     active destination for mylv
      LV Status              available
      # open                 0
      LV Size                3.00 GiB   # 原卷大小
      Current LE             768
      COW-table size         512.00 MiB # 快照卷大小
      COW-table LE           128
      Allocated to snapshot  0.00%
      Snapshot chunk size    4.00 KiB
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:7
挂载快照
    [root@CentOS6 ~]# mkdir /testsnap
    [root@CentOS6 ~]# mount /dev/myvg/mylv_snap /testsnap
    mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only
    [root@CentOS6 ~]# df -lh
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root   20G  1.9G   17G  11% /
    tmpfs                 491M     0  491M   0% /dev/shm
    /dev/sda1             190M   34M  147M  19% /boot
    /dev/mapper/vg0-usr   9.8G  2.1G  7.2G  23% /usr
    /dev/mapper/vg0-var    20G  471M   19G   3% /var
    /dev/mapper/myvg-mylv
                          3.0G  3.3M  2.8G   1% /testdir
    /dev/mapper/myvg-mylv_snap
                          3.0G  3.3M  2.8G   1% /testsnap
测试
    # cd 到快照卷中,可以看到原卷中的数据
    [root@CentOS6 ~]# cd /testsnap/
    [root@CentOS6 testsnap]# cat /etc/issue
    [root@CentOS6 testsnap]# ls
    fstab  lost+found
    [root@CentOS6 testsnap]# cat fstab
    #
    # /etc/fstab
    # Created by anaconda on Sun Nov  6 11:54:11 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/vg0-root    /                       ext4    defaults        1 1
    UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot                   ext4    defaults        1 2
    /dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
    /dev/mapper/vg0-var     /var                    ext4    defaults        1 2
    /dev/mapper/vg0-swap    swap                    swap    defaults        0 0
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
    # 现在改变原卷中的文件 /testdir/fstab 中的数据,如下:
    [root@CentOS6 ~]# cd /testdir/
    [root@CentOS6 testdir]# ls
    fstab  lost+found
    [root@CentOS6 testdir]# vim fstab
    #
    # /etc/fstab
    # Created by anaconda on Sun Nov  6 11:54:11 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/vg0-root    /                       ext4    defaults        1 1
    UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot                   ext4    defaults        1 2
    /dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
    /dev/mapper/vg0-var     /var                    ext4    defaults        1 2
    /dev/mapper/vg0-swap    swap                    swap    defaults        0 0
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
NEW LINES IS TEXT # 新添加一行
    # 原卷中的数据已经发生改变,现在再看快照卷中的数据,发现还是原来的数据,并没有发生改变
    [root@CentOS6 testdir]# cd /testsnap/
    [root@CentOS6 testsnap]# pwd
    /testsnap
    [root@CentOS6 testsnap]# cat fstab
    #
    # /etc/fstab
    # Created by anaconda on Sun Nov  6 11:54:11 2016
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/vg0-root    /                       ext4    defaults        1 1
    UUID=493db72e-4b0d-4e2a-82fa-5e002f0bd667 /boot                   ext4    defaults        1 2
    /dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
    /dev/mapper/vg0-var     /var                    ext4    defaults        1 2
    /dev/mapper/vg0-swap    swap                    swap    defaults        0 0
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
把数据从快照卷中备份后,就可以删除快照了
    # 首先取消快照卷的挂载
    [root@CentOS6 ~]# umount /dev/myvg/mylv_snap
    # 然后删除快照卷
    [root@CentOS6 ~]# lvremove /dev/myvg/mylv_snap
    Do you really want to remove active logical volume mylv_snap? [y/n]: y
      Logical volume "mylv_snap" successfully removed
如果所有的数据均已备份,不需要了,全部卸载
    # 取消逻辑卷的挂载,并删除
    [root@CentOS6 ~]# umount /dev/myvg/mylv
    [root@CentOS6 ~]# lvremove /dev/myvg/mylv
    Do you really want to remove active logical volume mylv? [y/n]: y
      Logical volume "mylv" successfully removed
    # 删除卷组(VG),在删除前确保数据已经备份,或者不需要了
    [root@CentOS6 ~]# vgremove /dev/myvg
      Volume group "myvg" successfully removed
      [root@CentOS6 ~]# vgs
      VG   #PV #LV #SN Attr   VSize  VFree
      vg0    1   4   0 wz--n- 59.99g 7.99g
    # 最后删除 物理卷 PV  
    [root@CentOS6 ~]# pvremove /dev/sdb{1,2,3,5}
      Labels on physical volume "/dev/sdb1" successfully wiped
      Labels on physical volume "/dev/sdb2" successfully wiped
      Labels on physical volume "/dev/sdb3" successfully wiped
      Labels on physical volume "/dev/sdb5" successfully wiped
                    
                
                
            
        
浙公网安备 33010602011771号