自从使用虚拟机以后,经常会遇到虚拟机硬盘不够的情况,本文在借鉴其他文章基础上,修正一些不完善的步骤,本着利己利人的思想,在此整理一下全部步骤,并就LVM容易出错的地方给予一些建议。
在此之前,我们先普及一下硬盘扩容为什么要做那么多操作?
这个问题和计算机操作系统的分层管理有关。我们知道硬盘是最底层的硬件,在这之上,我们可以创建分区,什么启动分区,逻辑分区之类。然后才是在分区上面创建文件系统。最终用户的操作都是在文件系统上面。好了,问题来了,当我们加一盘硬盘后或是硬盘扩容,只是增大了硬盘的容量。在我们没有相应地增加分区,增大文件系统容量之前,Linux是不会让我们利用新的容量的。
就这一点来看,和windows相比,Linux还是有不少的改进空间,虽然Linux也有分区工具,但明显没windows好用。
既然用Linux,说明你想提高动手能力,那就开始练习吧!希望下面能帮到你。
硬件环境
宿主机:Windows 10,Hyper-V
虚拟机:Ubuntu16.04,默认使用LVM管理所有扩展分区
问题:Ubuntu安装时,只设定了16G硬盘,后来发现跑docker不够,想扩大到32G。
VHD硬盘扩容
Hyper-V的vhd可以很方便的扩容,见下图。其他虚拟机用户可以跳过这一步。注意:扩容不是live操作,VM需要关机,硬盘扩容后再重启VM。
经过扩容,重启Ubuntu,用fdisk -l查看,硬盘容量已经增大:
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Linux虚拟机增大扩展分区(parted)
把新增加的容量添加到扩展分区里面,这里用命令行工具parted来介绍如何增大分区,运行parted /dev/sda,进入交互式模式,
/dev/sda2 1001470 67108863 66107394 31.5G 5 Extended
/dev/sda5 1001472 31455231 30453760 14.5G 8e Linux LVM
Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 6
First sector (31457280-67108863, default 31457280):
Last sector, +sectors or +size{K,M,G,T,P} (31457280-67108863, default 67108863):
Created a new partition 6 of type 'Linux' and of size 17 GiB.