目录
一、LVM的基本组成
1、物理卷 (PV,Physical Volume)
2、卷组 (VG,Volume Group)
3、逻辑卷 (LV,Logical Volume)
4、物理块 (PE,Physical Extends)
二、LVM的优缺点
1、优点
2、缺点
三、LVM的使用
1、创建分区(partition)
2、物理卷(PV)相关操作
①、通过lvmdiskscan命令列出可被用作pv的设备
②、使用pvcreate命令创建pv
③、查看当前所有PV信息
3、卷组(VG)相关操作
①、创建卷组
②、查看卷组信息
4、逻辑卷(LV)相关操作
①、创建LV
②、查看lv
③、扩展逻辑卷
5、格式化并挂载LV(逻辑卷)
①、格式化逻辑卷
②、挂载
LVM,Logical Volume Manger,是linux内核提供的一种逻辑卷管理功能,由内核驱动和应用层工具组成,它是在硬盘的分区基础上,创建了一个逻辑层,可以非常灵活且非常方便的管理存储设备。
LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便,它相比传统的分区系统可以更灵活地管理磁盘。
一个可供存储LVM的块设备. 如硬盘分区(MBR或GPT分区)、SAN 的硬盘、RAID 或 LUN,一个回环文件, 一个被内核映射的设备 (例如 dm-crypt),它包含一个特殊的LVM头,它是 LVM 构建的实际硬件或存储系统。
卷组是对一个或多个物理卷的集合,并在设备文件系统中显示为 /dev/VG_NAME。
逻辑卷是可供系统使用的最终元设备,它们在卷组中创建和管理,由物理块组成,实际上就是一个虚拟分区,并显示为 /dev/VG_NAME/LV_NAME,通常在其上可以创建文件系统。
一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。
下面我画了一张lvm在linux磁盘管理中的位置图:
依次为:disk -> partition -> PV -> VG -> LV -> fs,也即磁盘->分区->物理卷->卷组->逻辑卷->文件系统。
其创建也是按照这个顺序,下面会详细介绍。
比起传统的硬盘分区管理方式,LVM更富于灵活性:
在配置lvm之前,必须对存储设备进行分区,可以使用fdisk或者parted工具进行,创建分区时注意分区类型的设置(类型为linux lvm):
我虚拟机新加了个磁盘/dev/sdb,下面我们创建一个8G的分区:
以同样的方式,再创建一个10G的linux lvm类型的分区:
注:如果系统引导程序不支持LVM,则/boot
不能置于LVM中。此刻必须创建一个独立的/boot
分区并直接格式化后挂载到/boot。已知支持LVM的引导程序只有GRUB。
从上图可以看到//dev/sda2已经是PV了,所以只有dev/sda1、/dev/sdb1、/dev/sdb2可以用于创建PV,又因为/dev/sda1是boot引导区,所以下面我们可以对/dev/sdb1、/dev/sdb2创建PV
root# pvcreate device1 device2 ...
可以通过pvs、pvscan、pvdisplay这三个命令查看pv信息
注意: 如果你用的是未格式化过且擦除块(erase block)大小小于1M的SSD,请采用以下命令
pvcreate --dataalignment 1m /dev/sda
来设置对齐(alignment)。
使用命令vgcreate创建卷组
root# vgcreate vg_name pv1 pv2 ...
创建卷组vg_fedora_yg,并把pv /dev/sdb1加入该卷组。
此时,也可以通过pvs查看各个物理卷所在的卷组:
使用lvcreate命令
root# lvcreate -L -n
# 将卷组vg_name下所有剩余空间给创建的lv_name逻辑卷
root# lvcreate -l +100%FREE -n
root# lvcreate -L -n
该逻辑卷创建完后,你就可以通过/dev/mapper/vg_fedora_yg-lv_yg01
或/dev/vg_fedora_yg/lv_yg01
来访问它:
通过命令lvextend:
root# lvextend -L
注意:如果扩容的逻辑卷已经挂载到具体文件系统,则需要执行resize2fs或者xfs_growfs(针对xfs文件系统)命令使修改生效,可以通过df -Th或者blkid查看lv所挂载的文件系统类型。
上面逻辑卷LV创建之后,通常是已经可以在/dev/mapper/或者/dev/vg_name/下面找到该逻辑卷了,如果找不到的话,可以执行如下命令:
# modprobe dm-mod
# vgscan
# vgchange -ay
最后,可以看到如下:
现在可以在该逻辑卷上创建文件系统:
# mkfs. /dev/mapper/-
#
# mkfs.xfs /dev/mapper/vg_fedora_yg-lv_yg01
# mount /dev/mapper/-
注:挂载点请选择你所新建的逻辑卷(例如:/dev/mapper/vg_fedora_yg-lv_yg01
),不要使用逻辑卷所在的实际分区设备(即不要使用:/dev/sdb1
)
最后,我画了一张图,来展示linux lvm:
你可以对照上面内容,理解下linux lvm的磁盘管理机制。
说明:
①、图中/dev/sda1是boot引导区,不能用lvm管理,所以直接格式化后挂载到目录/boot下,另外/dev/sdb2也是没有经过lvm直接格式化后挂载到目录的。
②、卷组vg_fedora1容量为139G,从其中分配出去了40+5+45=90G,还有49G空闲,这些空闲容量可以lvextend到下面的lv中;也可以再创建个lv,分配出去。
③、磁盘设置/dev/sdc还有50G空闲空间未分区,可以分区后使用。
关于lvm其它高级配置功能,可以查看参考链接。
参考:
1、gentoo-LVM
2、archlinux-LVM
3、debian-LVM