linux学习之lvm-逻辑卷管理器
一、简介
lvm即逻辑卷管理器(logical volume manager),它是linux环境下对磁盘分区进行管理的一种机制。lvm是建立在硬盘和分区之上的一个逻辑层,来提高分区管理的灵活性。它是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层的磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。在文件系统看来,逻辑卷组就是一个完整的硬盘。
二、lvm中的一些概念
- 物理存储介质(the physical media)
这里指的是系统的存储设备:硬盘,是存储系统最底层的存储单元。通俗的讲,就是我们能看到的能摸到的物理设备。
- 物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备如(RAID),是lvm的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与lvm相关的管理参数。物理卷可以是整个硬盘,硬盘上的分区或从逻辑上与磁盘分区具有同样功能的设备如(RAID)。物理卷在lvm系统中是最底层的概念。通俗的理解,就是含有lvm参数的硬盘或者分区。我们一般用fdisk等划分的分区,不能直接被lvm系统所管理,因为他们没有lvm系统管理的相关参数,没有与lvm系统建立连接。所以需要需要将它们变为可以被lvm系统管理的物理卷PV,然后我们就可以直接用lvm系统来进行相关的操作了。
- 卷组(volume group)
lvm卷组类似于非lvm系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个lvm分区(逻辑卷),lvm卷组由一个或多个物理卷组成。
- 逻辑卷(logical volume)
lvm逻辑卷类似于非lvm系统中的硬盘分区,在逻辑卷之上可以建立文件系统(如/home或者/usr等)。
- pe(physical extent)
每一个物理卷被划分为称为PE的基本单元,具有唯一编号的PE是可以被lvm寻址的最小单元。PE的大小是可配置的,默认为4MB。PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE大小需要一致。
- le(logical extent)
逻辑卷也被划分为称为LE的可被寻址的基本单位。在同一个卷组中,le的大小和pe是相同的,并且一一对应。
三、一些特殊理解
- 可以看到,物理卷pv是由大小相等的基本单元pe组成,一个卷组由一个或多个物理卷组成。
- 和非lvm系统将分区信息的元数据保存在位于分区的起始位置中的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。
- 系统启动lvm时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置,当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。
- lvm的基本构成:整块裸硬盘或某个分区--》物理卷PV--》卷组VG--》逻辑卷LV。然后再逻辑卷上面制作文件系统,将其用mount挂载。
- 如果要使用整块硬盘最为物理卷的话,这块硬盘必须没有分区表信息,需要清楚硬盘分区表的信息。
四、lvm操作
//查看物理磁盘状态
#fdisk -l
//使用fdisk对/dev/sdb分区
#fdisk /dev/sdb
//进入lvm模式
#lvm
//查看lvm磁盘状态
#lvmdiskscan
//查看lvm的配置文件
#dumpconfig
//创建PV
#pvcreate /dev/sdb1
//查看PV状态
#pvdisplay
//再次查看lvm磁盘状态
#lvmdiskscan
//创建VG
#vgcreate vg_name /dev/sdb1
//查看VG状态
#vgdisplay
//查看所有VG
#vgs
//创建LV
#lvcreate --size 10G --name lv_name vg_name
//查看lv状态
#lvs
//退出lvm配置模式
#exit
//ext3格式化逻辑卷
#mkfs -t ext3 -j /dev/vg_name/lv_name
//使用lvm,首先创建挂载点
#mkdir /mnt/lvm
//挂载卷
#mount /dev/vg_name/lv_name /mnt/lvm
//检查磁盘空间
#df -m /mnt/lvm
//扩大lvm卷
如果lvm空间不够用,现在准备向lvm卷增加更多空间。首先,卸载该卷,并使用lvresize命令调整卷大小。然后还必须用e2fsck检查整个文件系统,并运行resize2fs调整该卷上ext3文件系统的大小
//卸载
#umount /mnt/lvm
//调整卷大小
#lvresize --size 20G /dev/vg_name/lv_name
//检查文件系统
#e2fsck -f /dev/vg_name/lv_name
//调整文件系统大小
resize2fs /dev/vg_name/lv_name 20G
//重新挂载卷
#mount /dev/vg_name/lv_name /mnt/lvm
//缩小LVM卷
缩减现有的lvm卷里不需要的空间是也可以使用lvresize。和前面一样,在调整卷大小之前先卸载这个卷,然后运行e2fsck,检查文件系统和resize2fs调整成希望的大小。
//删除lvm逻辑卷和组,使用lvremove可以删除卷组里的lvm逻辑卷
#lvremove /dev/vg_name/lv_name
//使用vgremove可以删除现有的lvm卷组
#vgremove vg_name