Ubuntu 没有使用完整的磁盘空间 - 如何扩展?

not*_*vvy 9 partitioning lvm

我最近安装了 Ubuntu 20.04 服务器*,一段时间后由于“设备上没有剩余空间”而遇到了麻烦。直到那时我才意识到 Ubuntu 安装并未完全使用可用磁盘空间:

\n
$ lsblk\nNAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT\n[...]\nnvme0n1                   259:0    0 931.5G  0 disk \n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1               259:1    0   1.1G  0 part /boot/efi\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p2               259:2    0   1.5G  0 part /boot\n\xe2\x94\x94\xe2\x94\x80nvme0n1p3               259:3    0   929G  0 part \n  \xe2\x94\x94\xe2\x94\x80ubuntu--vg-ubuntu--lv 253:0    0   100G  0 lvm  /\n
Run Code Online (Sandbox Code Playgroud)\n

据我了解输出,分区nvme0n1p3大小为 929 GB,但 Ubuntu 仅使用其中的 100 GB。我不知道为什么会发生这种情况,因为我有一个较旧的 Ubuntu 20.04 Server 安装,看起来正如我所期望的:

\n
$ lsblk\nNAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT\n[...]\nnvme0n1                   259:0    0 953.9G  0 disk\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1               259:1    0   512M  0 part /boot/efi\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p2               259:2    0     1G  0 part /boot\n\xe2\x94\x94\xe2\x94\x80nvme0n1p3               259:3    0 952.4G  0 part \n  \xe2\x94\x94\xe2\x94\x80ubuntu--vg-ubuntu--lv 253:0    0 952.4G  0 lvm  /\n
Run Code Online (Sandbox Code Playgroud)\n

我找到了这个答案这个答案并尝试了它,但答案是:

\n
$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 929G \nresize2fs 1.45.5 (07-Jan-2020)\nThe containing partition (or device) is only 26214400 (4k) blocks.\nYou requested a new size of 243531776 blocks.\n
Run Code Online (Sandbox Code Playgroud)\n

所以它告诉我包含分区的大小只有 100 GB,但lsblk显然告诉我一些不同的东西。

\n

如何让 Ubuntu 使用所有可用的 929 GB?

\n
\n

*尽管我确信我告诉安装程序使用所有可用磁盘空间,但 Ubuntu 22.04.1 LTS 服务器仍然会发生同样的情况。

\n

not*_*vvy 22

由于 Ubuntu 使用 LVM 卷,因此需要先更改卷的大小,然后才能resize2fs增加底层文件系统的大小。

\n

lvextend这可以使用如下方式完成:

\n
$ sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv\n  Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to <928.96 GiB (237813 extents).\n  Logical volume ubuntu-vg/ubuntu-lv successfully resized.\n
Run Code Online (Sandbox Code Playgroud)\n

-l +100%FREE选项指示lvextend将包含卷组的所有可用空间添加到逻辑卷。

\n

现在我们可以resize2fs修改文件系统,使其使用所有可用空间:

\n
~$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv\nresize2fs 1.45.5 (07-Jan-2020)\nFilesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required\nold_desc_blocks = 13, new_desc_blocks = 117\nThe filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 243520512 (4k) blocks long.\n
Run Code Online (Sandbox Code Playgroud)\n

现在确实如此:

\n
$ lsblk\nNAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT\n[...]\nnvme0n1                   259:0    0 931.5G  0 disk \n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1               259:1    0   1.1G  0 part /boot/efi\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p2               259:2    0   1.5G  0 part /boot\n\xe2\x94\x94\xe2\x94\x80nvme0n1p3               259:3    0   929G  0 part \n  \xe2\x94\x94\xe2\x94\x80ubuntu--vg-ubuntu--lv 253:0    0   929G  0 lvm  /\n
Run Code Online (Sandbox Code Playgroud)\n

我在如何调整 Ubuntu 的根 LVM 分区大小中找到了解决方案。我推荐这篇文章以获取更详细的背景信息。

\n
\n

您还可以一步完成扩展/调整大小:

\n
$ sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv\n  Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to <928.96 GiB (237813 extents).\n  Logical volume ubuntu-vg/ubuntu-lv successfully resized.\n
Run Code Online (Sandbox Code Playgroud)\n