小Q:书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有

      书籍,就好像鸟儿没有翅膀。                        —— 莎士比亚


===============================简介=================================

LVM:Logical Volume Manager(逻辑卷管理),它是Linux环境下对磁盘分区进行管理的一种机制


来由:每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评LVM模型

估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该

分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚

至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。


wKioL1Yo8QjD8cN0AAFpq5JUnt4671.jpg

卷组volume group (VG) 

卷组是LVM中最高抽象层,是由一个或多个PV所组成的存储器池。 

物理卷physical volume (PV) 

典型的物理卷就是硬盘分区,也可以是整个硬盘或已创建的Software RAID 卷,是LVM的基本存储逻辑块,

包含有与LVM相关的管理参数。

物理块physical extent (PE) 

物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同;默认为4MB,所以PV

由大小等同的基本单元PE组成。

逻辑块logical extent (LE) 

逻辑卷按“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。LE的大小和PE是相同的。

逻辑卷logical volume (LV) 

逻辑卷相当于非LVM系统中的分区,它在VG上建立,是一个标准的块设备,可以在其上建立文件系统


线性映射 

线性映射-把一定范围的物理块按顺序分配给逻辑卷,如LV的LE 1-99映射到PV1,LE 100-347映射

到PV2。

交错模式 

交错模式-将把逻辑块交错映射到不同的物理卷中,如 LV的LE 1映射为PV1的PE1,LE 2映射为PV2的PE1,LE 3映射为PV1的PE2.。这种方式可以提高逻辑卷的性能,但是采用这种方式建立的逻辑卷将不

能在它们所在的物理卷中扩展。


wKiom1Yo8Nihfpj0AADXFK-MuoI226.jpgwKioL1Yo8QLhVZ6yAACaT5WTU6s559.jpg

==============================创建LVM================================


第一步创建物理文件系统

命令: fdisk /dev/sdb          ——创建物理卷并修改ID为8e

wKioL1Yo8ZqQEadTAAFlSI_zvGg214.jpg

第二步初始化物理卷为PV

创建PV,添加几个文件系统,然后再添加一个RAID文件系统

命令:pvcreate /dev/sdb{5,6,7,8,9}      ————   添加文件系统到PV

      pvcreate /dev/md0              ————   添加raid文件系统到PV

      pvs,pvdisplay              ————   查看系统现有PV

wKiom1Yo8Z2wCoUrAAER0vML67A094.jpg

第三步创建卷组VG

添加PV到卷组,创建VG卷组

命令:vgcreate  [-s=16m]     test_vg      /dev/sdk1  /dev/sdl1

                                           指定PE大小  VG卷组名   要添加到VG中的PV

                                          使用man帮助看一下使用方法

wKiom1Yo8bvhIWu6AACD690l2WI326.jpg

看上面的例子,我们添加PV到卷组中创建VG

命令:vgcreate vg0 /dev/sdb{5,6,7,8,9} /dev/md0

      vgs,vgdisplay

wKioL1Yo8hXRZ_W4AACSv6u6-64853.jpg

注释:[-s=16m] 里面的内容可选,修改默认的PE单元大小,默认为4M,最大一个卷组是256G,修改默

认单元为16M,最大的卷组单元是1024G

命令:vgdisplay testvg | grep "Total PE"

看看默认的PE大小为4M,PV个数为6个,VG的总大小为6.7.G

wKioL1Yo8jnyDRHIAABk6lrYONs092.jpg

其他VG卷组的一些操作

激活VG 

在被激活之前,VG与LV是无法访问的

用man帮助看一下

wKioL1Yo8lzDLECjAAA582VIBm0816.jpg

命令:vgchange -a y vg0      —— 激活vg0卷组

wKioL1Yo8wWj2WsUAABK9rY1acM196.jpg

当不再使用VG时,休眠了vg0卷组 

命令:vgchange -a n vg0     —— 使之不再可用

wKioL1Yo8lzDOoIqAAAvxp8rJ9A557.jpg

移除VG 

在移除一卷组前应确认卷组中不再有逻辑卷 

命令:vgchange -a n vg0    ———— 休眠卷组 

vgremove  vg0        ———— 移除该卷组

wKioL1Yo8xuiX6F2AADTeiZYmk8878.jpg

为VG增加新PV 

当卷组空间不足时,可以加入新的物理卷来扩大VG卷组容量,这时可用命令vgextend 

pvcreate  /dev/sdb15      —— 初始化sdb15为PV

vgextend  vg0  /dev/sdb15     —— 把sdb15加入到卷组vg0中 

其中/dev/sdb15是新的PV,当然在这之前,它应使用pvcreate初始化

wKiom1Yo8vDx_zNNAAGu4tvulgU595.jpg


从VG移除PV 

在移除PV之前,应确认该PV没用被LV使用

命令:pvdisplay  /dev/sdb15        —— 查看pv有没有使用 

wKioL1Yo8xzTTOVvAADeyKYqLkU852.jpg


如这个PV仍在被使用,在确认它未被使用后,可用命令vgreduce把它从VG中删除 

命令:vgreduce  vg0  /dev/sdb15  ———— 从vg中删除pv

wKiom1Yo8yWQrelGAAFeYvo9G7g230.jpg


如果所在PV上有数据,则应把数据传移到其它PV上

注释:若要把一个PV从VG中移除,应首先把其上所有活动PE中的数据转移到其它PV上,而新的PV必须是本VG的一部分,有足够的空间,如要把PV1:/dev/md0上的数据移到PV2:/dev/sdb6上可用,建议在转移数据之前备份LV中的数据,如果在该PV之上的LV采用交错方式存放,则这个转移过程不能被打断。

命令:pvmove  /dev/md0 /dev/sdb6

wKioL1Yo81GSCFcpAABK1Xuooz0048.jpg