如何从命令行扩展 /dev/sda3 和卷组?

Pau*_*ski 5 partitioning 16.04

我们在 Hyper-V 下将 Ubuntu 16.04.6 LTS 作为虚拟机运行 - 没有 UI,因此 gparted 并不是真正的选择。

/dev/sda3 上的空间不足,因此我扩展了 Hyper-V 内部的驱动器,然后运行:

sudo parted -l
Run Code Online (Sandbox Code Playgroud)

它警告说:

似乎并未使用 /dev/sda 的所有可用空间,您可以修复 GPT 以使用所有空间(额外的 20971520 块)还是继续当前设置?修复/忽略?使固定

修复后,我看到运行 fdisk -l /dev/sda 现在为 100 GiB。

我不太清楚如何将这个额外空间分配给 /dev/sda3 - 我尝试扩展使用率为 99% 的逻辑卷(正是这个逻辑卷促使我首先尝试扩展可用空间):

sudo lvextend /dev/srv-vg/root /dev/sda3
Run Code Online (Sandbox Code Playgroud)

但我认为由于空间没有分配给 sda3 它无法扩展它(因为它并没有真正扩展它)。

于是我尝试分手:

$sudo parted /dev/sda
resize part 3
End?  [85.9GB]? -0
(parted): quit
Information: You may need to update /etc/fstab
Run Code Online (Sandbox Code Playgroud)

fdisk -l 现在显示 sda3 有更多空间,但仍然显示 99% 的空间已使用。

Device       Start       End   Sectors  Size Type
/dev/sda1     2048   1050623   1048576  512M EFI System
/dev/sda2  1050624   2050047    999424  488M Linux filesystem
/dev/sda3  2050048 209715166 207665119   99G Linux LVM

Disk /dev/mapper/srv--vg-root: 77 GiB, 82703286272 bytes, 161529856 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Run Code Online (Sandbox Code Playgroud)

我再次尝试了 lvextend:

sudo lvextend /dev/srv-vg/root /dev/sda3
Run Code Online (Sandbox Code Playgroud)

但它是这样说的:

  No free extents on physical volume "/dev/sda3".
  No specified PVs have space available.
Run Code Online (Sandbox Code Playgroud)

我重新检查了 vgdisplay:

--- Volume group ---
VG Name               srv-vg
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               79.02 GiB
PE Size               4.00 MiB
Total PE              20229
Alloc PE / Size       20217 / 78.97 GiB
Free  PE / Size       12 / 48.00 MiB
VG UUID               HvKrjH-VGRA-svAB-NOmW-f23C-7uwq-hdh5Ja
Run Code Online (Sandbox Code Playgroud)

感觉我已经快到了,但我不知道还需要做什么来扩展它。

我在这里缺少什么?

小智 4

每次玩磁盘时,您都必须经历以下阶段:

  1. 扩展/修改存储设备(在您的情况下为虚拟机磁盘)
  2. 有时需要刷新操作系统/内核分区表(重新启动是确定且简单的步骤)
  3. 扩展/修改该分区的分区表
  4. 再次刷新分区表(通过blockev或partprobe命令或重新启动)
  5. 现在您可以扩展您的文件系统,您就完成了或继续...
  6. 如果是 LVM 左右,现在是时候使用 PV、VG 以及最后的 LV 调整大小命令

所以您可能正在寻找遗漏的步骤:

pvresize/vgextend在您已成功调整正确分区大小的情况下

如果分区仍然没有调整大小?

使用fdisk (、cfdisk、sfdisk、parted、-gparted-、..) 调整此分区的大小。如果它是磁盘上的最后一个分区(绝不是 GPT/MBR 类型),那就很容易了。我通常删除该分区并重新创建更大的分区。

尝试pvdisplay、vgdisplay命令并查看显示的内容 $ cat /proc/partitions 如果您在此处没有看到您的可用空间,则它可能仍未分配给正确的分区。

PS:如果您不确定,请务必进行备份