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

基本术语:

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

PE:Physical Extent,物理块,每个物理卷PV被划分为的基本单元称为PE,PE的大小是可以配置的,默认为4MB,所以物理卷PV由大小等同的基本单元PE组成。

VG:Volume Group,卷组,类似于非LVM系统的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

LV:类似于非LVM系统中的磁盘分区,逻辑卷建立在VG之上。在逻辑卷之上可以建立文件系统。

下图为PV,VG,LV三者之间的关系:

     

LVM的创建和管理:

创建前准备:

      本文实在虚拟机中测试LVM的创建,首先添加一块磁盘,划分分区,分区号分别为sdb1,sdb2,sdb3,sdb5。

具体过程如下:

1.     查看磁盘分区

2.     用fdisk命令对/dev/sdb进行分区,且每一个分区分2G的空间:

分完之后查看分区列表,并保存退出:

3.     更改分区类型为8e:

4.     使用partx命令让内核重新识别新分区:

PV管理工具:

      pvcreate  /dev/DEVICE:创建pv

      pvs:简要pv信息显示

      pvdisplay:显示pv的详细信息

      pvchange:改变物理卷的属性

      pvmove:移动部分空间到其它物理卷

      pvremove:移除物理卷

      pvresize:调整物理卷的大小

VG管理工具:

      vgs:显示卷组信息

      vgdisplay:显示卷组详细信息

      vgcreate [-s #[kKmMgGtTpPeE]]VolumeGroupName  PhysicalDevicePath[PhysicalDevicePath...]:创建卷组

           -s:指明卷组上物理卷PE的大小

           -p:卷组中允许添加的最大的物理卷的个数

           -l:卷组上允许添加的最大的逻辑卷的个数

      vgchange:改变卷组属性

      vgrename:重命名组卷

      vgextend VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]:扩展组卷

      vgremove:移除组卷

      vgscan:扫描所有卷组

      vgreduce VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]:缩减组卷的空间,需先做pvmove

LV管理工具:

      lvcreate  -L #[mMgGtT] -n NAME VolumeGroup:创建逻辑卷

           -n:指定逻辑卷名字

           -L:指定逻辑卷大小

      lvremove /dev/VG_NAME/LV_NAME:移除逻辑卷

 

      df –lh:显示逻辑卷的空间信息

      lvs:显示逻辑卷信息

      lvdisplay:显示逻辑卷详细信息

      扩展逻辑卷:

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

           # resize2fs /dev/VG_NAME/LV_NAME

      缩减逻辑卷:

           # 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

快照:snapshot

      lvcreate -L #[mMgGtT] -p r -s -nsnapshot_lv_name original_lv_name

 

练习1:创建一个至少有两个PV组成的大小为6G的名为myvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为4G的逻辑卷mylv;挂载至/users目录;

1.     创建pv,并查看pv的详细信息;

2.     创建vg,并查看vg详细信息;

3.     创建lv,并查看lv详细信息;

4.     格式化逻辑卷并挂载;

练习2:扩展卷组myvg;

     

练习3:扩展mylv至5G;

     

练习4:收缩mylv至3G;

     

练习5:对mylv创建快照,并尝试基于快照备份数据,验正快照的功能;

1.     在/dev/myvg/mylv逻辑卷里首先创建文件,然后做快照;

2.     查看快照;

3.     移除快照;

练习6:若lvm系统中其中一块磁盘后者分区发生损坏,如何转移数据;

     

练习7:删除整个逻辑卷;