调整 xen 虚拟磁盘的大小

调整 xen 虚拟磁盘的大小

我的 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

  1. 关闭音量:

    xen shutdown vm04.experimental
    
  2. 删除该卷的所有快照:

    lvchange -an /dev/vg0/snap-tmp-vm04.experimental-disk    
    lvremove /dev/vg0/snap-tmp-vm04.experimental-disk
    
  3. 调整卷大小,例如使用以下命令扩展 40GB:

    lvextend -L +40G /dev/vg0/vm04.experimental-disk
    

    现在,VM 分配了 100GB 的更大大小,但内部仍然只有 60GB 磁盘

  4. 调整文件系统大小

    resize2fs /dev/vg0/vm04.experimental-disk
    

    为什么我需要在lvextend之后进行resize2fs?
    (最后还是要e2fsck -f /dev/vg0/vm04.experimental-disk提前打电话)

  5. 再次启动虚拟机:

    xen create /etc/xen/vm04.experimental.cfg
    

相关内容