转载:
 
 
 
 
 
 
参见博客:
https://blog.csdn.net/LEON1741/article/details/56494797

前在Virtualbox中安装了一个Ubuntu 12.04的系统,用来搞开发。安装的时候对后续用途估算不足,才给它分配了30G的空间。结果,用着用着,发现空间不够了。目前,30G的空间,就只剩1G了。整天报错,说空间不足,实在没办法了,于是开始倒腾如何给系统扩容。

需要说明的是,我这里的扩容,是基于linux根分区的扩容。因为我当时安装系统时,将所有硬盘空间直接挂载主分区下,然后建立了一个swap分区,并没有额外建立其他的分区。所以,现在如果要扩容,就意味着要对系统根分区进行扩容。打给比方,好比是在windows系统下对C盘进行扩容,而不是在E盘后面再增加一个F盘之类的做法。

百度了一下,很多人都发表了帖子来介绍扩容的方法。但是,看来看去,大多数都是不是基于根分区的,而是基于别的分区,就像我上面说的在E盘后面增加一个F盘之类。最后,好不容易找到了一个类似的帖子,提供了一个思路,然后经过我自己一番折腾和摸索,终于把这件事成功搞定,下面就是全过程的详细记录!

一、虚拟机物理空间扩容

首先要在Virtualbox中进行设置,给虚拟机再多分配点硬盘空间。比如我的虚拟机,本来分配的是30G,我想要调成80G。于是,要利用Virtualbox自带的工具VboxManage,该工具位于安装目录C:\Program Files\Oracle\VirtualBox下。为了使用方便,建议将该目录加入到系统的环境变量中,否则每次都要跳转到该目录下才能使用,比较麻烦。至于如何加入环境变量,此处就不解释了,不懂的请自行百度。

请注意,本步骤无需启动虚拟机。如果已经启动了的,请关掉退出。

1、获取虚拟机目标(一种方法,在D:/Program Files/Oracle/VirtualBox下)

C:\Users\leon>VboxManage.exe list hdds
UUID: c078b5bd--a-ab82-d123ba36
Parent UUID: base
State: created
Type: normal (base)
Location: E:\V_VtSystem\A_Systems\Ubuntu 12.04_HUD.vdi
Storage format: VDI
Capacity: MBytes
Encryption: disabled
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

8

  • 9

2、增加硬盘空间

  • 1
  • 2
  • 3

C:\Users\leon>VBoxManage.exe modifyhd

c078b5bd-2340-470a-ab82-9536d123ba36 --resize 81920

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% done!

3、查看执行结果

C:\Users\leon>VboxManage.exe list hdds
UUID: c078b5bd--a-ab82-d123ba36
Parent UUID: base
State: created
Type: normal (base)
Location: E:\V_VtSystem\A_Systems\Ubuntu 12.04_HUD.vdi
Storage format: VDI
Capacity: MBytes
Encryption:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

7

8

  • 9

可以看出,Virtualbo给目标虚拟机分配的硬件空间已经提升到了80G。不过,这仅仅是Virtualbox这端分配的值提升了,这个数据还没传达到虚拟机里面去,虚拟机里还要另外设置。

进入命令行,以Windows系统为例(令一种方法)

(特别注意空格和中文)

1.启动CMD命令行,进入VirtualBox的安装目录。如

运行:cmd C:/Users/Administrator/>D: D:/> cd  "/Program Files/Oracle/VirtualBox"D:/Program Files/Oracle/VirtualBox>VBoxManage.exe modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MBD:/Program Files/Oracle/VirtualBox>其中参数 YOUR_HARD_DISK.vdi 是您要修改的 VirtualBox 虚拟硬盘镜像文件。而参数 SIZE_IN_MB 是指修改后的硬盘容量,单位是MB。 3. 调整磁盘空间为15G:比如下面这行命令将会把名为"ubuntu.vdi "的 VirtualBox 硬盘容量修改为15*1024MB。C:/Program Files/Oracle/VirtualBox>VBoxManage.exe modifyhd "E:/dds/VirtualBox VMs/linux/linux-bak.vdi" --resize 15360
0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%.
D:/Program Files/VirtualBox>

注意:如果路径中包含空格或中文,整个路径要用英文状态引号"括起来,在WIN7的CMD下可以输入部分路径然后按TAB键补全,CMD监测到路径中有空格会自动为路径名加引号的,如:

D:/Program Files/Oracle/VirtualBox>VBoxManage.exe modifyhd "F:/VirtualBox/my ubuntu.vdi"--resize 15360

