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

Jos*_*ker 14 partitioning lvm disk-management 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
Run Code Online (Sandbox Code Playgroud)

我以前没有真正使用过 LVM,也根本不是 Linux 专家,所以我不确定下一步会是什么,因为我正在寻找有关此过程的方法。最后,我还想为引导分区添加一些空间。

感谢您花时间阅读这个问题,如果有其他细节我可以给你,请告诉我。

Mar*_*oso 15

截至 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 月,这仍然有效,因为这个答案最近得到了赞成。


Tob*_*s J 15

如果你想在没有 GUI 工具的情况下做到这一点,你可以使用parted.

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

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

# df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  124G  113G  6.3G  95% /
Run Code Online (Sandbox Code Playgroud)

使用 Gen2 虚拟机,一切都可以在线完成,而来宾操作系统正在运行,无需重新启动。每一步几乎都是瞬间完成的。

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

接下来,您需要告诉 Ubuntu 重新扫描块设备,在这种情况下sda

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

接下来,运行parted并选择pfor print。它应该认识到分区表没有使用完整空间并询问您是否要修复它,因此此时选择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
Run Code Online (Sandbox Code Playgroud)

现在您需要实际扩展分区。仍在 中时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
Run Code Online (Sandbox Code Playgroud)

键入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
Run Code Online (Sandbox Code Playgroud)

现在,您需要扩展逻辑卷以及文件系统本身。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.
Run Code Online (Sandbox Code Playgroud)

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

# df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  156G  113G   38G  76% /
Run Code Online (Sandbox Code Playgroud)

如果您不使用 LVM,则可以将pvresize/lvextend步骤替换为resize2fs

这篇关于 Teknophiles 的文章提供了有关此过程的更多详细信息以及 Hyper-V 工具的屏幕截图。

  • 这在 Hyper-V 2019 上具有调整大小的动态扩展磁盘的第 2 代 Ubuntu 20.04 LTS VM 上完美运行。谢谢! (4认同)

psu*_*usi 5

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