LVM逻辑卷
每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。
逻辑卷简介
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
物理分区或磁盘是 LVM 的第一构建块。这些可以是分区、完整磁盘、 RAID 集或 SAN 磁盘。物理卷是 LVM 所使用的基础 “ 物理 ”存储。这通常是块设备,例如分区或完整磁盘。设备必须初始化为 LVM 物理卷 ,才能与 LVM 结合使用。
卷组是存储池,由一个或多个物理卷组成,物理区块是物理卷中存储的小型数据区块, 用作 LVM 存储的后端,逻辑区块映射到物理区块, 构成 LVM 存储的前端。默认情况下,每个逻辑区块映射到一个物理区块。启用某些选项将更改此映射,例如 ,镜像会导致每个逻辑区块映射到两个物理区块逻辑卷是逻辑区块组。逻辑卷可以像硬盘驱动器分区一样使用。
LVM工作机制
LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
为什么要使用LVM
在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM。LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移,这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
需要理解的专业名词
(1). 物理卷( Physical Volume,PV)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝。默认为1,保存在设备的开始处;为2时,在设备结束处保存第二份备份。
(2). 卷组(Volume Group,VG)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷PV组成。
(3). 逻辑卷(Logical Volume,LV)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。
(4). 物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
它们几个的关系大致如下图所示:
LVM的制作步骤
在介绍LVM的制作过程之前先来看几个命令以及对应的功能:
- pvs 查看系统中的物理卷pv的个数以及具体使用情况
- vgs 查看系统中的卷组vg的个数以及具体的使用情况
- lvs 查看系统中的逻辑卷lv的个数以及具体使用情况
pvcreate /dev/vdb{
1..3}
创建物理卷,后面跟磁盘的分区;
vgcreate westos /dev/vdb{
1..3}
将创建好的物理卷组成一个名为 westos 的物理卷组,当然这个名字可以随意取;
lvcreate -n lv0 -L 1.5G westos
从名为 westos 的卷组中取出1.5G的大小去创建一个名为 lv0 的逻辑卷,其中参数 -n 指定逻辑卷名称,参数 -L 指定逻辑卷的大小。
下面是具体的LVM制作过程:
Step1 创建三个物理分区并把分区id修改为8e
先在/dev/vdb 磁盘