D:/Program Files/Oracle/VirtualBox>VBoxManage.exe modifyhd "F:/虚拟机/my ubuntu.vdi"--resize 15360

另,VBOX好像对MS的文件系统,比如NTFS的可能无法更改大小,一网友测试没成功,相对来说对Linux系的支持更好一些

C:/Program Files/Oracle/VirtualBox>VBoxManage.exe modifyhd "E:/dds/VirtualBox VMs/linux-bak/linux-bak.vdi" --resize 20480

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

C:/Program Files/Oracle/VirtualBox>cd E:/dds/VirtualBox VMs

二、Ubuntu磁盘分区重配

1、安装磁盘管理工具

启动虚拟机,进入系统后,安装并启动磁盘管理工具gparted。

sudo apt-get install gparted

sudo gparted

  • 1

  • 2

  • 3

启动界面如下图所示:

图中可以看出,新增的50G的空间仍处于未分配的状态,Ubuntu是不能识别的,必须进行相应的处理。

2、删除原有磁盘空间

处于安全起见,第一步首先要禁用swap交换空间。右击swap空间的磁盘,选择禁用交换空间。如下图所示:

然后删除该交换空间。如下图所示:

然后将交换空间所属的磁盘分区整个删除。如下图所示:

此时可以看到,交换空间所属的磁盘分区,与刚刚新分配的磁盘分区合并到一起了,成为了一个更大的磁盘分区。

3、重新生成磁盘分区

根据linux-gparted管理工具的原则,想要修改某个分区的大小,必须从它临近的另外一个分区来操作。因此,必须在sda1分区后紧接着生成一个空的分区,最终才能将整个新分区的容量合并到sda1分区中去。所以,我们必须在目前这个未分配的分区中,生成2个分区。第一个分区是新加入的50G的空间,第二个分区是swap分区。

首先生成50G的新分区。在未分配的分区中右击选择新建,如下图所示:

在弹出的对话框中输入新创建的分区的数据。这里要注意的是,分区的文件系统一定要选择成与目前sda1分区的文件系统一样的格式ext4。同时,为了给swap分区预留空间,因此要设置该分区之后的空余空间为2G。如下图中蓝色框部分所示:

创建完这个50G的分区之后,剩下的就是swap分区的空间了。再次重复上述步骤,创建swap分区即可。这里要注意的是,分区的文件系统一定要记得改成linux-swap格式,否则就不是swap分区了。如下图蓝色框部分所示:

4、磁盘分区写入分区表

分区创建完毕,选择立即生效即可。如下图中蓝色框部分所示:

分区表信息写入成功。如下图所示:

此时可以看到,系统已经生成了3个分区。原来的sda1分区仍然存在,紧接着是新生成的50G的补充分区sda2,最后是swap分区sda3。要注意的是,这3个分区的顺序不能错,也就是说,swap分区必须位于最后,否则将不能执行合并!

至此,gparted工具的所有操作全部完成。可以退出该工具,同时重启系统。

三、Ubuntu磁盘分区表重写

1、查看当前磁盘分区情况

leon@Ubuntu:~$ sudo df -h
[sudo] password forleon:
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 28G 26G 995M 97% /
udev 1.5G K 1.5G % /dev
tmpfs M K M % /run
none 5.0M 5.0M % /run/lock
none 1.5G K 1.5G % /run/shm
dir_esd G G G % /mnt/share/esd
dir_hud G G G % /mnt/share/hud

leon@Ubuntu:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 84.4 GB, bytes
heads, sectors/track, cylinders, total sectors
Units = 扇区 of * = bytes
Sector size (logical/physical): 512 bytes / bytes
I/O size (minimum/optimal): 512 bytes / bytes
Disk identifier: 0x000ca15e
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 * Linux
/dev/sda2 Linux
/dev/sda3 121634816 125829119 2097152 82 Linux 交换 / Solaris

  • 1

  • 2

  • 4

6

  • 7

8

9

10

11

  • 12

13

  • 14

  • 15

  • 16

    1

19

  • 20

21

22

2、关闭swap分区

leon@Ubuntu:~$ free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
leon@Ubuntu:~$ swapoff -a
leon@Ubuntu:~$ free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:

  • 1

  • 2

5

  • 6

  • 7

8

9

  • 10

  • 11

3、删除现有磁盘分区信息

leon@Ubuntu:~$ sudo fdisk /dev/sda

