VMware centos磁盘容量扩容教程
目录
- 前言
- 相关概念
- 磁盘
- 磁盘分区
- 文件系统
- 挂载点
- 物理卷、VG(卷组)、LV(逻辑卷)、LVM(逻辑卷管理)
- 解决方案
前言
- 这篇博客主要分享我在VM中通过docker搭建dify大模型应用平台时,遇到了分配的磁盘容量不足导致dify没有成功部署的解决方案,问题的原因就是当时在VM中搭建的centos系统分配的20G磁盘容量不足,解决方案也很简单,就是扩展dify工作区的磁盘容量。
- 在分享如何操作之前,我们先弄清楚几个概念,磁盘、磁盘分区、文件系统、挂载点、物理卷、逻辑卷这些概念,弄懂了这些概念,更方便理解我们接下来的操作
/ # 什么是磁盘、磁盘分区、文件系统、挂载点、LVM/VG、物理卷、逻辑卷?
相关概念
磁盘
- 数据的载体,这个很好理解,是硬件,像我们用的U盘、固态硬盘都属于磁盘的范畴,我们可以把它理解成一个大仓库。
- 在Linux系统中,磁盘通常表示为/dev/sda、/dev/sdb等形式,其中sda表示第一块SCSI/SATA磁盘,sdb表示第二块,以此类推
磁盘分区
- 磁盘分区是将一块物理磁盘逻辑划分为多个独立区域的过程,就像把大仓库分隔成不同的小房间,每个房间可以存放不同类型的物品
- 磁盘分区的目的是隔离系统和用户数据、使用不同的文件系统等、提升系统的I/O能力
- 一个磁盘最多可以划分成4个主分区
- 在Linux系统中,分区通常表示为/dev/sda1(第一块磁盘的第一个分区)、/dev/sda2等
文件系统
- 文件系统是管理数据存储和检索的规则和方式,就像仓库中的货架系统和物品标签。没有文件系统,操作系统就无法识别和使用分区上的数据。
- 文件系统负责:存储和检索数据、管理文件操作(创建、删除、复制剪切等)、提供权限控制等;
- Linux的文件系统主要有:ext4(最常用)、XFS(高性能)、Btrfs(高级特性)
- 创建文件系统的命令如mkfs.ext4 /dev/sda1,表示在sda1分区(第一块磁盘上的第一个分区)上创建ext4文件系统
挂载点
- 挂载点是Linux系统中将文件系统连接到目录树的入口,就像仓库的门,只有通过门才能进入仓库。
- 将分区(如/dev/sda1)关联到一个目录(如/mnt/data),访问该目录就等于访问该分区
物理卷、VG(卷组)、LV(逻辑卷)、LVM(逻辑卷管理)
- LVM(逻辑卷管理)和卷组(VG)是Linux系统中用于灵活管理磁盘空间的一种机制,相比于常规的磁盘分区,其更灵活,可随时调整空间大小。
- 打个比方,传统磁盘分区像固定大小的抽屉,装满后无法扩展,而LVM像乐高积木,可以随时拆解重组,灵活调整空间。
- 物理卷,卷组的最小单元,我们通过Linux指令将磁盘分区标记为一个物理卷,比如
pvcreate /dev/sdb1
是将第二块磁盘的第1个分区标记为一个物理卷,只有标记为物理卷的磁盘分区才可以被LVM管理。 - 卷组,由一个或多个物理卷组成,相当于一个存储资源池。例如
vgcreate vg_data /dev/sdb1 /dev/sdc1
创建名为vg_data的卷组,这个卷组包括/dev/sdb1
和/dev/sdb2
这两个物理卷。 - 逻辑卷,是卷组中划分出来的逻辑存储空间,类似于传统分区,但更灵活,可以动态的调整大小,可以跨越多个物理磁盘。
- 举个例子,下面的shell命令 是从名为
vg_data
的卷组中创建名为lv_home
的逻辑卷,注意逻辑卷名称lv_home
必须在卷组vg_data
中要唯一,不能重复,创建完逻辑卷后,要指定其文件系统,最后就可以挂载到指定目录上使用了。
lvcreate -L 20G -n lv_home vg_data # 创建20G的逻辑卷mkfs.ext4 /dev/vg_data/lv_home # 创建文件系统mount /dev/vg_data/lv_home /home # 挂载使用`
- 总结一下,物理磁盘 →磁盘分区→ 物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统 → 挂载点
解决方案
-
通过df-h命令查看当前磁盘空间使用情况,主要是看挂载点为根目录的/的逻辑卷的磁盘容量,可以看到/dev/mapper/centos-root这个逻辑卷的使用率已达到78%,需要进行扩容
-
我们可以看到逻辑卷/dev/mapper/centos-root的卷组名为centos,接下来操作的第一个目的就是扩容卷组centos的容量
-
关闭虚拟机,在VMware管理界面,为centos添加虚拟磁盘容量,最好分配到40G以上
-
启动虚拟机,在终端执行命令
fdisk -l
列出所有磁盘和分区信息,确认磁盘 /dev/sda的现有分区布局(如 /dev/sda1、/dev/sda2)和未分配空间,因为我这已经是分区好的,你们应该是只有sda1和sda2,下面就是将剩下的磁盘空间(刚才新增的)分配给新的分区sda3
-
fdisk /dev/sda:进入交互式分区管理界面。
m: 打开帮助
n→ p:新建主分区(如 /dev/sda3),默认使用所有剩余空间。
w:保存分区表。
注意:分区的起始扇区需与原分区对齐(默认值),避免数据覆盖
现在我们已经将刚才新分配的磁盘空间分区成sda3,也就是第一块磁盘的第三个分区 -
t→ 选择分区号(如3)→ 输入 8e(LVM类型标识)。
作用:标记该分区为LVM物理卷(PV),注意只是一个标记,并不是现在就是物理卷,只有标记为物理卷的分区才可以创建物理卷 -
ctrl+d 退出分区界面,执行
partprobe
命令,让Linux内核重新加载分区表 -
执行
mkfs.xfs /dev/sda3
:将新分区格式化为xfs文件系统 -
pvcreate /dev/sda3
:将 /dev/sda3初始化为LVM物理卷 -
vgextend centos /dev/sda3
:将新物理卷加入现有卷组 centos -
lvextend -l +100%FREE /dev/mapper/centos-root
:将centos卷组所有空闲空间分配给逻辑卷 /dev/mapper/centos-root -
xfs_growfs /dev/centos/root
:在线扩展XFS文件系统至逻辑卷的最大容量 -
最后,执行df -h查看查看磁盘大小是否扩容成功,在显示的磁盘信息中,可以看到磁盘扩容成功了