LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

LVM提供两种比较厉害的功能:

     1):可以动态的增大或者缩小磁盘的大小而不影响磁盘原有的数据

     2):提供一种实现数据备份的通道--快照功能

 LVM基本术语

    LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:

 

物理存储介质(The physical media)

这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。

 

物理卷(physicalvolume)

物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

 

卷组(Volume Group)

LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

 

逻辑卷(logicalvolume)

LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

 

PE(physical extent)

每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小可配置,默认为4MB。

 

LE(logical extent)

逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。



wKiom1XgVtiAiHjSAABBcT0b7xo674.gif


LVM: Logical Volume Manager, Version: 2


  dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;

/dev/dm-#

  命名:

  /dev/mapper/VG_NAME-LV_NAME

/dev/mapper/vol0-root

  /dev/VG_NAME/LV_NAME

/dev/vol0/root

CentOS6系统中默认包含了LVM,如下图,vg0-root为/dm-0的链接文件,dm-0为LV

wKiom1XgXHvzG5K2AAEOTa-OZ_0356.jpg


LVM创建:

  首先创建分区,如图:

wKiom1XgXqvh5LjgAALgUgMyJyk650.jpg

wKioL1XgYb_DjlokAAK2zcoz-Cs791.jpg

wKiom1XgX6SzINbDAAD7bkFvEz0935.jpg

    用p命令查询,看到有分区sda3,sda5,sda6可用接下来尝试将分区sda3,sda5,sda6调整为逻辑卷可用的格式:8e(Linux LVM)

wKioL1XgY5PQCsCtAAOsdUwEwz4285.jpg

wKiom1XgYXiwF2HBAAElR_xoVRc150.jpg

wKiom1XgY2KitzmxAAKl0h0_3Dg135.jpg

  pv管理工具:

pvs:简要pv信息显示

pvdisplay:显示pv的详细信息

pvcreate /dev/DEVICE: 创建pv

        pvcremove /dev/DEVICE: 移除pv

wKioL1XgZ2DyuRD0AAFc-TyDDZQ388.jpg

  vg管理工具:

vgs

vgdisplay

vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath     

                  [PhysicalDevicePath...]

vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]

vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]

                  需先做pvmove

                  pvmove /dev/sda5       vgreduce myvg /dev/sda5

        vgremove  

wKioL1XgakvA3Sg6AAG1we-iR7s396.jpg

wKiom1Xgal6jQmgJAAG3RY06XMk626.jpg

  lv管理工具:(LV创建很容易,但改变大小有着局限性)

lvs

lvdisplay          lvdisplay /dev/mapper/vg0-root(指明查看/dev/mapper/vg0-root)

lvcreate -L #[mMgGtT] -n NAME VolumeGroup    lvcreate -L 2G -n mylv myvg

lvremove /dev/VG_NAME/LV_NAME

wKiom1XgdnyxGqxLAAMNhv_Pi3I589.jpg

            接下来可以对逻辑卷/dev/myvg/mylv进行挂载和格式化等操作。


  扩展逻辑卷:

# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

# resize2fs /dev/VG_NAME/LV_NAME

wKiom1XgeSuR_0bxAAGI3uWAVME244.jpg

  注:扩展LVM需先扩展物理边界,再扩展逻辑边界,如上图,否则df -lh会发现LV大小无变化


  缩减逻辑卷:(缩减有一定风险,生产环境一般不缩减LVM大小)

# umount /dev/VG_NAME/LV_NAME

# e2fsck -f /dev/VG_NAME/LV_NAME

# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

# mount

    wKioL1XggeGj_vZSAAPW0Ept0TA595.jpg


  快照:snapshot 

       lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

    注意两点:

      1)快照也是一个逻辑卷

      2)快照只能对同一卷组的逻辑卷进行备份

   #lvcreate -L 512M -s -n lvm-snap -p r /dev/myvg/mylv   //创建一个512M的快照(-s指定这是         一个快照,-n指定快照名字,-p指定这个快照的权限) 

   #mkdir /snap                       //创建一个目录作为快照卷的挂载点

   #tar -jcf /tmp/snap.tar.gz  /snap/* //备份快照卷的内容到/tmp下