命令(输入 m 获取帮助): p

Disk /dev/sda: 84.4 GB, bytes
heads, sectors/track, cylinders, total sectors
Units = 扇区 of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk identifier: 0x000ca15e

设备 启动 起点 终点 块数 Id 系统
/dev/sda1 * Linux
/dev/sda2 Linux
/dev/sda3 Linux 交换 / Solaris

命令(输入 m 获取帮助): d
分区号 (-):

命令(输入 m 获取帮助): d
分区号 (-):

命令(输入 m 获取帮助): p

Disk /dev/sda: 84.4 GB, bytes
heads, sectors/track, cylinders, total sectors
Units = 扇区 of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk identifier: 0x000ca15e

设备 启动 起点 终点 块数 Id 系统
/dev/sda3 Linux 交换 / Solaris

  • 1

  • 2

  • 32

  • 33

可以看出,前2个分区已经消失了。

4、重新建立新的分区信息

命令(输入 m 获取帮助): n
Partition type:
p primary ( primary, extended, free)
e extended
Select (default p): p
分区号 (-,默认为 ):
起始 sector (-,默认为 ):
将使用默认值
Last sector, +扇区 or +size{K,M,G} (-,默认为 ):
将使用默认值

命令(输入 m 获取帮助): p

Disk /dev/sda: 84.4 GB, bytes
heads, sectors/track, cylinders, total sectors
Units = 扇区 of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk identifier: 0x000ca15e

设备 启动 起点 终点 块数 Id 系统
/dev/sda1 Linux
/dev/sda3 Linux 交换 / Solaris

  • 1

  • 2

  • 14

可以看出,新的分区信息建立完毕,主分区已经有了80G的空间了。但是,此时还没完全结束,还要把分区信息写入到分区表里去。5、分区信息写入分区表命令(输入 m 获取帮助): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed witherror: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot orafter you run partprobe() or kpartx()
Syncing disks.

  • 1

2

3

  • 4

5

  • 6

78

  • 9

6、重启系统并生效立即重启系统,重启完后,执行下述命令,让系统完成分区表的刷新和重载。leon@Ubuntu:~$ sudo df -h
[sudo] password for leon:
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 G G G % /
udev 1.5G K 1.5G % /dev
tmpfs M K M % /run
none 5.0M 5.0M % /run/lock
none 1.5G K 1.5G % /run/shm
dir_esd G G G % /mnt/share/esd
dir_tmp G G G % /mnt/share/tmp

leon@Ubuntu:~$ sudo resize2fs /dev/sda1
resize2fs 1.42 (-Nov-)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = , new_desc_blocks =
The filesystem on /dev/sda1 is now blocks long.

leon@Ubuntu:~$ sudo df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 G G G % /
udev 1.5G K 1.5G % /dev
tmpfs M K M % /run
none 5.0M 5.0M % /run/lock
none 1.5G K 1.5G % /run/shm
dir_esd G G G % /mnt/share/esd
dir_tmp G G G % /mnt/share/tmp
leon@Ubuntu:~$
leon@Ubuntu:~$ sudo fdisk -l /dev/sda

Disk /dev/sda: 85.9 GB, bytes
heads, sectors/track, cylinders, total sectors
Units = 扇区 of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disk identifier: 0x000ca15e

设备 启动 起点 终点 块数 Id 系统
/dev/sda1 Linux
/dev/sda3 Linux 交换 / Solaris

  • 1

2

  • 3

4

  • 5

6

  • 7

8

9

  • 10

11

  • 12

1314

  • 15

16

  • 17

1819

  • 20

21

  • 22

23242526272829303132333435363738

39

可以看出,Ubuntu的硬盘空间,已经由原来的30G成功升级为80G!本次任务圆满完成!

搞定,收工!

