一、前言

使用 VMWare 创建 Linux 虚拟机时通常只会默认分配 20G 的磁盘空间,跑一些环境时如果创建时没计算好大小很容易爆。像我的虚拟机就因为要上传一个数据集太大了需要磁盘扩容🙂。

这里我用的 Linux 是带图形化程序的,但可能有些小伙伴没有,完整的扩容过程都会用命令行执行🥰。

二、在 VMWare 中增加虚拟磁盘大小

打开 VMWare 虚拟机设置,选择硬盘,扩展磁盘容量,输入你想扩容到的大小(注意是扩容到,不是扩容多少),点击扩展。

UWkGePwI-1.png

三、了解 Linux 中的存储管理

此部分用于了解 Linux 是如何通过逻辑卷来管理磁盘存储空间的,好理解下一部分敲的命令都是在干什么🐱。不想了解原理的可以直接跳到下一部分🥰。

1、逻辑卷管理器(LVM)概述

  • 物理设备:逻辑卷中的数据实际存储在物理设备当中等。想使用 LVM 必须将设备初始化为 LVM 物理卷
  • 物理卷 Physical Volume(PV):LVM 使用底层物理设备作为 LVM 物理卷。LVM 工具会将物理卷再划分为物理区块(PE),形成作为 PV 上最小存储块的小块数据。
  • 卷组 Volume Group(VG):卷组是存储池,由一个或多个**物理卷(PV)**组成。
  • 逻辑卷 Logical Volume(LV):逻辑卷根据卷组(VG) 中的空闲物理区块创建。

2、逻辑卷管理器(LVM)工作流程

  • 首先确定用于创建物理卷的物理设备,并将这些设备初始化为 LVM 物理卷(PV)
  • 再从多个物理卷创建卷组(VG)
  • 又从卷组中的可用空间创建逻辑卷(LV)
  • 最后使用文件系统格式化**逻辑卷(LV)**并进行挂载。

UWkGePwI-2.png

四、在 Linux 虚拟机中进行存储空间扩容

1、逻辑卷扩容

lsblk :列出系统中的块设备(硬盘、分区等)

UWkGePwI-3.png

可以看到 sda 是我们的虚拟物理磁盘(类型为 disk),大小是我的刚扩容后的 45G。

sda 下面有 3 个分区(类型为 part),分区相当于把 sda 一个物理设备划分成了 sda1、sda2、sda3 三个物理设备。sda1 和 sda2 这两个小分区与 BIOS 和 Linux 系统启动相关我们暂且不看。

sda3 下的 cs-root 逻辑卷(类型为 lvm),挂载目录为根目录 / 说明它为系统主要存储区域,属于 cs 卷组。我们就是要对它进行扩容

parted /dev/sda :使用 parted 工具对 sda 分区,进入交换模式

UWkGePwI-4.png

(parted) print :打印分区信息,找到已使用空间的末尾位置,我的是 21.5GiB

UWkGePwI-5.png

(parted) mkpart primary 21.5GiB 100% :从 sda 的 21.5GiB 开始到 sda 结束创建一个主分区

(parted) set 4 lvm on :设置分区号为 4(也就是 sda4),标记为 lvm 分区(on 代表打开标记)

UWkGePwI-6.png

此时使用 lsblk 命令可以看到多了一个 sda4 分区,接下来将它添加到 cs 卷组中,再给 cs-root 逻辑卷扩容。

UWkGePwI-7.png

pvcreate /dev/sda4 :将分区 sda4 初始化为物理卷

UWkGePwI-8.png

vgextend cs /dev/sda4 :将物理卷 sda4 添加进 cs 卷组中

UWkGePwI-9.png

lvextend -l +100%FREE /dev/cs/root :扩展卷组中所有剩余空间给逻辑卷 root

UWkGePwI-10.png

再使用 lsblk 查看就可以看到根目录的大小已经扩容成 40.5G 了😎👌。

UWkGePwI-11.png

2、文件系统扩容

逻辑卷扩容之后,还需要操作系统的文件系统能识别并使用这块新增加的磁盘空间。

lsblk -f :查看分区文件系统,FSTYPE 列显示文件系统类型

UWkGePwI-12.png

一般都是 xfs,使用 xfs_growfs 命令将文件系统扩展至逻辑卷大小(如果是其他文件系统就自己问问 AI 🤔)。

xfs_growfs /dev/cs/root :将逻辑卷 root 上的文件系统扩展至与其容量大小相同

UWkGePwI-13.png

这样就扩容成功了🥰。