Linux磁盘扩容

注意
本文最后更新于 2023-08-12,文中内容可能已过时。

前言

最近遇到了Linux磁盘扩容的问题,磁盘扩容有好几种情景,因为之前没涉及到,踩了不少坑。在此记录一下,方便后续查阅。

假设有一块磁盘A,容量是100G。我分了20G用来安装Linux系统,剩下的没有动。随着时间的增长,20G不够用了,我可以将磁盘A剩下的80G分给Linux系统,也可以在加装一块磁盘B分给Linux。两种方式都可以实现扩容的目的,但是实现的手段可以分为两种:lvm和非lvm

非lvm方式,就是一般的磁盘挂载,将新硬盘分区并格式化后,挂载到Linux系统的某个文件夹上去,实现磁盘的扩容,但是这种方式一个文件夹只能挂载一个磁盘,如果想要将两块磁盘同时挂载到同一个文件夹上就需要用到lvm进行磁盘管理。

关于什么是lvm可以百度查询。简单来说,lvm可以将多个磁盘视为一个逻辑磁盘。假如有两块磁盘A和磁盘B,使用lvm的话,可以将这两个磁盘看做是一个逻辑磁盘a,我们只需对逻辑磁盘a进行操作,将其挂载到Linux目录下就行,如果后续要增添一块磁盘C,只需要将磁盘C加入逻辑磁盘a就行。以上说法并不准确,但是便于理解。

一点基础知识

简单的磁盘相关命令

1
2
3
df -h    # df主要是检查文件系统磁盘占用情况
fdisk -l # fdisk一般用来磁盘分区,也可以用来查看磁盘分区情况。-l,列出所有分区表
lsblk    # 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,这个命令很好用,因为可以让电脑上的磁盘和分区信息很清晰。

lvm相关了解

PV(Physical Volume): 物理卷, 处于LVM最底层, 可以是物理硬盘或者分区;

PP(Physical Extend): 物理区域, PV中可以用于分配的最小存储单元, 可以在创建PV的时候指定, 如1M, 2M, 4M, 8M…..组成同一VG中所有PV的PE大小应该相同;

VG(Volume Group): 卷组, 建立在PV之上, 可以含有一个到多个PV;

LV(Logical Volume): 逻辑卷, 建立在VG之上, 相当于原来分区的概念, 不过大小可以动态改变.

关系图

使用lvm进行磁盘扩容

参考:https://www.cnblogs.com/lijiaman/p/12885649.html,写的很详细,推荐

注意:在安装Linux系统的时候,有一个配置磁盘分区属性,默认是使用整个磁盘,但是我这里使用的是第二个选项lvm进行的创建。非lvm的磁盘是无法与lvm的磁盘进行逻辑合并的

使用fdisk进行分区操作

先查看整体磁盘分区情况

image-20230812180743882

sda磁盘在系统安装是采用了lvm,所以才有蓝色框选的两个逻辑卷,否则是没有的。

sdb是未被使用的。将sdb进行分区并格式化

输入fdisk /dev/sdb,回车,然后输入m,回车

image-20230812183104482

输入n并回车,n是“new”新建分区的意思

image-20230812183320723

image-20230812183652324

使用fdisk再次进行查看

image-20230812183803785

磁盘分区之后,磁盘id为83,如果要使用逻辑卷管理,需要将id改为8e,才能创建物理卷。

输入fdisk /dev/sdb,回车,然后输入m,回车,输入t,选择分区1,输入id值8e,输入w保存

image-20230812184109089

最终修改完成

image-20230812184255886

使用lvm进行

先查看当前的一些信息

物理卷

image-20230812191340453

卷组

image-20230812191415930

逻辑卷

image-20230812191722368

将sdb1创建物理卷:pvcreate /dev/sda3

image-20230812192003592

将添加新的物理卷,加载到debian10-vg卷组,使用vgextend debian10-vg /dev/sdb1命令。

image-20230812192710900

debian10-vg卷组中空闲的5G分给/dev/debian10-vg/root逻辑卷, 使用:lvresize -l 1279 /dev/debian10-vg/root

1
2
3
4
5
6
7
lvresize 命令参数
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
lvresize -L +200M /dev/vg1000/lvol0 #将逻辑卷空间增加200M
lvresize -L 5G /dev/vg1000/lvol0  # #将逻辑卷空间变为5G
lvresize -l +1000 /dev/vg1000/lvol0  # 安PE数量 默认为+
lvresize -l -1000 /dev/vg1000/lvol0  # 安PE数量
0%