我的 XEN 主机上运行着一个虚拟机,磁盘空间不足。它已将其卷安装为/dev/xvda2
使用 ext4 文件系统格式化。
这是我的虚拟机 xen 配置:
# /etc/xen/vm04.experimental.cfg
kernel = '/boot/vmlinuz-4.9.0-11-amd64'
extra = 'elevator=noop'
ramdisk = '/boot/initrd.img-4.9.0-11-amd64'
root = '/dev/xvda2 ro'
disk = [
'phy:/dev/vg0/vm04.experimental-disk,xvda2,w',
'phy:/dev/vg0/vm04.experimental-swap,xvda1,w',
]
...
# lvdisplay /dev/vg0/vm04.experimental-disk
--- Logical volume ---
LV Path /dev/vg0/vm04.experimental-disk
LV Name vm04.experimental-disk
VG Name vg0
LV Status available
# open 1
LV Size 60,00 GiB
Current LE 15360
Segments 5
Allocation inherit
...
我的卷组上仍然剩余 44GB 空间vg0
:
# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 36766
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 27
Open LV 22
Max PV 0
Cur PV 2
Act PV 2
VG Size 1,07 TiB
PE Size 4,00 MiB
Total PE 281534
Alloc PE / Size 270080 / 1,03 TiB
Free PE / Size 11454 / 44,74 GiB
如何将剩余空间分配给我的 vm04?
答案1
正确的格式lvextend
是:
lvextend -L +40G /dev/vg0/vm04.experimental-disk
有关如何扩展虚拟机本身分区的说明,请使用本手册。
必须首先调整分区大小。如果您使用 LVM,这很简单,并且您可能知道如何继续。如果您使用的是经典分区,则情况会稍微复杂一些,并且可能需要重新启动(尽管您不必启动另一个系统或 Live CD)。
我是这样做的:使用 fdisk 首先删除分区(想法是磁盘上的数据将被保留),然后在同一位置小心地以更大的大小重新创建它。
同样,新分区与旧分区在同一块开始是至关重要的。 Id 也应该匹配(Linux 系统为 83)。做好因最轻微的拼写错误而丢失所有数据的准备。
为了安全起见,您还可以通过按 a 来恢复启动标志(根据维基百科,某些计算机仍然需要启动标志)。
请参阅评论部分,了解如果交换分区妨碍了该怎么办。
到现在为止,人们推荐使用 Live CD 的原因应该很明显了。 ;-) 正如 fdisk 有用地提醒您的那样,您必须在继续之前重新加载分区表。最安全的方法就是重新启动;但您也可以使用partprobe或kpartx(更多信息)。
调整分区大小并重新加载分区表后,在文件系统上运行 resize2fs 就很简单了,即使它作为根分区安装,您也可以执行此操作。
$ sudo resize2fs /dev/sda1
答案2
关闭音量:
xen shutdown vm04.experimental
删除该卷的所有快照:
lvchange -an /dev/vg0/snap-tmp-vm04.experimental-disk lvremove /dev/vg0/snap-tmp-vm04.experimental-disk
调整卷大小,例如使用以下命令扩展 40GB:
lvextend -L +40G /dev/vg0/vm04.experimental-disk
现在,VM 分配了 100GB 的更大大小,但内部仍然只有 60GB 磁盘
调整文件系统大小
resize2fs /dev/vg0/vm04.experimental-disk
看为什么我需要在lvextend之后进行resize2fs?
(最后还是要e2fsck -f /dev/vg0/vm04.experimental-disk
提前打电话)再次启动虚拟机:
xen create /etc/xen/vm04.experimental.cfg