简介
LVM 是逻辑盘卷管理( Logical Volume Manager
)的简称,它是 Linux 环境下对磁盘分区进行管理的一种机制,LVM 是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
通过 LVM 系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volume group
),形成一个存储池。
管理员可以在卷组上随意创建逻辑卷组(logical volumes
),并进一步在逻辑卷组上创建文件系 统。管理员通过 LVM 可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
例如按照使用用途进行定义:development
和 sales
,而不是使用物理磁盘名 sda
和sdb
。而且当系统添加了新的磁盘,通过 LVM 管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
LVM 相关名词
- PV(physical volume):
物理卷
在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。 - VG(volume group):
卷组
建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。 - LV(logical volume):
逻辑卷
建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。 - PE(physical extent):
物理区域
是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的 pv 加入到 vg 后,pe 的大小自动更改为 vg 中定义的 pe 大小。 - LE(logical extent):
逻辑区域
是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。
卷组描述区域:卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中逻辑卷、逻辑卷中物理区域的分配等所有信息,它是在使用 pvcreate 建立物理卷时建立的。
关于 PV 命令:
pvcreate
命令用于将物理硬盘分区初始化为物理卷,以便 LVM 使用。
1 | pvcreate:将物理分区制作成 物理卷 PV |
关于 VG 下命令:
1 | vgcreate:建立 VG 。它的参数比较多,一会儿详细介绍 |
创建 LVM 过程
创建 LVM 过程 :
分区成 LVM 格式(8e)—PV 创建–VG 创建—LV 创建—格式化分区—MOUNT 分区—-e2fsadm 调整 LV 大小
在 LVM 发行包中有一个称为 e2fsadm
的工具,它同时包含了 lvextend
与 resize2fs
的功能。
创建分区
使用分区工具(如: fdisk
等)创建 LVM 分区,方法和创建其他一般分区的方式是一样的,区别仅仅是 LVM 的分区类型为 8e。
1 | fdisk /dev/vdb |
创建物理卷
创建物理卷的命令为 pvcreate
,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷:
1 | # 格式化 |
创建卷组
创建卷组的命令为 vgcreate
,将使用 pvcreate
建立的物理卷创建为一个完整的卷组:
1 | # unicomvg:指定该卷组的逻辑名: |
vgcreate
在创建卷组 unicomvg
以外,还设置使用大小为 4MB 的 PE(默认为 4MB),这表示卷组上创建的所有逻辑卷都以 4MB 为增量单位来进行扩充 或缩减。
由于内核原因,PE 大小决定了逻辑卷的最大大小,4MB 的 PE 决定了单个逻辑卷最大容量为 256GB,若希望使用大于 256G 的逻辑卷则创建卷组时指定更大的 PE。
PE 大小范围为 8KB 到 512MB,并且必须总是 2 的倍数(使用-s 指定,具体请参考 manvgcreate
)。(centos 6.2 系统已发现没有这种限制)
例如,如果希望使用 64MB 的 PE 创建卷组,这样逻辑卷最大容量就可以为 4TB
,命令如下:
1 | vgcreate -64MB lvmdisk /dev/vdb1 /dev/vdc1 |
激活卷组
为了立即使用卷组而不是重新启动系统,可以使用 vgchange
来激活卷组:
1 | vgchange -ay unicomvg |
添加新的物理卷到卷组中
当系统安装了新的磁盘并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用 vgextend
命令:
1 | vgextend unicomvg /dev/vdb1 |
这里/dev/vdb1
是新的物理卷。
从卷组中删除一个物理卷
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用 pvdisplay
命令察看一个该物理卷信息:
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。
删除物理卷的命令为 vgreduce
:
1 | vgreduce unicomvg /dev/sda1 |
创建逻辑卷
逻辑卷(Logical Volumes)简称 LV,是在卷组中划分的一个逻辑区域,类似于非 LVM 系统中的硬盘分区。
创建逻辑卷的命令为 lvcreate,通过下面的命令。
该命令就在卷组 unicomvg
上创建名字为 unicomvol
,大小为 15000M(15G)的逻辑卷,并且设备入口为 /dev/unicomvg/unicomvol
( unicomvg
为卷组名,unicomvol
为逻辑卷名)。
创建逻辑卷的命令为 lvcreate
:
- -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
- -l:指定逻辑卷的大小(LE 数)。
1 | lvcreate -L 15000 -n unicomvol unicomvg |
如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的 PE 数,然后在创建逻辑卷时指定:
1 | vgdisplay unicomvg | grep "TotalPE" |
同卷组一样,逻辑卷在创建的过程中也被分成了一块一块的空间,这些空间称为 LE(Logical Extents)
,在同一个卷组中,LE 的大小和 PE 是相同的,并且一一对应。
创建文件系统
创建了文件系统以后,就可以加载并使用它:
1 | # 创建目录 |
/etc/fstab
文件的每一行都遵循以下格式:
1 | <device> <dir> <type> <options> <dump> <pass> |
- device:指定加载的磁盘分区或移动文件系统,除了指定设备文件外,也可以使用
UUID、LABEL
来指定分区; - dir:指定挂载点的路径;
- type:指定文件系统的类型,如
ext3
,ext4
等; - options:指定挂载的选项,默认为 defaults,其他可用选项包括
acl
,noauto
,ro
等; - dump:表示该挂载后的文件系统能否被 dump 备份命令作用;0 表示不能,1 表示每天都进行 dump 备份,2 表示不定期进行 dump 操作。
- pass:表示开机过程中是否校验扇区;0 表示不要校验,1 表示优先校验(一般为根目录),2 表示为在 1 级别校验完后再进行校验;
删除一个逻辑卷
删除逻辑卷以前首先需要将其卸载,然后删除:
1 | # 卸载 |
扩展逻辑卷大小
LVM 提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是 lvextend
:
1 | # 将逻辑卷unicomvol的大小扩招为12G |
调整文件系统大小:
resize2fs 命令是用来增大或者收缩未加载的 ext2/ext3/ext4
文件系统的大小。
参数:
- -d 打开调试特性
- -p 打印已完成的百分比进度条
- -f 强制执行调整大小操作,覆盖掉安全检查操作
- -F 开始执行调整大小前,刷新文件系统设备的缓冲区
- -M: 将文件系统缩小到最小值
- -P: 显示文件系统的最小值
1 | # 建议最好将文件系统卸载,调整大小,然后再加载 |
减少逻辑卷大小
lvreduce
命令用于减少 LVM 逻辑卷占用的空间大小。使用 lvreduce
命令收缩逻辑卷的空间大小有可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。
- -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
- -l:指定逻辑卷的大小(LE 数)。
需要首先将文件系统卸载:
1 | umount /data/wwwroot |
参考: