LVM 与磁盘配额
1. LVM 逻辑卷管理
许多 Linux 操作系统的使用者在安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量。如果当初估计不准确,一旦系统分区不够用就可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。
本节将通过对 LVM 管理机制的学习,掌握动态调整 Linux 分区容量的方法。
在学习 LVM 的管理操作之前需要了解 LVM 的几个基本术语。
LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上、文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,因此能够在保持现有数据不变的情况下动态调整磁盘容量,从而增强磁盘管理的灵活性。
在安装 CentOS 系统的过程中选择自动分区时,就会默认采用 LVM 分区方案,不需要再进行手动配置。如果有特殊需要,也可以使用安装向导提供的磁盘定制工具调整 LVM 分区。需要注意的是,/boot 分区不能基于 LVM 创建,必须独立出来。
1.1 PV(Physical Volume,物理卷)
物理卷是 LVM 机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为 4MB 的基本单元(Physical Extent,PE),从而构成物理卷,如图 6.1 所示。物理卷一般直接使用设备文件名称,如/dev/sdb1、/dev/sdb2、/dev/sdd 等。
对用于转换成物理卷的普通分区,建议先使用 fdisk 工具将分区类型的 ID 标记号改为“8e”。若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再做相应调整。
1.2 VG(Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷,如图 6.2 所示。许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自行定义。
逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷,如图 6.3 所示。使用 mkfs 等工具在逻辑卷上创建文件系统以后,就可以挂载到 Linux 操作系统中的目录下使用。
通过上述对物理卷、卷组、逻辑卷的解释可以看出,建立 LVM 分区管理机制的过程如下: 首先,将普通分区或整个硬盘创建为物理卷;然后,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组;最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷。逻辑卷才是最终用户可以格式化并挂载使用的存储单位。
1.3 LVM 的管理命令
为了便于理解,这里先使用 fdisk 工具在磁盘设备“/dev/sdb”中划分出三个主分区sdb1、sdb2、sdb3,每个磁盘的空间大小为 20GB,将分区类型的 ID 标记号改为“8e”。磁盘类型的 ID 为“8e”,表示该分区是 Linux LVM 类型的,支持 LVM 机制。若上述分区已被挂载使用,则需要先进行卸载,再进行分区调整操作。
LVM 管理命令主要包括三大类:物理卷(PV)管理、卷组(VG)管理、逻辑卷(LV)管理,对应的命令程序文件分别以“pv”“vg”“lv”开头,如表 6-1 所示。
表 6-1 常用的 LVM 管理命令
功能 | PV 管理命令 | VG 管理命令 | LV 管理命令 |
---|---|---|---|
Scan(扫描) | pvscan | vgscan | lvscan |
Create(建立) | pvcreate | vgcreate | lvcreate |
Display(显示) | pvdisplay | vgdisplay | lvdisplay |
Remove(移除) | pvremove | vgremove | lvremove |
Extend(扩展) | vgextend | lvextend | |
Reduce(减少) | vgreduce | lvreduce |
下面分别介绍其中常用的几个管理命令。
2.磁盘管理
2.1 物理卷管理
1) pvscan 命令
pvscan 命令用于扫描系统中所有的物理卷,并输出相关信息。使用自动分区方案安装的 CentOS,其系统盘 sda 被划分为 sda1 和 sda2 两个分区,其中 sda2 分区被转换为物理卷,并基于该物理卷创建 cl 卷组。pvscan 命令的操作如下:
[root@localhost ~]# pvscan
PV /dev/sda2 VG cl lvm2 [99.00 GiB / 4.00 MiB free]
Total: 1 [99.00 GiB] / in use: 1 [99.00 GiB] / in no VG: 0 [0 ]
2) pvcreate 命令
pvcreate 命令用于将分区或整个硬盘转换成物理卷,主要是添加 LVM 属性信息并划分PE 存储单位。该命令需要使用硬盘或分区的设备文件作为参数(可以有多个)。例如,执行以下操作将把分区/dev/sdb1、/dev/sdb2、/dev/sdb3 转换成物理卷。需要注意的是,执行创建物理卷的命令时,会出现更换分区签名的警告提示,输入“y”后按 Enter 键即可。
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1. //分区签名的警告提示
WARNING: xfs signature detected on /dev/sdb2 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb2.
WARNING: dos signature detected on /dev/sdb3 at offset 510. Wipe it? [y/n]: y
Wiping dos signature on /dev/sdb3.
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
3) pvdisplay 命令
pvdisplay 命令用于显示物理卷的详细信息,需要使用指定的物理卷作为命令参数,默认时将显示所有物理卷的信息。例如,执行以下“pvdisplay /dev/sdb3”命令可以查看物理卷/dev/sdb3 的详细信息。
[root@localhost ~]# pvdisplay /dev/sdb3"/dev/sdb3
" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb3
VG NamePV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID rxXULc-L7ov-FTlF-rj7s-XZAr-ysHE-rhJTww
4) pvremove 命令
pvremove 命令用于将物理卷还原成普通分区或磁盘,不再用于 LVM 体系,被移除的物理卷将无法被 pvscan 识别。例如,执行以下“pvremove /dev/sdb3”命令可以将物理卷/dev/sdb3 从 LVM 体系中移除。
[root@localhost ~]# pvremove /dev/sdb3
Labels on physical volume "/dev/sdb3" successfully wiped
2.2 卷组管理
1) vgscan 命令
vgscan 命令用于扫描系统中已建立的 LVM 卷组及相关信息。例如,通过执行以下的vgscan 命令后可以列出 cl 卷组。
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group "cl" using metadata type lvm2
2) vgcreate 命令
vgcreate 命令用于将一个或多个物理卷创建为一个卷组,第一个命令参数用于设置新卷组的名称,其后依次指定需要加入该卷组的物理卷作为参数。例如,若要使用物理卷/dev/sdb1 和/dev/sdb2 创建名为 web_document 的卷组,可以执行以下操作:
[root@localhost ~]# vgcreate web_document /dev/sdb1 /dev/sdb2
Volume group "web_document" successfully created
3) vgdisplay 命令
vgdisplay 命令用于显示系统中各卷组的详细信息,需要使用指定卷组名作为命令参数(未指定卷组时将显示所有卷组的信息)。例如,若要查看卷组 web_document 的详细信息, 可以执行以下操作:
[root@localhost ~]# vgdisplay web_document
--