如何在Virtualbox中对Ubuntu系统根分区扩容的更多相关文章

  1. 如何在VMwareWorkstation中安装Ubuntu系统

    文章更新于:2020-03-17 注:如果安装之后重启停留在Write through,则关闭客户机,将 ISO 镜像换为物理光驱,或取消勾选开机连接.再次开机即可正常进入系统. 文章目录 一.安装环 ...

  2. 在不同的系统中的virtualbox中安装Ubuntu SDK

    对非常多的开发人员来说.你们可能使用的不是Ubuntu操作系统.在这样的情况下,开发人员须要在自己的操作系统中(OS X及Windows)安装virtualbox,并在VirtualBox中安装Ubu ...

  3. [转帖]如何在VirtualBox中运行macOS Catalina Beta版本

    如何在VirtualBox中运行macOS Catalina Beta版本 secist2019-08-03共2179人围观系统安全 https://www.freebuf.com/articles/ ...

  4. 如何实现虚拟机(VirtualBox)中的Ubuntu与Windows XP间的数据共享

    环境: 主机是Windows XP系统 虚拟机与Ubuntu的版本分别为: VirtualBox-3.2.12-68302-Win ubuntu-10.10-desktop-i386 前提:已安装Vi ...

  5. 如何在VPC中安装Ubuntu

    在虚拟机 VPC2007 中安装Ubuntu 方法A:(断网络连接) 1.用载入ISO镜像启动一台标准的 xp设置的虚拟机 2.按 F4 选择启动模式,选择图形模式并确认. 3.按 F6 在启动配置中 ...

  6. Windows 7 共享文件夹 给 VirtualBox 中的 Ubuntu 14

    操作步骤如下: 1.打开虚拟机中的 Ubuntu 系统: 2.安装“增强工具” 设备 -> 安装增强工具 3.设置“共享文件夹” 控制 -> 设置 -> 添加共享文件夹 ->  ...

  7. VirtualBox中的Ubuntu没有权限访问共享文件夹/media/sf_bak

    之前已经搞定可以自动共享文件夹了,但是现在发现无法去访问,非root用户下,使用“ls /media/sf_bak”提示没有权限,当然如果切换到root,是可以的. [解决过程]1.把普通用户名加入到 ...

  8. 关于ubuntu系统boot分区空间不足而又无法卸载旧内核的解决方法

    2016年09月03日 14:16:45 萧氏一郎 阅读数:7802 标签: ubuntuboot分区清理更多 个人分类: linux   版权声明:本文为本猿原创文章,转载务必注明出处,多谢. ht ...

  9. Linux 分区扩容(根分区扩容,SWAP 分区扩容,挂载新分区为目录)

    请访问原文链接:https://sysin.org/blog/linux-partition-expansion/,查看最新版.原创作品,转载请保留出处. 作者:gc(at)sysin.org,主页: ...

随机推荐

  1. Android之扫描文件或文件夹

    我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到.这是因为SD卡并没有重新挂载,图库也无法把这张图片加载进去,解决这个问题非常简单,只需要我们重 ...

  2. QT---实现舒尔特方格(零基础入门)

    按照之前说的,加上舒尔特方格,读者还可以自行将此游戏做成APP放到手机上,后面还有贪吃蛇,Java版的飞机大战,五子棋,各类游戏会不断加上来的,当然,会免费附加源代码! 读者可以去4399去玩一下,可 ...

  3. shell脚本之 给PNG图片添加后缀@3x

    1,给png图片加上后缀@3x #!/bin/sh #root_src=$(dirname $(PWD)) #echo ${root_src} image_path=${root_src}/image ...

  4. topcoder srm 410 div1

    problem1 link 不包含$gridConnections$ 的联通块一定是连在所有包含$gridConnections$的联通块中最大的那一块上. import java.util.*; i ...

  5. Python3基础 list range+for 等差数列

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. 集训总结DAY.1(18.5.22)——KMP

    DAY 1——5.22 in the morning 依稀记得我们有一场contest. at night chf大佬讲KMP,先膜一波~~~ luoguP3375KMP模板题 KMP算法,又称模式匹 ...

  7. Git 命令收集

    目录 1.清理恢复 2.回滚,reset与revert的区别 3.merge,rebase,cherry-pick区别 4.删除不存在对应远程分支的本地分支 5.git pull,git push 报 ...

  8. [bzoj 4196][NOI 2015]软件包管理器

    大概算是一道模板题吧? 就是细节有点多 罗列一下: 如果习惯从1开始搞树的编号的话,处理输入进来的那个依赖关系在加边的时候两个都要+1,体现在代码就是i要从2枚举到n,然后输入进来的那个数要+1 这道 ...

  9. P2051 [AHOI2009]中国象棋(动态规划)

    思路 好像是一道挺水的计数的,不知道为什么会是紫题 显然每行和每列最多放两个 首先考虑状压,然后发现三进制状压可做,但是三进制太麻烦了,可以拆成两个二进制,一个表示该列是否是放了一个的,一个表示该列是 ...

  10. (转)awesome-text-summarization

    awesome-text-summarization 2018-07-19 10:45:13 A curated list of resources dedicated to text summari ...