VirtualBox下Ubuntu系统磁盘扩容

1. 正确扩容虚拟硬盘:修改虚拟硬盘和快照的虚拟硬盘大小

  1. 打开VirtualBox所在目录,打开cmd,输入命令VBoxManage list hdds,这样能够列出所有的虚拟磁盘。
  2. 找到你需要扩容的磁盘
  3. 输入命令VBoxManage" modifyhd "D:\Pat\to\VM\Ubuntu20.04.3LTS.vdi" --resize 20480,其中.vdi为你的Ubuntu系统的虚拟磁盘,注意,我使用的虚拟硬盘是动态分配存储方式。其中20480是磁盘容量,单位是MB
  4. 如何你的Ubuntu使用了快照进行备份,还需要修改备份文件的vdi大小,这一点非常重要,如果你不修改,那么也许你在VirtualBox的设置中显示了虚拟硬盘大小为20408MB,但是进入Ubuntu系统之后,大小依然是原来的大小,因为Ubuntu系统使用的是快照vdi文件。
NOTE:如果不修改快照大小,后续Ubuntu的gparted软件无法更新为扩容后大小

例如
在这里插入图片描述

UUID:           0172d852-fd6f-438c-a10c-ecb8c35289ea
Parent UUID:    ccd7d5e2-cf11-4312-bc08-5ce68a983bc7
State:          locked write
Type:           normal (differencing)
Location:       E:\Ubuntu20.04.3LTS\Ubuntu20.04.3LTS\Snapshots/{0172d852-fd6f-438c-a10c-ecb8c35289ea}.vdi
Storage format: VDI
Capacity:       150000 MBytes
Encryption:     disabled

这是我的Ubuntu系统,快照对应的vdi文件,如果不知道对应哪个,就新建一个快照,跟新建之前对比,多出来的就是了。

