发布于  更新于 

Linux LVM 创建指南

LVM

Logical Volume Manager,即逻辑卷管理器,是一种逻辑卷管理模式。这种模式在硬盘的某个分区上创建一个逻辑层,在层内创建逻辑卷组和逻辑卷。相对于传统的管理模式,这种模式更为灵活。

基本术语

  • Physical Volume:物理卷;
  • Volume Group:卷组;
  • Logical Volume:逻辑卷;
  • Physical Extent:物理单元。

关系

PV处于LVM系统最低层,它可以是某个磁盘、RAID阵列,或与磁盘分区具有相同功能的硬件。

VG创建在PV之上,由一个或多个PV组成,可以在VG上创建一个或多个“LVM分区”(逻辑卷),功能类似非LVM系统的物理硬盘。

LV是从VG中分割出的一块空间,其上可以创建文件系统。LV的大小是可调节的。

PE是每一个PV划分出的基本单元,具有唯一编号的PE是可以被LVM寻址的最小存储单元。单个PE的默认大小为4MB。

LVM 管理:以 Ubuntu 为例

准备工作

管理 LVM 一般会使用到:

  • fdisk
  • partedgparted
  • lvm2

以上工具都可以通过 apt 安装,以下操作默认以 root 权限进行。

查看硬盘信息

通过以下指令查看硬盘信息:

1
$ fdisk -l

假设硬盘被挂载于/dev/sdc

建立 LVM模式 分区

使用 fdisk 管理该磁盘:

1
$ fdisk /dev/sdc
  • 通过 fdisk 指令 新建一个分区,假定为 /dev/sdc1
  • 键入指令 t 修改分区格式,选择该分区;
  • 键入指令 e,选择分区后键入 8e 将该分区转换为 Linux LVM 分区;
  • 键入指令 w 保存并退出 fdisk

创建 PV

管理 PV 主要有以下指令:

1
2
3
$ pvcreate    ## 创建 PV
$ pvs ## 查看某 PV的信息
$ pvdisplay ## 查看某 PV 的属性

通过以下指令初始化物理卷,假定为 /dev/sdc1

1
$ pvcreate /dev/sdc1

检查基本信息:

1
2
3
$ pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 --- 500.00g 500.00g
1
2
3
4
5
6
7
8
9
10
11
12
13
$ pvdisplay

"/dev/sdc1" is a new physical volume of "500.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1 ## 物理卷名称
VG Name ## 所属的卷组
PV Size 500.00 GiB ## 物理卷大小
Allocatable NO ## 是否可分配
PE Size 0 ## PE大小
Total PE 0 ## 总PE数
Free PE 0 ## 可用PE数
Allocated PE 0 ## 已分配的PE数
PV UUID ... ## PV UUID

创建 VG

管理 VG 主要有以下指令:

1
2
3
$ vgcreate    ## 创建 VG
$ vgs ## 查看某 VG 的信息
$ vgdisplay ## 查看某 VG 的属性

通过以下指令初始化 VG,假定为 /dev/sdc1 创建 VG 名为 vg_1

1
$ vgcreate vg_1 /dev/sdc1

然后通过 vgs vgdisplay查看所有 VG 的信息。

创建 LV

管理 LV 主要有以下指令:

1
2
3
$ lvcreate    ## 创建 LV
$ lvgs ## 查看某 LV 的信息
$ lvdisplay ## 查看某 LV 的属性

通过以下指令初始化 LV,假定为 vg_1 创建 LV 名为 lv_pri

1
$ lvcreate -L 500G -n lv_pri lv_1

该 LV 会被挂载至 /dev/[vg_name]/[lv_name],在此例中为 /dev/vg_1/lv_pri。通过 lvs lvdisplay /dev/vg_1/lv_pri查看所有 LV 的信息。

格式化LV

利用 mkfs 命令可将 LV 格式化,方法和格式化一个主分区、扩展分区一致。也可以使用 gparted 管理 LV。

扩展 VG 与扩容 LV

通过以下指令扩展 VG,例如将分区 /dev/sdd1 扩展入 VG vg_1

1
$ vgextend /vg_1 /dev/sdd1

通过以下指令扩容 LV /dev/vg_1/lv_pri

1
$ lvextend -L 523.33G /dev/vg_1/lv_pri

删除 VG 与 LV

通过 lvremove 删除 LV:

1
$ lvremove vg_1 vg_pri

通过 vgremove 删除 VG:

1
$ vgremove vg_1

参考资料

  1. Red Hat: How to create a volume group in Linux with LVM
  2. 寰宇01:LVM讲解,磁盘故障
  3. Linux:格式化与挂载