如何在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一样) ),所以你必须从命令行执行此操作。
您可以使用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
您将扩展根分区。