LVM(logical volume manager,逻辑卷管理)是Linux环境下对磁盘分区进行管理的机制。他针对我们的数据不断扩大,在原有的动态磁盘基础上动态的调整磁盘的大小。

普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

物理存储介质(The physical media):系统存储设备,如硬盘,/dev/sda  /dev/hdadeng

物理卷(physical volume):指硬盘上从逻辑上与磁盘分区具有相同功能的设备,是LVM

的基本存储逻辑块。

卷组(volume group):类似于非LVM系统中的物理硬盘,由物理卷组成。

逻辑卷(logical volume):类似于非LVM系统的硬盘分区,在逻辑卷上可以建立文件系统。

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

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

工作原理:

(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

创建逻辑卷

创建物理卷----->创建卷组----->创建逻辑卷---->格式化----->开机自动挂载

root@localhost ~]# fdisk /dev/sda                   添加磁盘分区

[root@localhost ~]# partprobe 

[root@localhost ~]# pvcreate  /dev/sda{6,7,8}                创建物理卷
 
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda6       lvm2 ---  2.00g 2.00g
  /dev/sda7       lvm2 ---  2.00g 2.00g
  /dev/sda8       lvm2 ---  2.00g 2.00g
[root@localhost ~]# vgcreate datastore /dev/sda{6,7}		创建卷组


[root@localhost ~]# lvcreate  -n database -L 3G /dev/datastore     创建逻辑卷

   
[root@localhost ~]# mkfs.xfs /dev/datastore/database   		格式化
[root@localhost ~]# vim /etc/fstab								开机自动挂载
UUID=6f074fa0-341f-4ce6-9252-64929e1d7f42 /mnt  xfs defaults 0 0

扩展逻辑卷

[root@localhost ~]# vgextend datastore /dev/sda8
  Volume group "datastore" successfully extended
[root@localhost ~]# vgs
  VG        #PV #LV #SN Attr   VSize VFree
  datastore   3   1   0 wz--n- 5.99g 2.99g
[root@localhost ~]# lvs
  LV       VG        Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  database datastore -wi-a----- 3.00g                                                    
[root@localhost ~]# lvextend -L +2G /dev/datastore/database 
  Size of logical volume datastore/database changed from 3.00 GiB (768 extents) to 5.00 GiB (1280 extents).
  Logical volume database successfully resized.
[root@localhost ~]# lvs
  LV       VG        Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  database datastore -wi-a----- 5.00g   

删除所有逻辑卷,恢复

[root@localhost ~]# vim /etc/fstab							修改配置文件
[root@localhost ~]# lvremove /dev/datastore/database 			删除逻辑卷
Do you really want to remove active logical volume database? [y/n]: y
  
[root@localhost ~]# vgremove datastore 					删除卷组
 
[root@localhost ~]# pvremove /dev/sda{6,7,8}				 删除物理卷
 
[root@localhost ~]# fdisk /dev/sda							删除分区
[root@localhost ~]# partprobe 
[root@localhost ~]# fdisk -l

Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O si***imum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c466e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648    41371647    20480000   83  Linux
/dev/sda3        41371648    49563647     4096000   82  Linux swap / Solaris
/dev/sda4        49563648   125829119    38132736    5  Extended
/dev/sda5        49565696    50614271      524288   82  Linux swap / Solaris