(以下操作仅在VirtualBox虚拟机Ubuntu系统下的LVM文件系统中测试且有效,其他系统可以借鉴此方法进行磁盘扩容)
VirtualBox中默认创建的磁盘容量为8GB,当我们装完系统后很可能会发现剩余空间不足,此时不需要重新创建虚拟机再装一遍系统,我们可以调整该磁盘文件的最大容量。
磁盘文件格式转换
以下命令在命令提示符下输入
首先如果你的磁盘格式是vmdk的,那么应该首先转换成VDI格式。
转换命令:
VBoxManage clonehd "vmdk文件路径" "vdi转换后的VDI文件保存路径和文件名" --format VDI
(如果文件路径中有空格则需要加上双引号,否则可以不加)
(一般会提示没有该命令请到VirtualBox安装目录下执行,或者将VirtualBox目录添加到系统path环境变量中去)
示例:
VBoxManage clonehd "D:\VirtualBox VMs\Ubuntu\Ubuntu-disk1.vmdk" "D:\VirtualBox VMs\Ubuntu\Ubuntu.vdi" --format VDI
调整磁盘文件容量
转换完成后我们开始调整VDI磁盘文件的容量。
通过下面的命令查看所有被虚拟机管理的虚拟磁盘,找到我们要转换的磁盘文件的UUID
VBoxManage list hdds
然后调整磁盘的中的虚拟磁盘文件的动态大小上限:
VBoxManage modifyhd 目标磁盘的UUID --resize 调整后文件的大小(MB)
示例:
VBoxManage.exe modifyhd 734f523d-d7e1-4a3c-82ee-6f802b248c41 --resize 15360
设置虚拟机系统磁盘文件系统
调整磁盘容量上限后在虚拟机中系统的磁盘实际容量就会大于当前文件系统中记录的容量,我们需要修复这种错误,同时将扩大的磁盘容量合并到已有的磁盘系统中去。下面介绍了图形工具和终端命令两种方式进行错误修复和分区合并。
图形工具方式
完成后进入虚拟机,安装gparted工具。
sudo apt-get install gparted
打开后提示修复一个磁盘错误。
以root分区为例,调整root分区大小,将root分区扩容后执行并保存。
终端命令方式
如果你的Linux没有图形界面,那么也可以在终端下通过parted命令对磁盘的错误进行修复
通过下面的命令查看所有识别的分区信息:
sudo parted -l
此时提示进行修复,输入fix执行修复
通过parted的resizepart命令合并空闲空间到磁盘中(parted从3.0后resize命令已经被移除,这里我们通过resizepart去执行操作)
首先键入:sudo parted
然后在parted命令提示符下输入:print,列出所有分区设备。
接着输入:resizepart,选择对应的分区编号,输入100%回车即可
然后Ctrl+C退出parted命令。
执行lvm命令,通过pvresize命令将文件系统扩大到整个磁盘分区
注意这里的Physical volume是物理卷的意思,不是lvm中的逻辑卷,由于该示例的lvm逻辑卷是建立在sda3物理卷上的,因此这里填写sda3
然后Ctrl+C退出lvm命令
设置LVM文件系统的物理边界
对于不知道lvm文件系统路径的,可以通过 sudo fdisk -l 命令查看
对于LVM分区的系统来说还要执行lvextend命令去扩展逻辑卷(LVM)的物理边界,下面的命令意味将所有剩余的自由空间全部分配给lvm文件系统。
sudo lvextend -l +100%FREE lv文件系统路径
示例:
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-root
设置LVM文件系统的逻辑边界
执行了lvextend命令扩展逻辑卷(LVM)的物理边界后通过df -k命令看到的磁盘大小还是之前的大小,此时还需要用resize2fs命令扩展逻辑卷的逻辑边界(-p表示将逻辑边界设置的和物理边界一样大)
resize2fs -p lv文件系统路径
示例:
sudo resize2fs -p /dev/mapper/ubuntu--vg-root
至此再查看root磁盘容量已经扩大了。