一开始安装linux虚拟机的时候什么都没有考虑,想想给个10G够用了吧。结果要写代码装了个eclipse,还要下载好大的代码文件,于是就悲催了。网上搜罗了方法,整理了一下,写在这里:
要给虚拟机上的linux系统扩容有以下几步:
1. VirtualBox上硬盘扩容。
2. linux系统上挂载新的磁盘分区。
3. 修改挂载磁盘分区权限。
假设我们需要给linux虚拟机增加30G的空间。linux系统是ubuntu
1. VirtualBox上给虚拟机硬盘扩容。
打开命令窗口cd到virtualbox的安装目录下,然后使用命令: VBoxManage modifyhd <path to your vdi> --resize <new size in megabytes> 。这里30G = 30 * 1024M = 30720M。
这个时候打开你虚拟机的设置-storage-SATA控制器-ubuntu.vdi,可以看到虚拟分配空间已经40个G啦(原来的10G+扩展的30G)。
2. linux系统上挂载新的磁盘分区。
在VirtualBox上给虚拟机硬盘扩容还不够,如果你用fdisk -l去查看磁盘分区,发现用的额还是原来那点地方。就好像你给你的电脑加了一个新的硬盘,但是打开我的电脑,并没有哪个盘上多了些空间。所以要真正把这新加的容量利用起来,还需要告诉系统你增加的容量放哪了。
在给linux系统挂载新的磁盘分区之前,请先了解一下什么是磁盘分区,分区的时候有哪些规则 http://vbird.dic.ksu.edu.tw/linux_basic/0130designlinux_2.php
在继续之前请注意一下,下面的数字可能跟你电脑上的会不同。请参考自己系统上的具体情况加以变动。
首先我们先来查看下当前的分区情况:sudo fdisk -l
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 15728639 7863296 83 Linux
/dev/sda2 15730686 16775167 522241 5 Extended
/dev/sda5 15730688 16775167 522240 82 Linux swap / Solaris
这个系统上当前有两个主分区,一个逻辑分区。我们可以新增一个主分区,并分配上我们所扩展的30G的容量。
使用命令sudo fdisk /dev/sda, 这个时候会显示让你输入命令 “Command (m for help): ” 输入m返回帮助信息。
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
可以看到有一系列的命令,这里我们需要用到 'n' -- add a new partition ,输入n
Partition type:
p primary (1 primary, 1 extended, 2 free) -- 这里表示有已有两个主分区,还可以创建两个 (但是我们最好不要创建四个主分区,原因请见之前给的链接)
l logical (numbered from 5) -- 这里表示逻辑分区的编号从5开始(这是为什么呢,请参见之前那个链接)
这个时候他会问你新建磁盘分区的类型,并在括号里面告诉你当前某个类型的磁盘情况。然后我们输入 p,创建主分区。
这个时候它会问你partition的编号,默认是3. 请输入3
然后它会询问你磁盘分区开始的位置 (15728640- 83886079, default 15728640):
你可能会疑问这个15728640怎么来的呢,我们再会到之前我们查看的磁盘分区信息:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 15728639 7863296 83 Linux
/dev/sda2 15730686 16775167 522241 5 Extended
/dev/sda5 15730688 16775167 522240 82 Linux swap / Solaris
看到红色标记出来的数字木有,就是那个加一,如果我们用这个默认的数字,你会发现,当他要让你输入磁盘分区结束的位置的时候,可以到达的数字并不是83886079,而是15730685,这是为什么呢,因为15730686 ~ 16775167已经被sda2用掉啦。所以我们这里要输入16775168,也就是sda2后面开始的位置,然后回车。
这个时候它会询问你磁盘分区结束的位置,你可以输入83886079,也就是将你所新增的磁盘空间全部加进去。
最后输入命令 'w' 保存就大功告成啦。可以再查询一遍当前的磁盘分区状况,就会发现你新加的/dev/sda3哦,哈哈~~
分区新建好了,我们需要格式化之后才能使用: mkfs -t ext3 /dev/sda3
然后我们需要挂载到文件目录上去。假设我们要挂在到目录/home/work, 则使用命令: sudo mount /dev/sda3 /home/work 。
如果想每次开机的时候自动挂载,那么就在/etc/fstab文件中加入一行
/dev/sda3 /home/work ext3 defaults, 0 1
3.修改磁盘分区权限
磁盘分区建好了,但你有木有发现你木有权限在里面创建文件夹?我们在/home目录 ls -all一把,发现这个work文件夹的权限归root所有!!!!所以我们需要修改下权限:
chmod 777 /home/work
好了这下真的算是大功告成啦!! 哈哈!!