• 逻辑卷管理器(LVM:Logical Volume Manager)

    • 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
    • 详细介绍:百度一下,你就知道!

      (1)将设备指定为物理卷,物理卷是用固定大小的物理区域(Physical Extent)来定义的
      (2)用一个或者多个物理卷来组成一个逻辑卷组(Volume Group)
      (3)在卷组上创建类似于磁盘分区的逻辑卷(Logical Volumes)

    • 逻辑卷设备名:/dev/dm-#

      由于设备名无法辨别到底是哪个卷组上的逻辑卷,通常创建逻辑卷时系统会自动生成指向设备的软链接:
         (1)/dev/mapper/VG_NAME-LV_NAME   #/dev/mapper/vol0-lv0
         (2)/dev/VG_NAME/LV_NAME       #/dev/vol0/lv0

    • 逻辑卷快照:

      (1)快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享。
      (2)由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须在同一个VG,系统恢复的时候的文件数量不能高于快照区的实际容量。

  • PV管理工具:

    • 显示pv信息:
      pvs # 简要显示pv信息
      pvdisplay #详细显示
    • 创建和移除pv:
      pvcreate /dev/device #将硬盘初始化为物理卷(PV)
      pvremove /dev/device #移除物理卷
  • 卷组(VG)管理工具:

    • 显示VG信息:
      vgs
      vgdisplay
    • 创建卷组:
      vgcreate [options] VG_NAME PV_DEVICE #vgcreate 选项 卷组名 PV设备名
      -s : 指定卷组上的物理卷的PE大小
    • 增加、删除卷组设备:
      vgextend VG_NAME PV_DEVICE #增加一个新的PV到卷组
      vgreduce VG_NAME PV_DEVICE #删除设备
    • 删除卷组:
      vgremove VG_NAME
  • 逻辑卷(LV)管理工具:

    • 显示LV信息:
      lvs
      lvdisplay
    • 创建逻辑卷:
      lvcreate (-L|-l) x -n LV_NAME VG_NAME
      -L : 指定逻辑卷的大小,以"kKmMgGtT"为单位,如:10G
      -l : 以PE块数为单位,如:当PE的大小为4M时,10G的空间=2560块PE
      lvcreate -l 60%VG -n LV_NAME VG_NAME #用VG60%的空间来创建LV
      lvcreate -l 100%FREE -n LV_NAME VG_NAME #用VG所有剩余的空间来创建LV
    • 删除逻辑卷:
      lvremove /dev/VG_NAME/LV_NAME
    • 重设文件系统大小:
      fsadm [options] resize device [new_size[BKMGTEP]]
      resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size] #增加或减少LV大小时要先修改文件系统的大小
    • 扩展逻辑卷:
      lvextend -L [+]n[mMgGtT] /dev/VG_NAME/LV_NAME
      lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
    • 缩减逻辑卷:
      lvreduce -L [+]n[mMgGtT] /dev/VG_NAME/LV_NAME
  • LVM快照:

    • 创建快照:
      lvcreate -L 1G -s -n lvname-snapshot -p r /dev/VG_NAME/LV_NAME
      #快照相当于一个新的lv;-s:创建快照;-n:快照名;-p r:设置快照为只读;/dev/VG_NAME/LV_NAME:要创建快照的逻辑卷
    • 恢复快照:
      lvconvert --merge /dev/VG_NAME/lvname-snapshot



  • 创建LVM:

    • 首先准备三块不同大小的硬盘:
      Linux逻辑卷管理器(LVM)及LVM实现_第1张图片
    • (1)创建物理卷(PV):
      pvcreate /dev/sd{b,c,d} #将sdb,sdc,sdd初始化为物理卷(PV)
      pvs #查看pv信息
      Linux逻辑卷管理器(LVM)及LVM实现_第2张图片https://s4.51cto.com/images/blog/201712/07/5d213551a4fb52d14a1d7648a0338b68.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    • (2)创建卷组(VG):
      vgcreate vg0 /dev/sd{b,c,d} #在刚才的物理卷上创建一个卷组vg0
      vgs
      Linux逻辑卷管理器(LVM)及LVM实现
    • (3)创建逻辑卷(LV):
      lvcreate -n lv0 -L 180G vg0 #从vg0中分配180G的空间,用来创建逻辑卷lv0
      Linux逻辑卷管理器(LVM)及LVM实现
    • (4)格式化逻辑卷并挂载:
      ll /dev/vg0/lv0 #ll命令可以看到/dev/vg0/lv0这个设备其实是个软链接,链接到/dev/dm-0
      mkfs.xfs /dev/vg0/lv0 #将设备格式化成xfs文件系统
      mount /mnt/lv0 #用mount挂载之后就可以正常使用了
      Linux逻辑卷管理器(LVM)及LVM实现_第3张图片
  • 扩展逻辑卷:

    • (1)查看卷组中的可用空间:
      vgdisplay #vgdisplay可以看到所有卷组的信息,当然我们只有一个卷组vg0
      Linux逻辑卷管理器(LVM)及LVM实现_第4张图片
    • (2)将剩余的空间全部分配给lv0:
      lvextend -l +100%FREE /dev/vg0/lv0 #-l +100%FREE : 就是将所有的空闲的空间分配给lv0
      Linux逻辑卷管理器(LVM)及LVM实现_第5张图片

    (3)同步文件系统空间:
    df -h |grep lv0 #因为刚才我们的操作都是在挂载的状态下执行的,所以用df -h可以看到,
    #虽然我们成功将lv0扩容了,但是文件系统并没有变大,所以我们要同步一下文件系统。
    Linux逻辑卷管理器(LVM)及LVM实现
    xfs_growfs /mnt/lv0 #xfs_growfs可以扩展xfs文件系统,这里我们没有加任何选项,也就是将文件系统扩展至最大

    ![](https://s4.51cto.com/images/blog/201712/07/e813185f40a94e4c4b0770bf1cc52590.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
  • 缩减逻辑卷:

    • (1)取消挂载:
      umount /mnt/lv0
    • (2)检查文件系统
      fsck -f /dev/vg0/lv0 #ext系列文件系统需要做这一步,我们是xfs,忽略即可
    • (3)调整文件系统大小:

    • xfs文件系统并不支持减小空间,如果非要减小的话,只能调整重新格式化才能挂载使用,当然格式化之后数据什么的肯定是会丢失的了。
      所以,这里划重点!重要的事情说三遍,这是第二遍,第...三...遍......!!!

    • ext系列的可以减小:
      lvreduce -L -100G /dev/vg0/lv0 #将lv0的空间减少100G
      resize2fs /dev/vg0/lv0 #ext系列文件系统使用这个命令调整

    Linux逻辑卷管理器(LVM)及LVM实现_第6张图片

    • 当然我假装不知道xfs不能减少的样子:
      xfs_growfs /dev/vg0/lv0/
      mount /dev/vg0/lv0 /mnt/lv0
      Linux逻辑卷管理器(LVM)及LVM实现
    • 然后就.... 只能重新格式化了:
      Linux逻辑卷管理器(LVM)及LVM实现_第7张图片
  • 快照:

    • 先在/mnt/lv0下创建一些文件:
      Linux逻辑卷管理器(LVM)及LVM实现
    • 创建快照:
      lvcreate -L 20G -s -n lvname-snapshot -p r /dev/vg0/lv0
      Linux逻辑卷管理器(LVM)及LVM实现

    • 然后我们把刚才在/mnt/lv0下创建的文件删除并且恢复快照:
      rm -fr /mnt/lv0/*
      ls /mnt/lv0/
      umount /mnt/lv0
      lvconvert --merge /dev/vg0/lvname-snapshot #使用快照恢复
      mount /dev/vg0/lv0 /mnt/lv0
      Linux逻辑卷管理器(LVM)及LVM实现_第8张图片
    • 删除快照:
      lvremove /dev/vg0/lvname-snapshot #若已经使用快照恢复,快照将会自动删除
      Linux逻辑卷管理器(LVM)及LVM实现