zoukankan      html  css  js  c++  java
  • LVM逻辑卷管理器

    LVM概述


      通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进行实时的备份。

      对一般用户来讲,使用最多的是动态调整文件系统大小的功能。这样,你在分区时就不必为如何设置分区的大小而烦恼,只要在硬盘中预留出部分空闲空间,然后根据系统的使用情况,动态调整分区大小


      

    LVM相关概念


      1.物理卷,PV(PhysicalVolume) 

        物理卷可以是一整块磁盘或者是一个分区,他为LVM提供存储介质,PV与普通分区的差异是system ID为8e.

      2.物理卷组,VG(VolumeGroup)

        VG是由多个PV组成.

      3.物理扩展块,PE(PhysicalExtend)

        LVM默认使用4MB的PE块,它是LVM中最小的存储单位.LVM的VG最多有65534个PE,因此默认LVM最大256G.可以通过调整PE大小来改变VG的最大容量,PE概念与文件系统block类似.

      4.逻辑卷,LV(LogicalVolume)

        最终的VG会被切成LV, LV最终可以被格式化成类似分区的存储.LV的大小需要时PE的整数倍.

        

    LVM实现流程

      通过规划PV,VG,LV之后,就可以利用mkfs格式化工具把LV变成可使用的文件系统,并且该文件系统可以在将来进行扩充或者缩减.

      

    LVM使用的简单演示


      1.使用fdisk工具创建4个分区大小均为1G,systemID为8e,分别为/dev/vdb5,/dev/vdb6,/dev/vdb7,/dev/vdb8

    Disk /dev/vdb: 32.2 GB, 32212254720 bytes
    16 heads, 63 sectors/track, 62415 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x5d9b384e
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vdb1               1       41611    20971912+  83  Linux
    /dev/vdb2           41612       62415    10485216    5  Extended
    /dev/vdb5           41612       43693     1049296+  8e  Linux LVM
    /dev/vdb6           43694       45775     1049296+  8e  Linux LVM
    /dev/vdb7           45776       47857     1049296+  8e  Linux LVM
    /dev/vdb8           47858       49939     1049296+  8e  Linux LVM

      2.使用pvcreate创建pv

      几个跟pv相关的命令

    • pvcreate: 将物理分区创建成pv
    • pvscan: 查看pv
    • pvdisplay: 查看所有pv状态
    • pvmove: pv属性删除
    [root@zwj ~]# pvcreate /dev/vdb{5..8}
      Physical volume "/dev/vdb5" successfully created
      Physical volume "/dev/vdb6" successfully created
      Physical volume "/dev/vdb7" successfully created
      Physical volume "/dev/vdb8" successfully created
    [root@zwj ~]# pvscan
      PV /dev/vdb5                      lvm2 [1.00 GiB]
      PV /dev/vdb6                      lvm2 [1.00 GiB]
      PV /dev/vdb7                      lvm2 [1.00 GiB]
      PV /dev/vdb8                      lvm2 [1.00 GiB]
      Total: 4 [4.00 GiB] / in use: 0 [0   ] / in no VG: 4 [4.00 GiB]
    [root@zwj ~]#
    [root@zwj ~]# pvdisplay
      "/dev/vdb5" is a new physical volume of "1.00 GiB"
      --- NEW Physical volume ---
      PV Name               /dev/vdb5
      VG Name
      PV Size               1.00 GiB
      Allocatable           NO
      PE Size               0
      Total PE              0
      Free PE               0
      Allocated PE          0
      PV UUID               YAtMpF-klHI-ZCUk-cZlw-Ff7C-A5KK-1zlIly

      "/dev/vdb6" is a new physical volume of "1.00 GiB"
    此处省略。。。/dev/vdb6,7,8

      3.创建VG

      vg相关命令

    • vgcreate: 创建vg
    • vgscan: 查看系统上的vg
    • vgdisplay: 显示vg状态
    • vgextend: 在vg内增加pv
    • vgreduce: 在vg内删除pv
    • vgchange: 设置vg是否启动
    • vgremove: 删除vg

      

    [root@zwj ~]# vgscan                          #创建vg前查看是否有vg
      Reading all physical volumes.  This may take a while...
    [root@zwj ~]# vgcreate -s 16M mytestvg /dev/vdb{5,6,7}      #先把pv /dev/vdb{5,6,7}加入vg      -s参数用来设置PE大小,默认4M
      Volume group "mytestvg" successfully created
    [root@zwj ~]# vgscan                           #再次查看vg是否存在,
      Reading all physical volumes.  This may take a while...     
      Found volume group "mytestvg" using metadata type lvm2      #我们创建的名为mytestvg的vg
    [root@zwj ~]# vgdisplay                          #查看vg状态
      --- Volume group ---
      VG Name               mytestvg
      System ID
      Format                lvm2
      Metadata Areas        3
      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                3
      Act PV                3
      VG Size               2.95 GiB
      PE Size               16.00 MiB
      Total PE              189
      Alloc PE / Size       0 / 0
      Free  PE / Size       189 / 2.95 GiB
      VG UUID               Pf6hlf-90cR-qU49-lqGX-0eW8-TIkg-Anw6M4

    vg太小,把最后一个pv,/dev/vdb8加进去

    [root@zwj ~]# vgextend mytestvg /dev/vdb8
      Volume group "mytestvg" successfully extended
    [root@zwj ~]# vgdisplay  mytestvg
      --- Volume group ---
      VG Name               mytestvg
      System ID
      Format                lvm2
      Metadata Areas        4
      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                4
      Act PV                4
      VG Size               3.94 GiB
      PE Size               16.00 MiB
      Total PE              252
      Alloc PE / Size       0 / 0
      Free  PE / Size       252 / 3.94 GiB
      VG UUID               Pf6hlf-90cR-qU49-lqGX-0eW8-TIkg-Anw6M4

      4.创建LV

      与lv相关命令

    • lvcreate: 创建LV
    • lvscan: 查看系统上的LV
    • lvdisplay: 查看LV状态
    • lvextend: 增加LV容量
    • lvreduce: 缩小LV容量
    • lvremove: 删除LV
    • lvresize: 对LV大小进行调整
    [root@zwj ~]# lvcreate -l 252 -n mytestlv mytestvg          #-l 后面接要分配给LV的个数,这里把全部252个PE都给了mytestlv,-n 接lv名字
      Logical volume "mytestlv" created.
    [root@zwj ~]# lvscan
      ACTIVE            '/dev/mytestvg/mytestlv' [3.94 GiB] inherit  #lv信息
    [root@zwj ~]# lvdisplay                          #lv状态
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestlv            #逻辑卷路径,也是全名,必须写全,不可以只写mytestlv
      LV Name                mytestlv
      VG Name                mytestvg
      LV UUID                KiWyMs-Ia9T-O06E-dWRb-wcQ6-P1Ph-kYN0HK
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 18:10:11 +0800
      LV Status              available
      # open                 0
      LV Size                3.94 GiB
      Current LE             252
      Segments               4
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:1
    
    [root@zwj ~]#
    [root@zwj ~]# ls -l /dev/mytestvg/mytestlv
    lrwxrwxrwx 1 root root 7 May  6 18:10 /dev/mytestvg/mytestlv -> ../dm-1

     5.格式化为文件系统

    [root@zwj ~]# mkfs.ext3  /dev/mytestvg/mytestlv
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    258048 inodes, 1032192 blocks
    51609 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=1056964608
    32 block groups
    32768 blocks per group, 32768 fragments per group
    8064 inodes per group
    Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736
    
    Writing inode tables: done
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 21 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@zwj ~]# mkdir /mnt/lvm
    [root@zwj ~]# mount /dev/mytestvg/mytestlv /mnt/lvm/
    [root@zwj ~]# mount
    /dev/vda1 on / type ext3 (rw,noatime,acl,user_xattr)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
    /dev/vdb1 on /mydata type ext3 (rw)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    /dev/mapper/mytestvg-mytestlv on /mnt/lvm type ext3 (rw)
    [root@zwj ~]#

    6.扩展LV容量

    • 使用fdisk创建新的SystemID=8e的分区/dev/vdb9
    • 使用pvcreate创建新的PV
    • 使用vgextend加入新的PV
    • 使用lvresize京vg新加入的PE加入LV
    • 使用resize2fs增加文件系统容量
    [root@zwj ~]# pvscan
      PV /dev/vdb5   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb6   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb7   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb8   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      Total: 4 [3.94 GiB] / in use: 4 [3.94 GiB] / in no VG: 0 [0   ]
    [root@zwj ~]# pvcreate /dev/vdb9
      Physical volume "/dev/vdb9" successfully created
    [root@zwj ~]# pvscan
      PV /dev/vdb5   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb6   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb7   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb8   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb9                      lvm2 [1.00 GiB]
      Total: 5 [4.94 GiB] / in use: 4 [3.94 GiB] / in no VG: 1 [1.00 GiB]
    [root@zwj ~]# vgextend mytestvg /dev/vdb9
      Volume group "mytestvg" successfully extended
    [root@zwj ~]# vgdisplay mytestvg
      --- Volume group ---
      VG Name               mytestvg
      System ID
      Format                lvm2
      Metadata Areas        5
      Metadata Sequence No  4
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               0
      Max PV                0
      Cur PV                5
      Act PV                5
      VG Size               4.92 GiB
      PE Size               16.00 MiB
      Total PE              315
      Alloc PE / Size       252 / 3.94 GiB
      Free  PE / Size       63 / 1008.00 MiB
      VG UUID               Pf6hlf-90cR-qU49-lqGX-0eW8-TIkg-Anw6M4
    [root@zwj ~]# lvresize -l +63 /dev/mytestvg/mytestlv
      Size of logical volume mytestvg/mytestlv changed from 3.94 GiB (252 extents) to 4.92 GiB (315 extents).
      Logical volume mytestlv successfully resized.
    [root@zwj ~]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestlv
      LV Name                mytestlv
      VG Name                mytestvg
      LV UUID                KiWyMs-Ia9T-O06E-dWRb-wcQ6-P1Ph-kYN0HK
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 18:10:11 +0800
      LV Status              available
      # open                 0
      LV Size                4.92 GiB
      Current LE             315
      Segments               5
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    [root@zwj ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/vda1              20G   13G  5.9G  69% /
    /dev/vdb1              20G  936M   18G   5% /mydata
    /dev/mapper/mytestvg-mytestlv
                          3.9G   80M  3.7G   3% /mnt/lvm
    [root@zwj ~]# resize2fs /dev/mytestvg/mytestlv
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/mytestvg/mytestlv is mounted on /mnt/lvm; on-line resizing required
    old desc_blocks = 1, new_desc_blocks = 1
    Performing an on-line resize of /dev/mytestvg/mytestlv to 1290240 (4k) blocks.
    The filesystem on /dev/mytestvg/mytestlv is now 1290240 blocks long.
    [root@zwj ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/vda1              20G   13G  5.9G  69% /
    /dev/vdb1              20G  936M   18G   5% /mydata
    /dev/mapper/mytestvg-mytestlv
                          4.9G   80M  4.6G   2% /mnt/lvm          #扩展成功
    [root@zwj ~]# ls -l /mnt/lvm/
    total 20
    drwx------ 2 root   root   16384 May  6 18:15 lost+found
    drwxr-xr-x 4 weelin weelin  4096 May  6 18:18 test

    7.缩小LV容量(假设要把/dev/vdb5解放出来)

    • 使用resize2fs把文件系统大小设定为去除/dev/vdb5后的容量
    • 使用lvresize从LV中减去对应PE数目
    • 使用vgreduce把/dev/vdb5移出mytestvg, (前提要视情况使用pvmove把/dev/vdb5中的PE移到空闲的PV)
    • 使用pvremove去掉/dev/vdb5的PV属性

      

    [root@zwj ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/vda1              20G   13G  5.9G  69% /
    /dev/vdb1              20G  936M   18G   5% /mydata
    /dev/mapper/mytestvg-mytestlv
                          4.9G   80M  4.6G   2% /mnt/lvm
    [root@zwj ~]# resize2fs /dev/mytestvg/mytestlv 4096M        #缩小文件系统
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/mytestvg/mytestlv is mounted on /mnt/lvm; on-line resizing required
    On-line shrinking from 1290240 to 1048576 not supported.
    [root@zwj ~]# umount /dev/mytestvg/mytestlv             #需要离线搞
    [root@zwj ~]# resize2fs /dev/mytestvg/mytestlv 4096M
    resize2fs 1.41.12 (17-May-2010)
    Please run 'e2fsck -f /dev/mytestvg/mytestlv' first.
    [root@zwj ~]# e2fsck -f /dev/mytestvg/mytestlv            #检查卷
    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
    /dev/mytestvg/mytestlv: 187/322560 files (0.0% non-contiguous), 40486/1290240 blocks
    [root@zwj ~]# resize2fs /dev/mytestvg/mytestlv 4096M      #缩小文件系统
    resize2fs 1.41.12 (17-May-2010)
    Resizing the filesystem on /dev/mytestvg/mytestlv to 1048576 (4k) blocks.
    The filesystem on /dev/mytestvg/mytestlv is now 1048576 blocks long.
    [root@zwj ~]# lvresize -l -64 /dev/mytestvg/mytestlv      #缩小LV,通过减少PE方式
      WARNING: Reducing active logical volume to 3.92 GiB.
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce mytestvg/mytestlv? [y/n]: y
      Size of logical volume mytestvg/mytestlv changed from 4.92 GiB (315 extents) to 3.92 GiB (251 extents).
      Logical volume mytestlv successfully resized.
    [root@zwj ~]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestlv
      LV Name                mytestlv
      VG Name                mytestvg
      LV UUID                KiWyMs-Ia9T-O06E-dWRb-wcQ6-P1Ph-kYN0HK
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 18:10:11 +0800
      LV Status              available
      # open                 0
      LV Size                3.92 GiB                  #已经少了1G
      Current LE             251
      Segments               4
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    [root@zwj ~]# pvmove /dev/vdb5 /dev/vdb9          #这里很关键,虽然lv通过移除PE缩小了,但是/dev/vdb5的PE依然被数据占用,所以要把/dev/vdb5的PE移到空闲的PE中
       /dev/vdb5: Moved: 1.6%
      /dev/vdb5: Moved: 100.0%
    [root@zwj ~]# pvscan                        #/dev/vdb5的PE已经没有在使用中
      PV /dev/vdb5   VG mytestvg        lvm2 [1008.00 MiB / 1008.00 MiB free]
      PV /dev/vdb6   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb7   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb8   VG mytestvg        lvm2 [1008.00 MiB / 16.00 MiB free]
      PV /dev/vdb9   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      Total: 5 [4.92 GiB] / in use: 5 [4.92 GiB] / in no VG: 0 [0   ]
    [root@zwj ~]# vgreduce mytestvg /dev/vdb5             #从vg中移除PV
      Removed "/dev/vdb5" from volume group "mytestvg"
    [root@zwj ~]# pvscan
      PV /dev/vdb6   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb7   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb8   VG mytestvg        lvm2 [1008.00 MiB / 16.00 MiB free]
      PV /dev/vdb9   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb5                      lvm2 [1.00 GiB]
      Total: 5 [4.94 GiB] / in use: 4 [3.94 GiB] / in no VG: 1 [1.00 GiB]
    [root@zwj ~]#
    [root@zwj ~]# pvremove /dev/vdb5                 #把/dev/vdb5从PV家族开除
      Labels on physical volume "/dev/vdb5" successfully wiped
    [root@zwj ~]# pvscan
      PV /dev/vdb6   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb7   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb8   VG mytestvg        lvm2 [1008.00 MiB / 16.00 MiB free]
      PV /dev/vdb9   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      Total: 4 [3.94 GiB] / in use: 4 [3.94 GiB] / in no VG: 0 [0   ]
    [root@zwj ~]# mount /dev/mytestvg/mytestlv /mnt/lvm/       #重新挂载
    [root@zwj ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/vda1              20G   13G  5.9G  69% /
    /dev/vdb1              20G  936M   18G   5% /mydata
    /dev/mapper/mytestvg-mytestlv
                          4.0G   80M  3.7G   3% /mnt/lvm      #容量缩小成功
    [root@zwj ~]# ls -l /mnt/lvm/
    total 20
    drwx------ 2 root   root   16384 May  6 18:15 lost+found
    drwxr-xr-x 4 weelin weelin  4096 May  6 18:18 test

     LVM系统快照



       LVM有一个非常使用和重要的功能就是系统快照,所谓快照就是某一时刻系统的信息,快照可以用来恢复系统最初的状态.另外系统快照并不是把某一时刻的系统信息复制了一份,而只是把被改变的内容存到了快照区,未改变部分作为公用,所以并不会浪费太多的存储空间(这里非常类似来自相同docker镜像的容器共用一个image).

    想要使用LVM快照功能必须要创建快照区,用来存储被改变的部分.大小可以不用太大,但是要根据实际情况.

    [root@zwj lvm]# pvcreate /dev/vdb5                      #搞一个PV
      Physical volume "/dev/vdb5" successfully created
    [root@zwj lvm]# pvscan
      PV /dev/vdb6   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb7   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb8   VG mytestvg        lvm2 [1008.00 MiB / 16.00 MiB free]
      PV /dev/vdb9   VG mytestvg        lvm2 [1008.00 MiB / 0    free]
      PV /dev/vdb5                      lvm2 [1.00 GiB]
      Total: 5 [4.94 GiB] / in use: 4 [3.94 GiB] / in no VG: 1 [1.00 GiB]
    [root@zwj lvm]# vgextend mytestvg /dev/vdb5
      Volume group "mytestvg" successfully extended
    [root@zwj lvm]# vgscan
      Reading all physical volumes.  This may take a while...
      Found volume group "mytestvg" using metadata type lvm2
    [root@zwj lvm]# vgdisplay
      --- Volume group ---
      VG Name               mytestvg
      System ID
      Format                lvm2
      Metadata Areas        5
      Metadata Sequence No  21
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                5
      Act PV                5
      VG Size               4.92 GiB
      PE Size               16.00 MiB
      Total PE              315
      Alloc PE / Size       251 / 3.92 GiB
      Free  PE / Size       64 / 1.00 GiB
      VG UUID               Pf6hlf-90cR-qU49-lqGX-0eW8-TIkg-Anw6M4
    
    [root@zwj lvm]# lvcreate -l 64 -s -n mytestsnap /dev/mytestvg/mytestlv      #创建/dev/mytestvg/myetest/mytestlv快照  -s表示快照
      Logical volume "mytestsnap" created.
    [root@zwj lvm]# lvdisplay                                  
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestlv
      LV Name                mytestlv
      VG Name                mytestvg
      LV UUID                KiWyMs-Ia9T-O06E-dWRb-wcQ6-P1Ph-kYN0HK
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 18:10:11 +0800
      LV snapshot status     source of
                             mytestsnap [active]
      LV Status              available
      # open                 1
      LV Size                3.92 GiB
      Current LE             251
      Segments               4
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestsnap
      LV Name                mytestsnap
      VG Name                mytestvg
      LV UUID                ObobTa-rm3b-gfr9-EaQZ-XZsP-hJvM-PDbBNN
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 21:20:36 +0800
      LV snapshot status     active destination for mytestlv
      LV Status              available
      # open                 0
      LV Size                3.92 GiB
      Current LE             251
      COW-table size         1.00 GiB
      COW-table LE           64
      Allocated to snapshot  0.00%            #表示快照已经使用了多少存储,变更越多,占用存储越多
      Snapshot chunk size    4.00 KiB
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:4
    
    [root@zwj lvm]# mkdir -p /mnt/snapshot
    [root@zwj lvm]# mount /dev/mytestvg/mytestsnap /mnt/snapshot/
    [root@zwj lvm]# df
    Filesystem           1K-blocks     Used Available Use% Mounted on
    /dev/vda1             20641404 13441536   6151352  69% /
    /dev/vdb1             20641788   958272  18634924   5% /mydata
    /dev/mapper/mytestvg-mytestlv
                           4129472    80920   3841516   3% /mnt/lvm        #刚挂载时刻,完全相同
    /dev/mapper/mytestvg-mytestsnap
                           4129472    80920   3841516   3% /mnt/snapshot
    [root@zwj lvm]# cp -a /etc /mnt/lvm/                        #改变一下/mnt/lvm内容
    [root@zwj lvm]# df
    Filesystem           1K-blocks     Used Available Use% Mounted on
    /dev/vda1             20641404 13441536   6151352  69% /
    /dev/vdb1             20641788   958272  18634924   5% /mydata
    /dev/mapper/mytestvg-mytestlv
                           4129472   123644   3798792   4% /mnt/lvm
    /dev/mapper/mytestvg-mytestsnap
                           4129472    80920   3841516   3% /mnt/snapshot
    [root@zwj lvm]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestlv
      LV Name                mytestlv
      VG Name                mytestvg
      LV UUID                KiWyMs-Ia9T-O06E-dWRb-wcQ6-P1Ph-kYN0HK
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 18:10:11 +0800
      LV snapshot status     source of
                             mytestsnap [active]
      LV Status              available
      # open                 1
      LV Size                3.92 GiB
      Current LE             251
      Segments               4
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Logical volume ---
      LV Path                /dev/mytestvg/mytestsnap
      LV Name                mytestsnap
      VG Name                mytestvg
      LV UUID                ObobTa-rm3b-gfr9-EaQZ-XZsP-hJvM-PDbBNN
      LV Write Access        read/write
      LV Creation host, time zwj, 2017-05-06 21:20:36 +0800
      LV snapshot status     active destination for mytestlv
      LV Status              available
      # open                 1
      LV Size                3.92 GiB
      Current LE             251
      COW-table size         1.00 GiB
      COW-table LE           64
      Allocated to snapshot  4.15%            #快照区已经记录了变更,随时可以恢复
      Snapshot chunk size    4.00 KiB
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:4
    [root@zwj lvm]# ll /mnt/snapshot/
    total 20
    drwx------ 2 root   root   16384 May  6 18:15 lost+found
    drwxr-xr-x 4 weelin weelin  4096 May  6 19:12 test
    [root@zwj lvm]# ll /mnt/lvm/
    total 24
    drwxr-xr-x. 94 root   root    4096 May  6 21:21 etc
    drwx------   2 root   root   16384 May  6 18:15 lost+found
    drwxr-xr-x   4 weelin weelin  4096 May  6 19:12 test
    [root@zwj lvm]#

    当/mnt/lvm想要恢复为最开始建立快照时刻的状态时,可以进入/mnt/snapshot,然后打包备份里面的内容,这时 /dev/mytestvg/mytestsnap就可以卸载并删除了,之后格式化/dev/mytestvg/mytestlv,之后重新挂载到/mnt/lvm,之后把之前备份的内容解压到此处:

    • tar -czvf /mnt/backups/lvm.tar.gz /mnt/snapshot/*
    • umount /mnt/snapshot
    • lvremove /dev/mytestvg/mytestsnap
    • umount /mnt/lvm
    • mkfs.ext3 /dev/mytestvg/mytestlv
    • mount /dev/mytestvg/mytestlv /mnt/lvm
    • tar -zxvf /mnt/backups/lvm.tar.gz -C /mnt/lvm

    恢复完毕.

      

  • 相关阅读:
    sql like模糊查询
    mysql没有delete操作,那是delete from操作,
    j详细说明ava于clone办法
    基于ZooKeeper的Dubbo简单抽样登记中心
    度小于所述过程:es.exe
    Android 支付宝钱包手势password裂纹战斗
    How draw a stem -and -leaf & box-plot display by R.or Python
    POJ 2420 A Star not a Tree? (模拟退火)
    记userscripts.org
    基于最简单的FFmpeg包封过程:视频和音频分配器启动(demuxer-simple)
  • 原文地址:https://www.cnblogs.com/diaosir/p/6816608.html
Copyright © 2011-2022 走看看