在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中画出来的一块逻辑磁盘
了解概念之后,逻辑卷是如何产生的就很清晰了:物理磁盘或者磁盘分区转换为物理卷,一个或多个物理卷聚集形成一个或多个卷组,而逻辑卷就是从某个卷组里面抽象出来的一块磁盘空间。具体架构如下:
2. 为什么要使用逻辑卷
对于物理磁盘,我们直接分区、格式化为文件系统之后就可以使用,那为什么还需要使用逻辑卷的方式来管理磁盘呢?我认为主要有2个原因:
- 业务上使用大容量的磁盘。举个例子,我们需要在/data下挂载30TB的存储,对于单个磁盘,是无法满足要求的,因为市面上没有那么大的单块磁盘。但是如果我们使用逻辑卷,将多个小容量的磁盘聚合为一个大的逻辑磁盘,就能满足需求。
- 扩展和收缩磁盘。在业务初期规划磁盘时,我们并不能完全知道需要分配多少磁盘空间是合理的,如果使用物理卷,后期无法扩展和收缩,如果使用逻辑卷,可以根据后期的需求量,手动扩展或收缩。
二. 实施步骤
1. 查看现有磁盘使用情况
df -h
2.查看现有磁盘情况
fdisk -l
我们发现系统已经有一个10G的磁盘sdb,这个磁盘共有1305个柱面,每个柱面大小是8225280 bytes (大约8M) 但是还没对其分区
3. 对磁盘sdb进行分区
fdisk /dev/sdb
如果不知道 fdisk 里面的具体操作,可输入 m 进行帮助。
最常用的是 n(新建)d(删除)p(打印)q(退出)t(修改系统标识符)w(写入并退出)
4. 建立新的分区
输入 p 打印现有分区情况(还没有分区)
输入 n 新建分区
输入 p 为建立主分区(此时的p是在n后的,不是打印)
输入 1 为建立第一个主分区,分区起始位置可以直接回车,默认是1 。分区最后位置有很多种选择:+后面单位可以接M,G,K(记得要大写)表示划分你所加的空间,也可以是柱面数。不管怎样都不能超过该磁盘剩余的空间否则无效。
输入 p 打印分区情况,发现已建立一个分区 /dev/sdb1, 但是 此分区为 Linux 格式
5. 改变系统标识符
输入 t 改变分区1的属性
输入 L 查看有个属性对应的命令
输入 8e 改变分区1为 Linux LVM 格式
输入 p 打印分区情况,发现建立的分区 /dev/sdb1 为 Linux LVM 格式
6.再次查看系统内磁盘情况
fdisk -l
发现 /dev/sdb上已有一个 Linux LVM 格式的 /dev/sdb1分区
7. 使 kernel 重新读取分区表
partprobe
对于 /dev/sda 的警告不予理会
8. 创建PV
# 扫描系统PV
pvscan
# 创建PV
pvcreate /dev/sdb1
# 查看PV
pvdisplay
这样我们就创建了一个 4.98G的PV,注意 Allocatable 为 NO
9. 创建VG
# 扫描系统VG
vgscan
# 创建VG
vgcreate vg_test /dev/sdb1
# 查看VG
vgdisplay
这样我们就创建了一个 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(1274是VG中PE的个数,决定逻辑卷大小)
# 查看LV
lvdisplay
移除逻辑卷(Logical Volume)
lvremove /dev/<volume_group_name>/<logical_volume_name>
11. 格式化LV
mkfs -t ext4 /dev/vg_test/lv_test
lsblk -f
注意:
mongoDB 推荐使用 xfs
12. 创建目录并挂载
# 创建目录
mkdir /test
# 挂载:
mount /dev/vg_test/lv_test /test
# 查看
df -h
我们发现系统已经挂载了刚刚创建的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 创建分区