Linux 系统下创建 LV(逻辑卷)并挂载

1,715 阅读5分钟

在Linux系统下,我们往往会遇到扩充磁盘的情况。普通情况下需要新加一块盘,重分区、格式化、数据复制、卸载旧分区、挂载新分区等繁琐的步骤。其实,我们可以在安装系统时使用LVM来管理我们的文件系统,这样就可以弹性调整文件系统的容量。在实施之前先了解下相关概念。

一. 物理卷(PV)、逻辑卷(LV)、卷组(VG)管理

1. 相关概念

逻辑卷是使用逻辑卷组管理(Logic Volume Manager)创建出来的设备,如果要了解逻辑卷,那么首先需要了解逻辑卷管理中的一些概念。

  • 物理卷(Physical Volume,PV):也就是物理磁盘分区,如果想要使用LVM来管理这个分区,可以使用fdisk将其ID改为LVM可以识别的值,即8e。
  • 卷组(Volume Group,VG):PV的集合
  • 逻辑卷(Logic Volume,LV):VG中画出来的一块逻辑磁盘

了解概念之后,逻辑卷是如何产生的就很清晰了:物理磁盘或者磁盘分区转换为物理卷,一个或多个物理卷聚集形成一个或多个卷组,而逻辑卷就是从某个卷组里面抽象出来的一块磁盘空间。具体架构如下: image.png

2. 为什么要使用逻辑卷

对于物理磁盘,我们直接分区、格式化为文件系统之后就可以使用,那为什么还需要使用逻辑卷的方式来管理磁盘呢?我认为主要有2个原因:

  • 业务上使用大容量的磁盘。举个例子,我们需要在/data下挂载30TB的存储,对于单个磁盘,是无法满足要求的,因为市面上没有那么大的单块磁盘。但是如果我们使用逻辑卷,将多个小容量的磁盘聚合为一个大的逻辑磁盘,就能满足需求。
  • 扩展和收缩磁盘。在业务初期规划磁盘时,我们并不能完全知道需要分配多少磁盘空间是合理的,如果使用物理卷,后期无法扩展和收缩,如果使用逻辑卷,可以根据后期的需求量,手动扩展或收缩。

二. 实施步骤

1. 查看现有磁盘使用情况
df -h

image.png

2.查看现有磁盘情况
fdisk -l

image.png
我们发现系统已经有一个10G的磁盘sdb,这个磁盘共有1305个柱面,每个柱面大小是8225280 bytes (大约8M) 但是还没对其分区

3. 对磁盘sdb进行分区
fdisk /dev/sdb

如果不知道 fdisk 里面的具体操作,可输入 m 进行帮助。
最常用的是 n(新建)d(删除)p(打印)q(退出)t(修改系统标识符)w(写入并退出) image.png

4. 建立新的分区

输入 p 打印现有分区情况(还没有分区)
输入 n 新建分区
输入 p 为建立主分区(此时的p是在n后的,不是打印)
输入 1 为建立第一个主分区,分区起始位置可以直接回车,默认是1 。分区最后位置有很多种选择:+后面单位可以接M,G,K(记得要大写)表示划分你所加的空间,也可以是柱面数。不管怎样都不能超过该磁盘剩余的空间否则无效。
输入 p 打印分区情况,发现已建立一个分区 /dev/sdb1, 但是 此分区为 Linux 格式 image.png

5. 改变系统标识符

输入 t 改变分区1的属性
输入 L 查看有个属性对应的命令
输入 8e 改变分区1为 Linux LVM 格式
输入 p 打印分区情况,发现建立的分区 /dev/sdb1 为 Linux LVM 格式
image.png

6.再次查看系统内磁盘情况
fdisk -l

image.png
发现 /dev/sdb上已有一个 Linux LVM 格式的 /dev/sdb1分区

7. 使 kernel 重新读取分区表
partprobe

image.png
对于 /dev/sda 的警告不予理会

8. 创建PV
# 扫描系统PV
pvscan
# 创建PV
pvcreate /dev/sdb1 
# 查看PV
pvdisplay

image.png
这样我们就创建了一个 4.98G的PV,注意 Allocatable 为 NO

9. 创建VG
# 扫描系统VG
vgscan
# 创建VG
vgcreate vg_test /dev/sdb1
# 查看VG
vgdisplay

image.png
这样我们就创建了一个 4.98G(1274 个PE,要记住这个数字)的VG(名字为vg_test

PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

删除卷组

vgremove vg_name
10. 创建LV
# 扫描系统LV
lvscan
# 创建LV
# 在vg_test卷组上创建一个名称叫lv_test的逻辑卷
lvcreate -l 1274 -n lv_test vg_test(1274VGPE的个数,决定逻辑卷大小) 
# 查看LV
lvdisplay

image.png

移除逻辑卷(Logical Volume)

lvremove /dev/<volume_group_name>/<logical_volume_name>
11. 格式化LV
mkfs -t ext4 /dev/vg_test/lv_test
lsblk -f

image.png

注意:
mongoDB 推荐使用 xfs 1686279523153.png

12. 创建目录并挂载
# 创建目录
mkdir /test 
# 挂载:
mount /dev/vg_test/lv_test /test 
# 查看
df -h 

image.png
我们发现系统已经挂载了刚刚创建的LV

卸载文件系统

umount /dev/<volume_group_name>/<logical_volume_name>
13. 设置开机挂载

写入 /etc/fstab

/dev/mapper/vg_test-lv_test /test     xfs    defaults        1 2
参考

Linux系统下创建LV(逻辑卷)并挂载 - 云+社区 - 腾讯云 (tencent.com)
(13条消息) linux添加新磁盘和创建分区_阿仁的博客-CSDN博客_linux 创建分区