Linux实现硬盘热扩容(热拔插)—以Ubuntu为例

Linux实现硬盘热扩容(热拔插)—以Ubuntu为例

本文以Ubuntu 22.04.4服务器版为例子

以VMware Workstation来实践操作,VM虚拟机下载地址:Search Results (vmware.com)
用到连接SSH的软件是FinalShell:FinalShell官网 (hostbuf.com)

安装虚拟机跟系统这些就不多说了,只要记得新装的系统记得装上openssh软件(这个在装系统的时候会有提示让你装)

下面直接进入正题

检查现有硬盘情况

输入以下命令进行查看:

lsblk
image-20240909175650068

这上面有很多信息,咱们只要看我们的需要的内容就好了
上面显示的 sda 有15G容量,便是我现在的用虚拟机分配给这个系统的硬盘
找到 ubuntu–vg-ubuntu–lv 后面所对应的目录是个斜杠 / 便是我们现在需要扩容的根目录

我们也可以看到FinalShell展示的信息:

image-20240909180300539

当然这里显示的信息会与命令输出的稍有偏差,把这里的大小加起来也大差不差了

插硬盘!

现在我们打开虚拟机,编辑当前虚拟机设置,进行添加硬盘

image-20240909180822449

这里我们选择SCSI(当然也可以选择SATA,不过还是推荐用SCSI)

image-20240909180919725

创建新虚拟磁盘即可

image-20240909180950500

我就给它25G,直接下一步即可

image-20240909181032855

后面就直接完成,然后记得点确定,就不展示了。添加完成后虚拟机会多一个硬盘出来

image-20240909181200646

重新扫描硬盘

如果上面你是添加的SCSI硬盘,就使用下面这条命令进行扫描SCSI总线

echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan

如果你是添加的SATA硬盘,就用这条命令重新扫描SATA总线:

echo 1 | sudo tee /sys/class/scsi_device/device/rescan

我们按照上面的命令输入后不会返回内容(就只会输出– – –

image-20240909184036300

现在我们来查看可用磁盘及分区

lsblk
lsblk -f
image-20240909184341797

如图所示,已经识别到新增加的25G的硬盘了 图中 sdb 为我们刚添加的硬盘名 注意一下需要扩容的文件系统类型是 ext4 还是 xfs

创建物理卷

现在我们来创建物理卷,将硬盘设置为物理卷

命令写法:pvcreate /dev/<硬盘名/分区名>

sudo pvcreate /dev/sdb
image-20240909184913094

这样就成功创建了

将物理卷添加至卷组

首先获取逻辑卷组名称(VG Name)与逻辑卷路径(LV Path

sudo lvdisplay
image-20240909185142158

需要注意图上标记的内容

然后将刚刚我们创建的物理卷添加至逻辑卷组

命令写法:vgextend <目标逻辑卷卷组名称(VG Name)> /dev/<硬盘名/分区名>

sudo vgextend ubuntu-vg /dev/sdb
image-20240909185546023

扩展逻辑卷

做完以上这些,这个时候新硬盘空间是还没有分配过来的,我们输入以下命令:

命令写法:sudo lvextend -l +100%FREE <目标逻辑卷路径(LV Path)>
+100%FREE的意思是全部扩展过来

sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
image-20240909191824998

调整文件系统大小

最后一步,上面我们知道了对应的文件系统类型为 ext4

输入以下命令来调整 ext4 类型的文件系统大小:

命令写法:sudo resize2fs <目标逻辑卷路径(LV Path)>

这条命令如果不带参数则自动调整为最大

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
image-20240909192532070
如果是xfs类型的文件系统
命令写法:sudo xfs_growfs <目标逻辑卷路径(LV Path)>

现在我们输入本文最开始的命令来查看现在的磁盘容量:lsblk

image-20240909192708835

我们可以看到我们的新硬盘容量已经被分配到对应文件系统了,也就是我们的系统根目录 / 下

在FinalShell中我们也可以看到有变化:

image-20240909193053064

(ps:话说这工具显示的信息还是有一点点误差,不过也大差不差了)

(ps:还有,重启这个容量还是会在的,不是临时的)

本文作者:松種
文章中所涉及的各种链接或软件工具均来自对应官方正版
版权声明:除文章额外声明外,本博客所有文章均采用CC BY-MC-SA 4.0协议
上一篇
下一篇