注意:\Snapshots/{0172d中的/要改成\,再把它的大小修改成和刚刚一样的大小。

然后你会在virtualbox的设置--存储中,看见对应的磁盘大小改变了。
在这里插入图片描述

参考资料:Guest system does not see the updated disk size in VirtualBox

2 修改Ubuntu系统的容量:卸载–>扩容–>挂载

这里我们扩容了虚拟磁盘的大小,但是Ubuntu系统并不会自动扩容,你还需要为其分配空间。

你需要安装gparted软件,sudo apt-get install gparted

打开软件

在这里插入图片描述

这里的未分配空间,就是我们扩容的大小,你要将其分配。

在这里插入图片描述

选中要扩容的分区,右键单击,再扩容即可。

在这里插入图片描述

之后确认。

特别注意,如果你像我一样,想要扩容根目录/下的磁盘,这种方法会失败,因为【磁盘扩容前必须卸载之后再扩容】

在这里插入图片描述

先卸载磁盘,让其停止运行,之后扩容,之后再mount挂载磁盘。

而根目录是无法在系统启动的时候卸载的,这种情况,你只能使用U盘启动方式,这里不讲解这个,假设你可以卸载磁盘并扩容,到此就完成了。

关于硬盘分区,自动挂载,你可以参考Linux Ubuntu 硬盘挂载方法

3 无法卸载情况下的其他解决方案

我们需要扩容某个常用的文件夹,将其挂载到一个大容量的新磁盘下。

  1. 为系统添加一个新的虚拟硬盘
    在这里插入图片描述

  2. 将该文件夹(假设文件夹名称为name1)的所有内容拷贝到该虚拟硬盘

    1. name1相同路径下,创建一个文件夹mkdir name2
    2. 把磁盘挂载到name2下,sudo mount /dev/sdb1 name2dev/sdb1为新添加的磁盘,请使用sudo fdisk -l命令查看该磁盘的名称。
    3. name1文件夹下所有文件夹和文件,拷贝到name2下,使用命令sudo cp -v -a name1/* ./name2
  3. 偷梁换柱,让name1在系统看起来没变化,实际上name1存储到了新的磁盘中

    1. 修改name2的权限,由root改为用户权限,chown -R user:group ./name2
    2. name1的文件名修改为别的,mv name1 name3
    3. name2修改为name1mv name2 name1
  4. 运行name1中的程序,看是否可以正确运行,此时name3其实你可以删掉了,但是以防万一,还是备份呆着比较好

解释一下为什么这样做:文件夹本来在原磁盘中,挂载到新磁盘之后,会显示新磁盘的内容,而原磁盘的内容会被隐藏,这导致很麻烦。通过完全拷贝的方式,解决这个问题。

此外注意一下cp命令,我们不需要把name1文件夹及其子文件夹拷贝,只需要拷贝其子文件夹,因此使用了name1/*。如果直接把name1拷贝到name2下,name1将会成为name2的子文件夹,这样和原有路径不一样了。

对于cp命令,如果使用cp -a name1 ./name333,而name333本来不存在,就相当于拷贝整个name1并改名为name333,而不是把name1文件夹作为name333的子文件夹存储。而挂载磁盘的文件夹是必须存在的,就不能通过这种方式复制。

<think>好的,用户问的是如何在VirtualBox中给挂载的Ubuntu磁盘扩容。我需要先回忆一下自己之前处理这个问题的经验,或者查找相关资料确保步骤正确。首先,用户可能已经创建了一个虚拟磁盘,但空间不够用了,想要扩大容量。VirtualBox本身有调整磁盘大小的命令,但需要确认用户使用的是动态分配还是固定大小的磁盘。如果是固定大小,可能需要先转换。然后,调整完虚拟磁盘后,Ubuntu内部的文件系统也需要扩展,这通常涉及到分区调整,比如使用GParted或者命令行工具如resize2fs。 接下来要分步骤说明:首先在VirtualBox中调整虚拟硬盘的大小,然后启动Ubuntu虚拟机,调整分区和文件系统。需要注意的部分包括关闭虚拟机后再调整磁盘、确保备份数据以防万一,以及处理分区表的问题。例如,如果用户使用的是传统的MBR分区,可能需要扩展主分区,而GPT可能更简单一些。此外,如果虚拟机中的磁盘是LVM管理的,步骤又会不同,需要调整物理卷、逻辑卷等。 可能用户遇到的问题包括调整磁盘大小后,Ubuntu内看不到未分配空间,或者分区被锁定无法调整。这时候可能需要使用Live CD或者GParted的ISO来调整分区。另外,要提醒用户扩展文件系统前必须先扩展分区,顺序不能错,否则会导致数据丢失。还要注意某些文件系统如ext4支持在线调整,但最好还是在未挂载的情况下操作,比如从Live环境启动。 需要确保步骤清晰,避免使用过于专业的术语,或者解释清楚术语。例如,解释VBoxManage命令的作用,以及如何找到虚拟磁盘文件的位置。同时,提醒用户在进行磁盘操作前备份重要数据,避免操作失误导致数据丢失。最后,可能还需要提供一些常见问题的解决方法,比如分区工具无法识别新空间,可能需要先删除并重新创建分区,但这样会丢失数据,所以必须提前备份。</think>在 VirtualBox 中为 Ubuntu 虚拟机扩容磁盘需要分两步操作:**调整虚拟磁盘大小**和**扩展虚拟机内的文件系统**。以下是详细步骤: --- ### **一、调整虚拟磁盘大小** 1. **关闭虚拟机** 确保 Ubuntu 虚拟机已完全关闭(不能是休眠状态)。 2. **调整虚拟磁盘容量** 在宿主机(如 Windows 或 macOS)的终端中执行以下命令(替换 `[虚拟机名]` 和 `[新大小]`): ```bash VBoxManage modifyhd "虚拟磁盘文件路径.vdi" --resize [新大小(MB)] ``` - 示例:将磁盘扩容到 30GB(单位是 MB): ```bash VBoxManage modifyhd "ubuntu.vdi" --resize 30720 ``` - 如果磁盘是 **VMDK 格式**,需要先克隆为 VDI 再调整: ```bash VBoxManage clonehd "original.vmdk" "new.vdi" --format vdi VBoxManage modifyhd "new.vdi" --resize 30720 ``` --- ### **二、扩展虚拟机内的文件系统** 启动 Ubuntu 虚拟机,分配的空间需要被分区和文件系统识别。 #### **方法 1:使用 GParted(图形化工具)** 1. **安装 GParted** ```bash sudo apt update && sudo apt install gparted ``` 2. **打开 GParted** ```bash sudo gparted ``` 3. **调整分区** - 找到需要扩展的分区(通常是 `/dev/sda1` 或 `/dev/sdaX`)。 - 右键点击分区 → **Resize/Move**,拖动滑块占用未分配空间。 - 点击绿色对勾应用更改。 #### **方法 2:使用命令行(适用于 LVM 或非 LVM)** **情况 A:非 LVM 分区(直接扩展)** 1. 查看磁盘信息: ```bash sudo fdisk -l ``` 2. 使用 `cfdisk` 调整分区(假设磁盘为 `/dev/sda`): ```bash sudo cfdisk /dev/sda ``` - 选中要扩展的分区 → **Resize** → 保存并退出。 3. 扩展文件系统(如 ext4): ```bash sudo resize2fs /dev/sda1 ``` **情况 B:LVM 分区(常见于 Ubuntu 默认安装)** 1. 查看物理卷(PV)和逻辑卷(LV): ```bash sudo pvdisplay sudo lvdisplay ``` 2. 扩展物理卷和逻辑卷: ```bash sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv # 扩展逻辑卷 sudo resize2fs /dev/ubuntu-vg/ubuntu-lv # 扩展文件系统 ``` --- ### **常见问题** 1. **调整分区时提示“无法移动”** - 使用 Live CD 启动虚拟机(如 GParted Live ISO),在未挂载状态下调整分区。 2. **扩容系统未识别新空间** - 确保已正确调整分区表(使用 `partprobe` 或重启系统)。 3. **数据备份** **强烈建议操作前对虚拟机创建快照或备份重要数据!** --- 通过以上步骤,VirtualBox 虚拟机的磁盘和文件系统即可完成扩容。如果遇到问题,可以结合 `lsblk`、`df -h` 等命令检查磁盘状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XV_

感谢您的认可,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值