在日常运维工作中,硬盘空间的不足是常见的问题之一,尤其是在虚拟机环境中,硬盘扩展和存储管理尤为重要。本文将介绍如何在 Ubuntu 22.04 虚拟机中添加新硬盘并扩容当前存储空间的步骤,涵盖硬盘添加、分区、格式化、挂载及扩展现有文件系统等操作。
场景背景
假设我们有一台 Ubuntu 22.04 Desktop 虚拟机,由于数据增长,硬盘空间不足导致系统性能下降,甚至部分服务无法正常运行。此时,扩展存储空间成为了必须的任务。以下步骤将帮助你在不丢失数据的情况下,通过增加新硬盘扩容虚拟机的存储空间。
步骤 1:添加虚拟硬盘
关闭虚拟机
首先,确保虚拟机处于关闭状态,以便我们进行硬件调整。无论是使用 VMware、VirtualBox、KVM 还是其他虚拟化平台,都可以通过管理界面来添加新的硬盘。添加新的虚拟硬盘
在虚拟化平台的设置界面中,选择虚拟机并进入硬件配置。添加一个新的虚拟硬盘(通常为.vmdk或.vdi文件),设置你需要的硬盘容量。例如,我们可以为虚拟机分配 100GB 的额外存储空间。启动虚拟机
硬盘添加完成后,启动虚拟机,准备后续的操作。
步骤 2:识别新硬盘
在 Ubuntu 系统中,我们使用 fdisk 命令来查看新硬盘是否被系统识别。
查看新硬盘
打开终端,输入以下命令查看磁盘信息:sudo fdisk -l你应该看到新硬盘被列为
/dev/sdb(或者类似名称,具体根据你的虚拟化环境而定)。
步骤 3:分区和格式化新硬盘
分区新硬盘
使用fdisk对新硬盘进行分区操作。假设新硬盘为/dev/sdb,执行以下命令:sudo fdisk /dev/sdb然后执行以下步骤:
输入
n创建新分区。输入
p选择主分区。按照默认选项,设置分区的大小。
输入
w保存并退出。
格式化新硬盘
分区完成后,我们需要格式化分区。在这里,我们使用ext4文件系统,当然也可以使用xfs或其他文件系统:sudo mkfs.ext4 /dev/sdb1如果你使用的是
xfs,命令会是:sudo mkfs.xfs /dev/sdb1
步骤 4:挂载新硬盘
创建挂载点
挂载新硬盘之前,我们需要创建一个挂载目录。例如,创建一个挂载点/mnt/newdisk:sudo mkdir /mnt/newdisk挂载新硬盘
将新硬盘挂载到这个目录:sudo mount /dev/sdb1 /mnt/newdisk验证挂载
使用以下命令查看硬盘是否成功挂载:df -h你应该能够看到
/mnt/newdisk目录下的新硬盘空间。
步骤 5:扩展现有文件系统
如果你的目标是扩展现有的根分区(如 /)的存储空间,而不是挂载新硬盘,可以选择使用 LVM 或扩展现有分区。以下是基于 LVM 的操作示例。
1. 扩展 LVM 逻辑卷
假设你在 Ubuntu 系统中已经使用了 LVM 管理存储,以下是扩展 LVM 逻辑卷的步骤:
查看现有 LVM 配置
运行以下命令查看现有的物理卷、卷组和逻辑卷:sudo pvscan # 查看物理卷 sudo vgscan # 查看卷组 sudo lvscan # 查看逻辑卷将新硬盘添加到 LVM
假设新硬盘为/dev/sdb1,可以将它添加到现有的卷组(例如ubuntu-vg):sudo pvcreate /dev/sdb1 sudo vgextend ubuntu-vg /dev/sdb1扩展逻辑卷
假设要扩展的逻辑卷是/dev/ubuntu-vg/root,执行以下命令:sudo lvextend -l +100%FREE /dev/ubuntu-vg/root扩展文件系统
执行以下命令扩展文件系统:对于
ext4文件系统:sudo resize2fs /dev/ubuntu-vg/root对于
xfs文件系统:sudo xfs_growfs /dev/ubuntu-vg/root
2. 扩展传统分区
如果没有使用 LVM,你将需要调整分区表。这通常涉及到使用 gparted 或 parted 工具来调整分区大小,可能需要删除现有的分区并重新创建它们,因此这类操作需谨慎进行,建议先进行完整的备份。
步骤 6:配置自动挂载
为了确保在系统重启后新硬盘能够自动挂载,我们需要将其添加到 /etc/fstab 文件中。
编辑
/etc/fstab
打开并编辑/etc/fstab文件:sudo nano /etc/fstab添加挂载项
在文件末尾添加以下行,确保每次重启后新硬盘都能自动挂载:/dev/sdb1 /mnt/newdisk ext4 defaults 0 2保存并退出。
步骤 7:验证配置
重启虚拟机
重启虚拟机并验证新硬盘是否在重启后自动挂载。使用
df -h检查磁盘使用情况
你应该能够看到新硬盘被正确挂载,并且系统可以正常使用扩展的存储空间。