使用 LVM 在 Hyper-V 中扩展磁盘

使用 LVM 在 Hyper-V 中扩展磁盘

在我的实验室环境中,我有一台 Ubuntu 服务器 12.04,我正在尝试为其添加空间。LVM 在启动时设置,通过编辑磁盘向导添加 100GB 后,我无法将该空间添加到分区。我尝试使用 Part Magic,但它不允许我扩展大小,尽管我确实看到了增加的空间。

fdisk -l 给我;

Disk /dev/sda: 108.4 GB, 108447924224 bytes
255 heads, 63 sectors/track, 13184 cylinders, total 211812352 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
Disk identifier: 0x00097307

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758    33552383    16525313    5  Extended
/dev/sda5          501760    33552383    16525312   8e  Linux LVM

Disk /dev/mapper/ubuntu--vg-root: 14.8 GB, 14751367168 bytes
255 heads, 63 sectors/track, 1793 cylinders, total 28811264 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
Disk identifier: 0x00000000

Disk /dev/mapper/ubuntu--vg-root doesn't contain a valid partition table

Disk /dev/mapper/ubuntu--vg-swap_1: 2143 MB, 2143289344 bytes
255 heads, 63 sectors/track, 260 cylinders, total 4186112 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
Disk identifier: 0x00000000

Disk /dev/mapper/ubuntu--vg-swap_1 doesn't contain a valid partition table

我以前从未真正使用过 LVM,也不是 Linux 专家,所以我不确定下一步该怎么做,因为我正在搜索有关此过程的指南。最后,我还想为启动分区添加一些空间。

感谢您花时间阅读这个问题,如果我可以提供更多详细信息,请告诉我。

答案1

如果您想在没有 GUI 工具的情况下执行此操作,则可以使用parted

在我的系统上,我将根文件系统(位于 上dev/sda3)从 128GB 扩展到 160GB。根据您的设置调整以下示例。所有命令都必须以 root 身份运行(sudo -i以 root 身份登录)。

之前,我的使用率为 95%:

# df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  124G  113G  6.3G  95% /

使用 Gen2 虚拟机,所有操作都可以在线完成,客户操作系统正在运行,无需重新启动。每个步骤几乎都是即时完成的。

首先,使用 Hyper-V GUI 或 CLI 工具扩展虚拟磁盘(最简单的方法是打开 VM 的设置,选择 SCSI 控制器下的硬盘驱动器,然后选择“编辑”然后选择“扩展”)。

接下来,您需要告诉 Ubuntu 重新扫描块设备,在本例中sda

# echo 1 > /sys/block/sda/device/rescan

接下来,运行parted并选择pprint它应该识别出分区表未使用完整空间并询问您是否要修复它,因此Fix此时选择。

# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an
extra 69206016 blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 172GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot, esp
 2      538MB   1612MB  1074MB  ext4
 3      1612MB  136GB   135GB

现在您需要实际扩展分区。在 中parted输入resizepart命令来完成此操作。就我而言,由于我正在扩展,所以sda3我告诉它将分区 3 的大小调整为可用空间的 100%。再次调整命令以适应您的设置。

(parted) resizepart 3 100%
(parted) p
Model: Msft Virtual Disk (scsi)
Disk /dev/sda: 172GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot, esp
 2      538MB   1612MB  1074MB  ext4
 3      1612MB  172GB   170GB

(parted) quit

输入quit退出parted

如果你使用 LVM,现在您需要告诉它扩展物理卷。pvs显示有关物理卷的信息;使用pvresize它来扩展它。如果没有给出参数,它将使用所有可用空间。

# pvs
  PV         VG        Fmt  Attr PSize    PFree
  /dev/sda3  ubuntu-vg lvm2 a--  <125.50g    0
# pvresize /dev/sda3
  Physical volume "/dev/sda3" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
# pvs
  PV         VG        Fmt  Attr PSize    PFree
  /dev/sda3  ubuntu-vg lvm2 a--  <158.50g 33.00g

现在,您需要扩展逻辑卷以及文件系统本身。lvextend使用-r开关将同时执行这两项操作,假设您使用它知道的文件系统(例如 ext3/4)。

# lvs
  LV        VG        Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ubuntu-lv ubuntu-vg -wi-ao---- <125.50g

# lvextend -l +100%FREE -r /dev/mapper/ubuntu--vg-ubuntu--lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <125.50 GiB (32127 extents) to <158.50 GiB (40575 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 16, new_desc_blocks = 20
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 41548800 (4k) blocks long.

就是这样!现在验证文件系统是否看到额外的空间:

# df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  156G  113G   38G  76% /

如果你不使用 LVM,你可以将pvresize/lvextend步骤替换为resize2fs相反。简单来说,resize2fs /dev/sda3它将告诉文件系统使用新增加的分区上的所有可用空间。

Teknophiles 上的这篇文章包含有关此过程的更多详细信息以及 Hyper-V 工具的屏幕截图。(2021 年 12 月更新:显然 teknophiles.com 现已停用;更新后的链接指向该网站的 archive.org 快照。)

答案2

截至 2019 年,我在尝试调整在 Hyper-V 上运行的 Ubuntu 18.04 VM 的大小时遇到​​了一些问题。安装 gparted: sudo apt install gparted、运行它:sudo gparted 并在应用程序的 GUI 上执行调整大小的过程解决了我的问题。

gparted GUI 帮助:https://youtu.be/cDgUwWkvuIY?t=330

编辑:显然,这仍然有效2021 年 1 月因为这个答案最近得到了赞同。

答案3

您使用gparted来调整分区大小。在 12.04 中,您需要从 livecd 启动并从那里运行它,因为它无法调整已挂载的分区大小。在更高版本中,它可以在挂载分区时增加许多分区。这只会为 LVM 提供更多空间来分配给逻辑卷。如果要增加逻辑卷,您可以运行例如lvresize -L 30g ubuntu-vg/root将根 lv 的大小增加到 30g。然后您需要告诉文件系统使用这个新空间,您可以使用 来做到这一点resize2fs /dev/ubuntu-vg/root,假设您使用的是默认的 ext4 文件系统。后面两个步骤可以在线执行,而不必从其他媒体启动。您还可以指定100%而不是30glvresize使用所有可用空间,但这有点违背了首先使用 LVM 将所有空间分配给一个逻辑卷的目的,因为您没有任何可用空间可用于创建快照、新逻辑卷或稍后增加某些卷。

相关内容