逻辑卷详解

  LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是 /boot分区不能基于LVM创建,必须独立出来

逻辑卷名词解释

  • PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区。
  • VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV。
  • LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。

1.逻辑卷创建

  逻辑卷创建首先需要准备新的硬盘或者分区(为了后期便于维护管理,记得给分区加上8e标示)

  • 将磁盘或分区转换成为物理卷PV
    pvcreate /dev/sdb1 /dev/sdb2
    查看物理卷 pvs pvdisplay
  • 创建卷组vg0,将创建好的物理卷添加到卷组中,默认的PE大小是4MB,PE是卷组的最小存储单元,可以用过-s参数修改
    vgcreate vg0 /dev/sdb1 /dev/sdb2
    查看卷组 vgs vgdisplay
  • 创建逻辑卷lvdata
    lvcreate -L 1G -n lvdata vg0
  • 在逻辑卷上创建文件系统
    mkfs.ext4 /dev/vg0/lvdata
  • 挂载,将逻辑卷挂载到一个空目录下
    mount /dev/vg0/lvdata /mnt/data
  • 为了便于以后实现自动挂载,需要再/etc/fstab文件里面添加一条记录通过mount -a命令使配置文件生效

2.逻辑卷扩展

  扩展逻辑卷,先关心下卷组里的可用空间vgdsiplay,给逻辑卷拓展空间,不会影响以前空间的使用。

  • 拓展逻辑卷,指定扩展大小
    lvextend -L +1G /dev/vg0/lvdata
    -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
    -l:指定逻辑卷的大小(LE数)。
  • 同步拓展文件系统
    xfs_growfs /mnt/data/ xfs文件系统使用,后面跟挂载点
    resize2fs /dev/vg0/lvdata ext文件系统使用,后台跟逻辑卷名
    lvextend -r -l +500 /dev/vg0/lvdata 通用写法,推荐

3.卷组拓展

  当卷组vg可用空间不足情况下,可以用分区或者新磁盘添加到卷组中

  • vgextend vg0 /dev/sdb3

4.逻辑卷缩减

  逻辑卷空间缩减,有一定风险,应当谨慎

  • 先卸载逻辑卷
    umount /mnt/data
  • 通过e2fsck命令检查逻辑卷
    e2fsck -f /dev/vg0/lvdata
  • resize2fs命令缩减文件系统空间
    resize2fs /dev/vg0/lvdata 2G
  • 缩减逻辑卷空间
    lvreduce -L 2G /dev/vg0/lvdata
  • 重新挂载
    mount /dev/vg0/lvdata /mnt/data

注意:逻辑卷缩减只能是ext系列文件系统,xfs只支持拓展,不支持缩减

5.卷组缩减(由于磁盘或者分区故障,将数据转移到相同卷组其他空间)

  • 通过pvmove命令转移空间数据
    pvs 查看下各物理卷的剩余空间
    pvmove /dev/sdb1 /dev/sdb2
  • 通过vgreduce命令将坏的磁盘或者分区从卷组vg0中移除
    vgreduce vg0 /dev/sdb1
  • 通过pvremove命令将即将坏的磁盘或者分区从逻辑卷系统中删除
    pvremove /dev/sdb1

pvmove命令,需要先关注下pvs中,各pv下剩余空间,预先规划,再操作
更多pvmove命令的案例可以参考网址:
http://man7.org/linux/man-pages/man8/pvmove.8.html

6.逻辑卷的删除

  • 先取消挂载
    umount /mnt/data
  • 修改/etc/fstab文件里面的挂载信息,否则系统启动会出故障
  • lvremove删除逻辑卷
    lvremove /dev/vg0/lvdata
  • vgremove删除卷组
    vgremove vg0
  • pvremove将物理卷转换为分区或者磁盘
    pvremove /dev/sdb2 /dev/sdb3
  • 如果有分区,修改分区标示,取消逻辑卷标示,换成普通标示

7.逻辑卷快照创建

  • 快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
  • 对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适
    的选择
  • 快照只有在它们和原来的逻辑卷不同时才会消耗空间
  • 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所
    改变才会使用这些空间
  • 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
  • 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的
    数据
  • 建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照
  • 由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同
    一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量
lvcreate -L # -n SLV_NAME -s -p r /PATH/LV 【指定为那个逻辑卷创建的】
-s:表示快照卷

-p:指定权限r|w

-L:快照卷大小

xfs 
lvcreate  -s -n mysql_snapshot2 -L 1G /dev/vg0/mysql 
//mount -o nouuid,ro  /dev/vg0/mysql_snapshot2  /mnt/snap/

ext4 
lvcreate  -n binlog_snapshot -s -p r -L 1G /dev/vg0/binlog 
//mount /dev/vg0/binlog_snapshot /mnt/snap/
** 注意,快照是不需要格式化和挂载的,为了方便查看,可以挂在到文件目录下 **

8.逻辑卷快照还原

  • 取消逻辑卷挂载
    umount /mnt/data
  • 执行lvconvert将快照的数据合并到原逻辑卷
    lvconvert --merge /dev/vg0/binlog_snapshot
  • 重新挂载原逻辑卷
    mount /dev/vg0/lvdata /mnt/data