我必须给 VirtualBox 映像提供额外的磁盘空间。
我使用以下命令调整了容器虚拟磁盘的大小:
VBoxManage modifyhd <absolute path to file> --resize <size in MB> //example
VBoxManage modifyhd example.vdi --resize 10000
警告,无法减小尺寸!
我df -h
在我的 ubuntu 虚拟机 16.04 上运行 - 没有变化。
/dev/mapper/example-vg--vg-root 5G 4.9G 50M 100% /
此时我对卷组一无所知,但经过一番挖掘后,我发现我现在有 5G 的可用空间,我该如何将其分配给我的卷组然后从那里到我的逻辑卷?
那么我该如何将这些可用空间放入我的逻辑卷 (LV) 中卷组(VG)?
答案1
您正在处理三个(以及隐含的第四级)抽象级别的磁盘空间:
.vdi
文件中的磁盘空间-- 您已使用 调整了此文件的大小VBoxManage
,但空间尚未出现在下两个抽象级别中。本质上,您所做的就像在真实计算机中安装更大的物理磁盘并使用 将原始磁盘的内容复制到上面dd
。您现在有了更多的(虚拟)磁盘空间,但您无法使用它,因为用于访问磁盘的数据结构尚未更新。- 虚拟化磁盘中的分区(又称物理卷或 PV)-- 您必须调整现有 PV 的大小或创建一个新的 PV 并将其添加到卷组 (VG)。请参阅这个问题以获得关于该主题的指针。
- 逻辑卷(文件系统)-- 扩展 PV 或创建新 PV 并将其添加到 VG 后,必须扩展逻辑卷 (LV) 及其包含的文件系统。上一个要点中提到的问题描述了如何执行此操作。
- 主机系统中的磁盘空间-- 这是第四层/隐含的抽象级别,实际上“高于”前面的级别。虽然该
VBoxManage
命令可能导致主机系统磁盘空间使用量发生微小变化,但一旦您开始在虚拟化环境中使用该空间,物理磁盘空间使用量就会增加。假设您有足够的实际磁盘空间,这应该不是问题,也不会影响您需要做的事情;我提到它只是为了完整性。
Olavi Sau 的答案似乎是正确的,但它的呈现顺序与您实际必须执行的顺序相反,因此可能会造成混淆。(也就是说,答案在分区/PV 操作之前描述了文件系统/LV 操作;但您需要先执行分区/PV 操作。)因此,我认为提出“鸟瞰”答案将是一个有用的补充。
答案2
您应该做的第一件事是通过查看卷组有多少可用空间来验证您是否还拥有所需的空间。
以下所有命令通常都需要 sudo。
您可以使用以下命令查看卷组的属性显示
vgdisplay
你应该看到类似这样的内容:
--- Volume group ---
VG Name example-vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 15.52 GiB
PE Size 4.00 MiB
Total PE 3972
Alloc PE / Size 3963 / 15.48 GiB
Free PE / Size 9 / 36.00 MiB
VG UUID JZCVgU-QvdG-2dMN-ZLrO-YXHp-83bq-zItAUD
如果您有空闲的物理范围(聚乙烯)您只需添加这些(如果可用的物理范围大小满足您的需求,请跳至添加到逻辑卷 Ctrl + F ADDING TO LOGICAL VOLUME
)。
如果你的卷组,您需要从分配的可用空间中添加它,但首先需要对其进行分区。
你可以这样做磁盘管理
fdisk /dev/sda
首先列出现有的表(您需要知道从哪里开始分区)
在 fdisk 中 ( Command (m for help):
)
p
将显示如下内容:
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 32000000 30998531 14.8G 5 Extended
/dev/sda3 32002048 48779263 16777216 8G 8e Linux LVM
/dev/sda5 1001472 32000000 30998529 14.8G 8e Linux LVM
复制最高结尾否则,您可能会在分区之间创建一个分区,从而将分区的大小限制为分区之间的空间。(例如 1 kb)
按 n 继续(创建新分区)
n
选择默认号码(没什么大不了的,但要记下来或记住)
粘贴第一个扇区的最高端并以 +size{K,M,G,T,P} 结尾(或您喜欢的任何内容)
这将创建新的分区。
您现在应该重新启动(sudo reboot
)
重启后创建物理卷pvcreate /dev/sda##THE NUMBER YOU CHOSE##
如果需要,请重新启动 sudo reboot
如果您不记得号码,您可以fdisk /dev/sda ... p
列出它们。
现在扩展您的卷组vgextend example-vg /dev/sda##NUMBER##
添加逻辑卷
sudo parted ##example-vg-path ( from vgdisplay) ##
print list ( find your /dev/mapper/example-vg--vg-root )
resizepart NUMBER
输入您的尺寸
quit
sudo resize2fs /dev/mapper/example--vg-root
運行df -h
去檢查。
结局有点笨拙,不过赶紧的也无妨 :)