如何创建逻辑卷
1. 逻辑卷管理器(LVM)
本质:是 Linux 系统中对磁盘分区进行管理的一种机制,通过在物理存储和文件系统之间增加一个抽象层,实现存储资源的动态管理。
- 突破传统分区的限制:传统分区一旦创建,大小固定且难以调整;LVM 允许在线调整存储大小(无需卸载文件系统)。
- 灵活分配空间:可以将多个物理设备的存储空间整合为一个 "存储池",再按需分配给不同的应用。
- 简化管理:通过统一的命令集管理所有存储设备,无需关心底层物理设备的具体位置和数量。
工作模型:物理设备 → 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统 → 挂载使用
2. 物理设备(Physical Device)
定义:LVM 管理的底层存储硬件,是构建 LVM 的基础。
常见类型:
- 磁盘分区(如
/dev/sda1
、/dev/vdb2
) - 完整磁盘(如
/dev/sdb
,无需分区直接使用) - RAID 阵列(如硬件 RAID 卡创建的逻辑盘
/dev/md0
) - 网络存储设备(如 iSCSI、FC 连接的远程磁盘
3. 物理卷(PV, Physical Volume)
定义:经过 LVM 初始化处理的物理设备,是 LVM 管理的基本单元。
常用操作命令:
pvcreate /dev/sdb1
:将分区初始化为 PVpvs
或pvdisplay
:查看 PV 信息
4. 卷组(VG, Volume Group)
定义:由一个或多个 PV 组成的 "存储池",是 LVM 中资源整合的核心层。
核心作用:
- 将多个 PV 的存储空间合并,屏蔽底层物理设备的差异,形成一个统一的地址空间。
- 提供空闲空间(Free PE),供创建或扩展逻辑卷(LV)使用。
关键参数:
- PE 大小:VG 创建时指定(如
-s 8M
),决定了该 VG 中所有 PV 的 PE 大小,且创建后不可修改。 - 总 PE 数:所有 PV 的 PE 总和,代表 VG 的总容量(总 PE 数 × PE 大小 = VG 总容量)。
- 空闲 PE 数:未被分配给 LV 的 PE 数量,决定了可扩展或新建 LV 的最大空间。
常用操作命令:
vgcreate myvg /dev/sdb1 /dev/sdc
:用两个 PV 创建名为 myvg 的卷组vgs
或vgdisplay
:查看 VG 信息vgextend myvg /dev/sdd
:向卷组添加新的 PV(扩容卷组)
5. 逻辑卷(LV, Logical Volume)
定义:从 VG 的空闲 PE 中分配的存储空间,相当于传统分区,但具备动态调整能力。
内部结构:
- 逻辑区块(LE, Logical Extent):LV 被划分为与 PE 大小相同的 LE,每个 LE 会映射到 VG 中一个或多个 PE(取决于 LV 的配置,如镜像模式下 1 个 LE 映射 2 个 PE)。
关键特性:
- 可动态调整大小:通过
lvextend
(扩展)或lvreduce
(缩减)命令调整 LV 大小(需配合文件系统工具)。 - 可灵活挂载:LV 创建后需格式化(如
mkfs.xfs
)为文件系统,再挂载到目录(如/mnt/data
)使用。 - 支持多种功能:如快照(
lvcreate -s
)、镜像(lvcreate -m
)、条带化(lvcreate -i
)等高级特性。
常用操作命令:
lvcreate -L 10G -n mylv myvg
:从 myvg 中创建 10G 的名为 mylv 的 LVlvs
或lvdisplay
:查看 LV 信息lvextend -L +5G /dev/myvg/mylv
:给 LV 增加 5G 空间
概念关系总结
物理设备(如/dev/sdb1)↓(pvcreate初始化)
物理卷(PV)→ 被划分为物理区块(PE)↓(vgcreate整合)
卷组(VG)→ 由多个PV的PE组成统一存储池↓(lvcreate分配)
逻辑卷(LV)→ 由LE组成,LE映射到VG中的PE↓(mkfs格式化)
文件系统(如ext4、xfs)↓(mount挂载)
最终供用户/应用使用的目录(如/home、/data)
通过这种层级结构,LVM 实现了存储资源的灵活管理,特别适合需要动态调整存储空间的场景。
如何创建逻辑卷
在 Linux 系统中,使用逻辑卷管理器(LVM)创建逻辑卷,通常需要以下几个步骤,这里以 CentOS/RHEL 系统为例进行讲解,不同的 Linux 发行版操作命令基本相同,不过在个别细节上可能略有差异:
步骤 1:准备物理存储设备
逻辑卷使用的物理存储设备可以是磁盘分区、整个磁盘、RAID 阵列或者 SAN 磁盘。这里以磁盘分区为例,假设你已经有了未使用的磁盘分区 ,比如 /dev/sdb1
,你可以使用 fdisk -l
命令查看磁盘和分区信息,确认该分区尚未被使用且状态正常:
fdisk -l
步骤 2:将物理设备初始化为物理卷(PV)
使用 pvcreate
命令将准备好的物理存储设备初始化为物理卷。例如,要将 /dev/sdb1
初始化为物理卷,可以执行以下命令:
pvcreate /dev/sdb1
执行该命令后,会在 /dev/sdb1
上创建物理卷元数据,将其纳入 LVM 的管理范围。你可以使用 pvs
或 pvdisplay
命令查看物理卷的详细信息:
pvs
# 或者
pvdisplay
步骤 3:创建卷组(VG)
使用 vgcreate
命令将一个或多个物理卷组合成一个卷组,卷组是一个存储池,可以为后续创建逻辑卷提供空间。假设要创建一个名为 myvg
的卷组,并将之前创建的 /dev/sdb1
物理卷添加到该卷组中,执行以下命令:
vgcreate myvg /dev/sdb1
你可以使用 vgs
或 vgdisplay
命令查看卷组的详细信息,包括卷组大小、空闲空间等:
vgs
# 或者
vgdisplay
步骤 4:创建逻辑卷(LV)
使用 lvcreate
命令从卷组中分配空间来创建逻辑卷。以下是两种常见的创建逻辑卷的方式:
方式一:指定逻辑卷大小
如果要创建一个大小为 5GB,名为 mylv
的逻辑卷,可以执行以下命令:
lvcreate -L 5G -n mylv myvg
其中,-L 5G
表示指定逻辑卷的大小为 5GB ,-n mylv
用于指定逻辑卷的名称,最后的 myvg
是逻辑卷所属的卷组名称。
方式二:指定逻辑卷占用的物理区块(PE)数量
每个物理卷被划分为固定大小的物理区块(PE),默认大小是 4MB 。如果要根据 PE 数量来创建逻辑卷,比如创建一个占用 100 个 PE 的逻辑卷,可以使用 -l
参数,命令如下:
lvcreate -l 100 -n mylv myvg
步骤 5:格式化逻辑卷并挂载使用
逻辑卷创建完成后,需要格式化为文件系统才能被系统使用。例如,将逻辑卷格式化为 ext4 文件系统:
mkfs.ext4 /dev/myvg/mylv
然后,创建一个挂载点,比如 /data
,并将逻辑卷挂载到该挂载点:
mkdir /data
mount /dev/myvg/mylv /data
如果希望系统开机自动挂载该逻辑卷,可以编辑 /etc/fstab
文件,添加以下内容:
/dev/myvg/mylv /data ext4 defaults 0 0
通过以上步骤,你就成功创建并使用了逻辑卷。在实际使用中,你还可以根据需求对逻辑卷进行扩展、缩减、创建快照等操作。