linux逻辑卷管理(LVM)

1.什么是LVM 

  LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM是磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷 (physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分 区、磁盘等)比较,却包含有与LVM相关的管理参数。

2.LVM解决了什么难题


  每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。 虽然现在有很多动态调整磁盘的工具可以使用,例如PartationMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解决问题。 因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑 盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。  

  归纳来讲LVM提供两种比较厉害的功能:

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

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

3.几个需要了解的术语

物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元
 

物理卷(Physical Volume,PV)

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

卷组(Volume Group,VG)

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

逻辑卷(Logical Volume,LV)

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

物理块(Physical Extent,PE)

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

逻辑块(Logical Extent,LE)

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

图所示LVM抽象模型,展示了PV、VG、LV三者之间关系:

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。

系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

4.LVM的逻辑结构

5、建立lvm逻辑卷

实验可以用一个bash来监控逻辑卷的状态

watch  -n  1 'pvs;echo ====;vgs;echo ======;lvs;echo ====;df -h /data'

步骤如下:

1)准备物理卷,要用t修改ID为Linux LVM

2)创建物理卷

 

3)创建物理卷组

 

4)创建逻辑卷

 

5)格式化设备

 

6)设备挂载投入使用

 

6.lvm拉伸(不可缩减)

1.xfs文件

(1)当vg中剩余容量充足的时候(xfs文件)

 分两步

   lvextend  -L 60M  /dev/vg0/lv0

   xfs_growfs /dev/vg0/lv0

 可以看到lvm已经被拉伸至57M

 

(2)当vg剩余容量不足的时候

1)新建分区且分区标签为lvm

2) 生成物理卷 /dev/vdb2

 

3)  物理卷/dev/vdb2加到物理卷组/dev/vg0

 

4)格式化/dev/vg0/lv0

5)扩展逻辑卷/dev/vg0/lv0容量150M

lvextend  -L 150M  /dev/vg0/lv0

  xfs_growfs /dev/vg0/lv0

 

2.ext文件系统

1)卸载:umount   /dev/vg0/lv0

2)格式化:mkfs.ext4  /dev/vg0/lv0

1.拉伸

lvextend   -L  165M  /dev/vg0/lv0

resize2fs   /dev/vg0/lvo

2.缩减

1.对设备

1)umount  /data/(如果之前挂载了,这里卸载掉)

2)   e2fsck -f  /dev/vg0/lv0      ##先扫,防止缩的太小把数据弄坏了

3)   resize2fs /dev/vg0/lv0 100M   ##刷新扩展空间

4)mount   /dev/vg0/lv0 /data

5)lvreduce  -L 100M /dev/vg0/lv0    ##减小空间

6)可选择恢复为xfs格式

mkfs.xfs    /dev/vg0/lv0   -f

2.对卷组

1>移除含有数据的设备

1).将转移数据到其他pv

[root@localhost ~]#  pvmove  /dev/vdb1  /dev/vdb2

 

2).从vg0中移除 /dev/vdb1

[root@localhost ~]# vgreduce  vg0  /dev/vdb1

3)删除物理卷 /dev/vdb1

[root@localhost ~]# pvremove  /dev/vdb1

 

2>移除不含有数据的设备

1).从vg0中移除 /dev/vdb1

[root@localhost ~]# vgreduce  vg0  /dev/vdb1

2).删除物理卷 /dev/vdb1

[root@localhost ~]# pvremove  /dev/vdb1

 

7.lvm的快照

1.建立快照

[root@localhost ~]#  lvcreate -L 40M -n  lv0backup  -s  /dev/vg0/lv0

 

[root@localhost ~]# mount  /dev/vg0/lv0backup    /data

[root@localhost ~]# rm -fr /data/*

如果在快照里删除了某些东西,还可以恢复。先删除快照,在照一遍

2.lvm 的删除

[root@localhost ~]# umount /data/

[root@localhost ~]# lvremove  /dev/vg0/lv0backup

[root@localhost ~]# lvremove  /dev/vg0/lv0

[root@localhost ~]# vgremove  vg0

 

猜你喜欢

转载自blog.csdn.net/forever_wen/article/details/81410634