文章来源:http://www.zwsun.com/add_virtual_machine_space_2011_11_20_post
问题: 原来VirtualBox的虚拟机CentOS6.3 的空间不足了,在网上找了很多扩容的方法尝试都没有成功,唯独 “VirtualBox 中linux虚拟机 挂载额外硬盘的方法” 这个方法可行。再次感谢作者 阿文的自留地
优点:虚拟机中读写速度较快,虚拟硬盘也可以后面给其他的虚拟机使用
缺点:宿主机器无法读写块虚拟硬盘中的内容
操作方法:
1.1 先给虚拟机配备一个动态大小的虚拟硬盘
这个和一般的装虚拟机新建虚拟硬盘一样的操作。
打开虚拟机的配置 > storage 增加SATA控制器,然后在SATA控制器下增加一块虚拟硬盘;或者直接在IDE controller下面新增一块虚拟硬盘。
1.2 在虚拟机中进行分区,格式化,然后挂载
1.2.1 分区:
PS:必须要在root下操作,下面的描述中,红色字体的为输入的命令。
先用fdisk -l看看,如果没有找到你的虚拟硬盘,那就是前面的虚拟硬盘没有配置对。
root@dev-desktop:/home/dev# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes255 heads, 63 sectors/track, 1044 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0×00015130
Device Boot Start End Blocks Id System/dev/sda1 * 1 993 7976241 83 Linux/dev/sda2 994 1044 409657+ 5 Extended/dev/sda5 994 1044 409626 82 Linux swap / Solaris
Disk /dev/sdb: 2845 MB, 2845835264 bytes255 heads, 63 sectors/track, 345 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk identifier: 0×00000000
Disk /dev/sdb doesn’t contain a valid partition table
可以看到第二块虚拟硬盘 /dev/sdb 上面没有任何分区信息,当然无法用了。
接着 fdisk /dev/sdb 在第二块虚拟硬盘上建立分区,关于fdisk的详细用法请在进入fdisk后按m或者搜索之。
root@dev-desktop:/home/dev# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0xadff2d79.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won’t be recoverable.
Warning: invalid flag 0×0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)p
Partition number (1-4): 1
First cylinder (1-345, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-345, default 345):回车
Using default value 345
Command (m for help): w
The partition table has been altered!
1.2.2 格式化
有分区了,还是无法使用的,这时候需要格式化,linux下普遍使用的是ext3。我们通过mkfs对刚才的分区格式化:
root@dev-desktop:/home/dev# mkfs.ext3 /dev/sdb1
mke2fs 1.40.8 (13-Mar-2008)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)173888 inodes, 692795 blocks34639 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=71303168022 block groups32768 blocks per group, 32768 fragments per group7904 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 blocks): doneWriting superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
1.2.3 挂载
通过mkdir先建立一个挂载点,如在根目录下建立一个data目录用于挂载 mkdir /data/
root@dev-desktop:/home/dev# mount /dev/sdb1 /data/
通过df命令看看挂载情况,如果有相应的挂载信息就ok了。
root@dev-desktop:/home/dev# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 7.6G 6.1G 1.2G 85% /
varrun 352M 128K 352M 1% /var/run
varlock 352M 0 352M 0% /var/lock
udev 352M 48K 352M 1% /dev
devshm 352M 0 352M 0% /dev/shm
lrm 352M 40M 313M 12% /lib/modules/2.6.24-27-generic/volatile
/dev/sdb1 2.7G 69M 2.5G 3% /data
1.2.4 设置 /etc/fstab
做这一步的目的在于将第二块虚拟硬盘的信息写入系统分区信息表,便于开机自动挂载,否则,每次都需要手动去mount
在目前的/etc/fstab文件后面增加一行
/dev/sdb1 /data ext3 defaults 0 2
关于fstab的配置和各个参数的含义,可以自行搜索之。
优点:宿主和虚拟机都可以操作共享的文件,虚拟机内的空间完全决定于宿主机器的物理硬盘和实际分区,虚拟机开启后也可以使用该办法。
缺点:速度较慢
方法:
在虚拟机的设置 > 数据空间中设置宿主的目录和权限。
进入虚拟机后以root身份运行以下命令:
mount -t vboxsf 数据空间名称 挂载点
总结:如果你在宿主能够访问虚拟机中文件这方面没有需求,推荐使用增加虚拟硬盘的方法。