zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    springMVC+MyBatis+Spring+maven 整合(1)
    mysql.zip免安装版配置
    5.6 循环依赖
    5.5 准备创建bean
    5.4 获取单例
    SQL Server(九)——事务
    SQL Server(七)——存储过程
    SQL Server(八)——触发器
    SQL Server(六)——索引、视图和SQL编程
    SQL Server(五)——常用函数 转
  • 原文地址:https://www.cnblogs.com/Link-Luck/p/9856717.html
Copyright © 2011-2022 走看看