如何在Ubuntu虚拟机上更改分区?

原问:如何在没有Live CD的情况下调整root分区的大小?

我有一个虚拟机,我需要做大。 我使VM img更大,现在我需要调整分区大小,以便我可以使用额外的空间。

这是我当前的分区表,目标是组合/dev/vda1/dev/vda2
vda1是我当前的根分区
vda2是一个包含vda5 (交换)的扩展分区

 Device Boot Start End Blocks Id System /dev/vda1 * 2048 18874367 9436160 83 Linux /dev/vda2 18876414 20969471 1046529 5 Extended /dev/vda5 18876416 20969471 1046528 82 Linux swap / Solaris 

使用Gparted和live CD会很简单,但我只能ssh到服务器,或者在virt-manager中打开它,但它仍然只是命令行。 我怎么可能调整根分区的大小?

VM是Ubuntu服务器12.04。

您需要将VM与实时CD的iso连接 – 您可以下载的文件。 我假设你没有使用GUI-Tool(就像virt-manager一样) 安装virt-manager ),所以你必须从命令行执行此操作。

您可以使用virsh获取VM配置的XML文件(我称之为VM qemu1

 virsh dumpxml qemu1 > qemu1-config.xml 

现在编辑该文件,查找类似的内容

      

并替换它

      

重点是

  • 调整路径和文件名
  • 包含iso文件
  • 不应包含tray open现在tray open

现在,您将新设置生效

 virsh define qemu1-config.xml 

VM将需要重新启动。

这是最终有效的:

为VM注入img(虚拟磁盘映像)文件:

1. sudo qemu-img create -f raw addon.raw 10G创建原始光盘文件

2. sudo mv domain.img domain.old.img备份当前img

3. sudo cat domain.old.img addon.raw >> domain.img结合original和extra来创建新的更大尺寸的img文件。

现在我们有一个更大的图像,但VM仍然有旧的分区表。 现在是棘手的部分

接下来的步骤是在VM关闭的主机上完成的

下载gparted的iso文件:

wget -c http://sourceforge.net/projects/gparted/files/gparted-live-stable/0.6.4-1/gparted-live-0.6.4-1.iso

使用虚拟映像作为虚拟系统中的硬盘启动iso

命令: kvm -m 512 -hda domain.img -cdrom gparted-live-0.6.4-1.iso -boot d

我们基本上推出了一个虚拟系统kvm ,它将从cdrom-boot -boot d启动,gparted在cdrom -cdrom gparted-live-0.6.4-1.iso ,在这个虚拟系统-hda domain.img domain.img视为harddrive -hda domain.img并为此虚拟系统分配512mb内存-m 512

现在gparted弹出一个很好的GUI(可能还有一个命令行选项),准备重新分区你的虚拟磁盘。

现在,您可以像在真实计算机上使用liveCD一样操作分区表。

大部分信息来自Chris Walden的博客 。

感谢@guntbert指出我正确的方向(即可以从liveCD启动VM)。

您可以使用gParted和命令行resize 。 类型…

 sudo -i parted 

它会显示出来

 GNU Parted 1.7.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) 

list将显示很多命令……

 (分开)清单
  检查NUMBER对文件系统进行简单检查
   cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER复制文件系统到另一个分区
   help [COMMAND]打印常规帮助或COMMAND帮助
   mklabel LABEL-TYPE创建一个新的disklabel(分区表)
   mkfs NUMBER FS-TYPE在部分NUMBER上创建FS-TYPE文件系统
   mkpart PART-TYPE [FS-TYPE] START END创建一个分区
   mkpartfs PART-TYPE FS-TYPE START END使用文件系统创建分区
  移动NUMBER START END移动分区NUMBER
  名称NUMBER NAME名称分区NUMBER作为NAME
   print [free | NUMBER | all]显示分区表,分区或所有设备
  退出退出计划
  救援START END救援START和END附近丢失的分区
  调整NUMBER START END调整分区NUMBER及其文件系统的大小
   rm NUMBER删除分区NUMBER
  选择DEVICE选择要编辑的设备
  设置NUMBER FLAG STATE更改分区NUMBER上的FLAG
  切换[NUMBER [FLAG]]切换分区NUMBER上的FLAG状态
   unit UNIT将默认单位设置为UNIT
   version显示当前版本的GNU Parted和版权信息

  • print将显示光盘布局并在光盘上添加一个数字;
  • resize {number}将允许您调整光盘大小。
  • 这只适用于已安装的分区;)

我从来没用过这种方式,所以在发出命令时要小心。

您可以使用parted命令行工具。

首先您需要删除扩展分区。

使用parted列出分区

 parted /dev/vda 

记下扩展分区号。 使用starting and ending blocks并删除它。

 (parted) rm 2 ( Where is 2 your extended partition no.) 

不经使用检查

  (parted) print 

您将删除扩展分区。 现在在剩余空间中进行主分区。

 (parted) mkpart primary   

作为开始和结束块没有。 以前指出过。 再次检查

  (parted) print 

重新启动系统以产生影响。

调整根分区的大小

  resize2fs /dev/vda 

您必须使用以检查磁盘空间。

 df -lh 

您将扩展根分区。